分类:
2009-07-07 17:39:22
为了通过插件方式容纳多种流程语言和活动,jBPM基于了流程虚拟机。 本质上,流程虚拟机是一个特定的可执行图形的框架。 一个流程定义表现为一个执行流, 它拥有可以表现为图形的一种结构。
流程虚拟机将流程定义从活动行为中切分了出来。 流程虚拟机从一个活动到下一个获得获取可执行的流程, 并将活动的行为委派给可插拔的Java类。 这里有一个API(ActivityBehaviour)用来作为 流程虚拟机和活动行为代码的接口。像jPDL这类的语言仅仅是 一系列活动行为的实现和解析器。
图 2.1. 流程定义实例
一般来说流程定义都是静态的。一个流程定义由活动和转移组成。 一个活动运行时的行为被封装在一起, 它是来自流程图形结果的一部分。
图 2.2. 流程结构类图
流程虚拟机没有包含任何活动实现。 它只提供了执行环境和活动API, 可以当做Java组件来编写ActivityBehaviour的实现。 活动也可以使等待状态。 这意味着活动的控制流会来自于流程系统的外部。 比如一个人工任务或者异步服务调用。当执行处于等待状态, 执行的运行时状态可以保存到一个数据库中。
一个流程定义可以启动多个执行。 一个执行是一个指向当前活动的指针。
图 2.3. 执行实例
为了展示执行的同步路径, 这里是一个父子继承关系, 这样一个流程实例可以复制执行的同步路径。
图 2.4. 执行类图