流程定义
流程定义,是一个XML文件,JBPM4中常用的流程定义语言是:JPDL(JBPM Process Definition Language)。
我们可以选择新建一个流程定义:
在流程定义设计器上,设计流程:
注意中间要使用Task节点,最终定义好的流程定义文件如下所示:
<?xmlversion="1.0" encoding="UTF-8"?>
<processkey="LEAVE" name="请假单"xmlns="http://jbpm.org/4.4/jpdl"> <startform="baoxiao" g="234,7,48,48" name="start1"> <transitiong="-71,-17" name="提交给张三审批"to="张三审批"/> </start> <taskassignee="张三"g="215,113,92,52" name="张三审批"> <transitiong="-71,-17" name="提交给李四审批"to="李四审批"/> </task> <taskassignee="李四"g="218,216,92,52" name="李四审批"> <transitiong="-47,-17" name="to end1" to="end1"/> </task> <endg="247,326,48,48" name="end1"/> </process> |
在完成流程的设计之后,我们可以编写代码,把这个流程定义文件部署到数据库中:
publicclassJbpm_01_DeployProcessDefinition extendsTestCase{
//把流程定义文件的相关信息保存到数据库中! publicvoidtestDeployProcessDefinition(){
//流程引擎 ProcessEngine engine = newConfiguration() .setResource("jbpm.cfg.xml").buildProcessEngine();
//从流程引擎中获得跟数据库操作有关的服务 engine.getRepositoryService() .createDeployment() //现在要部署流程定义 .addResourceFromClasspath("process01.jpdl.xml") //添加流程定义文件 .deploy(); //部署,将流程定义的相关信息插入数据库\ } } |
在运行完上述代码之后,我们可以到数据库中查看相关的信息:
上面的数据库表,描述了有关ProcessDefinition对象的信息。ProcessDefinition对象有:name,id,key,version等属性。
Name就是给人类看的名称,比如:“请假单”
Key就是一个键值,比如:LEAVE
Version是版本号,对于相同的流程定义(名称和KEY相同),如果重复部署(比如上述代码多次运行),其version将一直递增。
Id就是KEY和VERSION组合的值。比如:LEAVE-1
上面数据库表中呈现的pdid,pdkey,pdversion和OBJNAME_字段的值,就是这些属性。