JPDL 是指定的xml模式和机制包装所有的流程定义相关文件到一个流程文档.
流程文档是一个zip文件. 文档的中心流程是 processdefinition.xml . 文件中主要信息是流程图. processdefinition.xml也包含关于动作和任务的信息 . 流程文档也包含其他流程相关文档比如类,任务ui-form ...
发布文档文档可以通过3种方式来做: 用流程设计器工具, 用ant任务或编程实现.
发布任务通过设计器工具依然在开发阶段.
发布任务文档通过ant任务如下:
<target name="deploy.par">
<taskdef name="deploypar" classname="org.jbpm.jpdl.par.ProcessArchiveDeployerTask">
<classpath --make sure the jbpm-[version].jar is in this classpath--/>
</taskdef>
<deploypar par="build/myprocess.par" />
</target>
一次发布多个流程文件, 用嵌套的fileset元素. file属性是可选的. 其他ant 任务属性是:
- cfg : cfg 可选的, 默认值是'hibernate.cfg.xml'. hibernate配置文件包含jdbc connection属性和mapping 文件.
- properties : 属性是可选的并且覆盖所有来自hibernate.cfg.xml的同样属性
- createschema : 如果为true, jbpm数据库模式将在发布之前被建立.
流程文档也可通过编程来发使用类 org.jbpm.jpdl.par.ProcessArchiveDeployer
流程定义基本不会改变,因为预测所有流程定义变化是非常困难的.
围绕这个问题, jBPM 有一个久经考验的流程版本机制.版本机制允许多个同名的流程定义在数据库中同时存在. 流程实例使用最后的可用版本并且并且在同一个流程里持续执行知道生命周期结束.当较新的版本被发布, 较新的建立实例将用最新的版本,同时老的流程实例用老的流程定义保持执行.
流程定义是组合声明指定图和一组相关的java classes. Java classes 能被jBPM运行时间环境以2种方式使用: 让这些class被jBPM classloader看到. 这是把你的委托 类放到.jar文件然后到 jbpm-[version].jar . java classes 也能被包括进流程文档. 当你包括你的委托类到流程文档(它们对jbpm classloader是不可见的), jBPM 将使用这些class版本. 关于流程载入的信息参考 13.2章节, “委托”
当流程档案被发布时, 它在jBPM数据库中生成一个流程定义. 流程定义可以被版本化基于基本的流程定义名字.当命名的流程档案被发布时,发布者将分配给它一个版本数字. 为了分配数字,发布者将查询同名的流程最高版本数字加1.没有名字的流程定义版本数字为-1.