JPDL 是指定的xml模式和機(jī)制包裝所有的流程定義相關(guān)文件到一個流程文檔.
流程文檔是一個zip文件. 文檔的中心流程是 processdefinition.xml . 文件中主要信息是流程圖.? processdefinition.xml也包含關(guān)于動作和任務(wù)的信息 . 流程文檔也包含其他流程相關(guān)文檔比如類,任務(wù)ui-form? ...
發(fā)布文檔文檔可以通過3種方式來做: 用流程設(shè)計(jì)器工具, 用ant任務(wù)或編程實(shí)現(xiàn).
發(fā)布任務(wù)通過設(shè)計(jì)器工具依然在開發(fā)階段.
發(fā)布任務(wù)文檔通過ant任務(wù)如下:
<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>
一次發(fā)布多個流程文件, 用嵌套的fileset元素. file屬性是可選的. 其他ant 任務(wù)屬性是:
- cfg : cfg 可選的, 默認(rèn)值是'hibernate.cfg.xml'. hibernate配置文件包含jdbc connection屬性和mapping 文件.
- properties : 屬性是可選的并且覆蓋所有來自hibernate.cfg.xml的同樣屬性
- createschema : 如果為true, jbpm數(shù)據(jù)庫模式將在發(fā)布之前被建立.
流程文檔也可通過編程來發(fā)使用類 org.jbpm.jpdl.par.ProcessArchiveDeployer
流程定義基本不會改變,因?yàn)轭A(yù)測所有流程定義變化是非常困難的.
圍繞這個問題, jBPM 有一個久經(jīng)考驗(yàn)的流程版本機(jī)制.版本機(jī)制允許多個同名的流程定義在數(shù)據(jù)庫中同時存在. 流程實(shí)例使用最后的可用版本并且并且在同一個流程里持續(xù)執(zhí)行知道生命周期結(jié)束.當(dāng)較新的版本被發(fā)布, 較新的建立實(shí)例將用最新的版本,同時老的流程實(shí)例用老的流程定義保持執(zhí)行.
流程定義是組合聲明指定圖和一組相關(guān)的java classes. Java classes? 能被jBPM運(yùn)行時間環(huán)境以2種方式使用: 讓這些class被jBPM classloader看到. 這是把你的委托 類放到.jar文件然后到 jbpm-[version].jar .?java classes 也能被包括進(jìn)流程文檔. 當(dāng)你包括你的委托類到流程文檔(它們對jbpm classloader是不可見的), jBPM 將使用這些class版本. 關(guān)于流程載入的信息參考 13.2章節(jié), “委托”
當(dāng)流程檔案被發(fā)布時, 它在jBPM數(shù)據(jù)庫中生成一個流程定義. 流程定義可以被版本化基于基本的流程定義名字.當(dāng)命名的流程檔案被發(fā)布時,發(fā)布者將分配給它一個版本數(shù)字. 為了分配數(shù)字,發(fā)布者將查詢同名的流程最高版本數(shù)字加1.沒有名字的流程定義版本數(shù)字為-1.