揭秘 jbpm 流程引擎内核设计思想及构架
作者 胡长城(银狐999)
2.1
概念的基础... 2
2.2
环境的基础... 2
3
什么是流程引擎内核?... 3
4.1
模型与定义对象... 4
4.2
调度机制与算法... 5
4.3
执行机制与状态... 5
4.4
实例对象与执行环境... 5
6
jBpm流程模型与定义对象... 6
6.1
首先解决如何形式化描述一个流程的问题... 6
6.2
抽象的节点(Node)和转移(Transition)... 7
6.3
流程:节点与转移的组合... 7
6.4
节点的类型和扩展... 8
7
jBpm的过程调度机制... 8
7.1
吸纳自Petri Net思想... 8
7.2
Token的推进... 9
7.3
非常简单的调度机制... 11
8
jBpm的过程执行机制... 12
8.1
执行机制... 12
8.2
分支处理... 13
9
jBpm内核结构与实例对象... 14
1 前言
流程引擎内核仅是“满足
Process
基本运行”的最微小结构,而整个引擎则要复杂很多,包括“状态存储”、“事件处理”、“组织适配”、“时间调度”、“消息服务”等等外围的服务性功能。
引擎内核,仅包含最基本的对象和服务,以及用于解决流程运行问题的调度机制和执行机制。
如果,你掌握了一个流程引擎的灵魂,你才有能力理解它的全部。否则,一个引擎对你来说,可能只是一个复杂的结构,丰富多彩API、令人眼花缭乱的“功能”和“服务”而已。
本身工作流这个领域就是一个很“狭窄”的领域,国内的厂商也不是很多,其中有部分实现技术并不弱。但可能涉于安全等因素,并没有多少技术人员探讨“深度的工作流技术实现问题”。而广大的开发爱好者却还在花费大量的时间在摸索“如何理解工作流、如何应用工作流”。 所以在此之前,国内尚未有一篇技术文章探讨工作流引擎内核的实现,当然也没有探讨jBpm引擎内核的文章了。在
www.javaeye.com 技术站点和我的blog(
http://blog.csdn.net/james999)上有几篇专门探讨jbpm应用的文章,对于初步想了解如何使用jbpm的读者来说,值得看看。
对于这方面的技术分享,开源是个不错的突破口。
本篇就是以jBpm为实例,来诠释工作流引擎的内核设计思路和结构。但是这仅仅是从jBpm的实现角度来辅助大家理解,因为工作流引擎内核的设计、实现是有很多方式:这
会因所选的模型、调度算法、推进机制、状态变迁机制、执行机制等多方面的不一样,而会差别很大。比如基于Activity Diagram模型的jBpm和基于FSM模型的OSWorkflow引擎内核之间就有很大的差别。