这是一个超级简单的请假流程,只是为了学习,其他的我就不说了直接开始了。
1.定义 流程processdefinition.xml
流程文件定义文件是 processdefinition.xml,这个是一个关键文件。具体内容如下:
processdefinition.xml文件相关标签说明:
说明:
流程的名称改成了 helloworld 。(呵呵,也就是这里和 helloworld 有关了)
<controller> 标签定义了三个数据:姓名、请假天数、说明。
<transition> 标签定了 request 节点的一个流程转向,这里是转到 confirm 节点。
<action> 标签定义了流程由一个节点转到另一个节点时,所要执行的动作,动作封装在一个
ActionHandler 类中。比如这里当 request 到 confirm 结点时将执行 RequestAction 类的 execute 方法。
RequestAction 下面还有一个 <reason> (请假理由),它对应于 FinshAction 的属性 String reason 。
例如:
流程文件对应的流程图如下:
在processdefinition.xml中定义2个ActionHandler,分别是RequestAction和ConfirmAction,具体代码如下:
说明:
ExecutionContext 是一个贯通流程的容器,他是个大宝箱,里面啥玩意都有,后面将更深入的提到。这里的reasion就是processdefinition.xml中的我要请假。
到了这里,后台的程序基本写完了,下面开始对流程进行部署,用前面提到的方法如下:
运行此程序看是否成功,在这里我的是可以的,我们继续了。
我慢来看看jbpm数据相关表:如下图
并由此简单判断出各表的作用,表中各字段的作用由字段名也能知晓一二。
jbpm_processdefinition : 一个流程定义文件对应一条记录,可记录多个流程定义文件,可记录一个流程定义文件的对个版本。
jbpm_action : 记录 ActionHandler 的对象实例(以名称为标识)
jbpm_delegation : 记录了 ActionHandler 全类名,以便于用反射方式来加载
jbpm_envent : 它的 transition 引用了 Jbpm_transition 表的 id ,再看其它字段,估计此表是表示流程转向事件的一个实例,或者是一个各表之间的联接表。
jbpm_node : 流程结点
jbpm_transition : 流程的转向定义
jbpm_variableaccess : 流程中携带的变量。 ACCESS 字段是这些变量的读写权限