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.