activiti的流程定義檔案可以直接部署bpmn20.xml、zip、bar檔案,其中後面的zip和bar類型一樣都是壓縮檔案格式,bpmn20.xml是符合bpmn2.0規範的xml定義。 今天要解決的問題就是幫助大家打包流程資源檔案,其中肯能包括:bpmn20.xml、png、form等檔案。
大多數開發人員都是用activiti designer來設計流程定義,可能業務人員使用了其他的流程設計器來描述業務,然後開發人員用activiti designer來“深加工”以便讓計算機能讀懂流程的走向及其邏輯。
如何打包是最近“activiti中文”群裡問的比較多的問題之一,因為太忙沒用時間一一說明,這也是因為目前的5.9版本設計器導緻的,主要是在5.9版本之前設計器會自動生成一個bpmn20.xml檔案,而5.9版本中不再使用之前的.activiti檔案,直接把設計與最終的流程定義檔案合并為一個bpmn檔案。具體的說明請參考《從activiti
designer5.8更新到5.9遇到的問題》。
下面我們以kft-activiti-demo項目中的請假流程為例介紹如何打包,項目結構如下圖。
看了剛剛提到的文章應該明白leave.bpmn和在5.8版本中生成的bpmn20.xml一樣,是以可以直接把leave.bpmn複制一份改名為leave.bpmn20.xml,然後手動把leave.bpmn20.xml和leave.png用壓縮工具打包成leave.zip即可。
用ant腳本無非就是代替手動操作讓工具自動根據配置打包,我在kft-activiti-demo(master分支)項目中添加了此功能,把裡面的代碼拿出來分享給大家。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<code><!--?xml version="1.0" encoding="utf-8"?--></code>
<code><</code><code>project</code>
<code>name</code><code>=</code><code>"kft-activiti-demo"</code>
<code>default</code><code>=</code><code>"welcome"</code><code>></code>
<code> </code><code><!-- properties from files --></code>
<code> </code><code><</code><code>property</code>
<code>file</code><code>=</code><code>"${user.home}/.kafeitu/build.properties"</code><code>></code>
<code>file</code><code>=</code><code>"build.properties"</code><code>></code>
<code> </code><code><!-- properties from key value --></code>
<code>name</code><code>=</code><code>"workflow.diagrams"</code>
<code>value</code><code>=</code><code>"src/main/resources/diagrams"</code><code>></code>
<code>name</code><code>=</code><code>"workflow.deployments"</code>
<code>value</code><code>=</code><code>"src/main/resources/deployments"</code><code>></code>
<code> </code><code><!-- 流程定義:每個子產品的路徑 --></code>
<code>name</code><code>=</code><code>"wd.leave"</code>
<code>value</code><code>=</code><code>"${workflow.diagrams}/leave"</code><code>></code>
<code> </code><code><!-- 顯示歡迎資訊以及操作提示 --></code>
<code> </code><code><</code><code>target</code>
<code>name</code><code>=</code><code>"welcome"</code><code>></code>
<code> </code><code><</code><code>echo</code><code>>activiti示範程式,請輸入指令後操作!</</code><code>echo</code><code>></code>
<code> </code><code></</code><code>target</code><code>></code>
<code> </code><code><!-- 請假流程定義打包 --></code>
<code>name</code><code>=</code><code>"workflow.package.leave"</code><code>></code>
<code> </code><code><</code><code>echo</code><code>>打包流程定義:請假(自定義表單)</</code><code>echo</code><code>></code>
<code> </code><code><</code><code>copy</code>
<code>file</code><code>=</code><code>"${wd.leave}/leave.bpmn"</code>
<code>tofile</code><code>=</code><code>"${wd.leave}/leave.bpmn20.xml"</code><code>></code>
<code> </code><code><</code><code>zip</code>
<code>destfile</code><code>=</code><code>"${workflow.deployments}/leave.zip"</code>
<code>basedir</code><code>=</code><code>"${wd.leave}"</code>
<code>update</code><code>=</code><code>"true"</code>
<code>includes</code><code>=</code><code>"*.xml,*.png"</code><code>></code>
<code> </code><code><</code><code>delete</code>
<code>file</code><code>=</code><code>"${wd.leave}/leave.bpmn20.xml"</code><code>></code>
<code> </code><code></</code><code>delete</code><code>></</code><code>zip</code><code>></</code><code>copy</code><code>></</code><code>target</code><code>></code>
<code> </code><code><!-- 流程定義打包 --></code>
<code>name</code><code>=</code><code>"workflow.package.all"</code>
<code>depends</code><code>=</code><code>"workflow.package.leave"</code><code>></code>
<code></</code><code>property</code><code>></</code><code>property</code><code>></</code><code>property</code><code>></</code><code>property</code><code>></</code><code>property</code><code>></</code><code>project</code><code>></code>
熟悉ant的讀者很快就能看懂這些配置資訊及其目的,對于不熟悉ant的稍微介紹一下。
第4、5行處讀取一些配置資訊,目前還未用到外部配置,可以先忽略;
第7~13行處用于配置一些檔案的路徑,其中workflow.diagrams就是bpmn和png檔案所在的目錄,隻不過裡面又根據子產品細分了;
第21~26行處才是重點,首先複制bpmn檔案為bpmn20.xml,然後把bpmn20.xml和png檔案打包成zip檔案
使用方法如下:
<code>henryyan@hy-mbp ~kad git:(master) ant workflow.package.all</code>
<code>buildfile:</code><code>/users/henryyan/work/projects/activiti/kft-activiti-demo/build</code><code>.xml</code>
<code>workflow.package.leave:</code>
<code> </code><code>[</code><code>echo</code><code>] 打包流程定義:請假(自定義表單)</code>
<code> </code><code>[copy] copying 1</code><code>file</code>
<code>to</code><code>/users/henryyan/work/projects/activiti/kft-activiti-demo/src/main/resources/diagrams/leave</code>
<code> </code><code>[zip] updating zip:</code><code>/users/henryyan/work/projects/activiti/kft-activiti-demo/src/main/resources/deployments/leave</code><code>.zip</code>
<code> </code><code>[delete] deleting:</code><code>/users/henryyan/work/projects/activiti/kft-activiti-demo/src/main/resources/diagrams/leave/leave</code><code>.bpmn20.xml</code>
<code>workflow.package.leave-dynamic-from:</code>
<code> </code><code>[</code><code>echo</code><code>] 打包流程定義:請假(動态表單)</code>
<code>to</code><code>/users/henryyan/work/projects/activiti/kft-activiti-demo/src/main/resources/diagrams/leave-dynamic-from</code>
<code> </code><code>[zip] updating zip:</code><code>/users/henryyan/work/projects/activiti/kft-activiti-demo/src/main/resources/deployments/leave-dynamic-from</code><code>.zip</code>
<code> </code><code>[delete] deleting:</code><code>/users/henryyan/work/projects/activiti/kft-activiti-demo/src/main/resources/diagrams/leave-dynamic-from/leave-dynamic-from</code><code>.bpmn20.xml</code>
<code>workflow.package.all:</code>
<code>build successful</code>
<code>total</code><code>time</code><code>: 0 seconds</code>
如果有外部form檔案也可以加入到zip包中。
bar檔案就是zip格式的,僅僅是擴充名不同而已,是以打包bar檔案直接用上面的方式,隻不過把擴充名zip更好成bar就可以了。
如何打包bar我就不多說了,官網的手冊已經說的很詳細了,請移步:http://www.activiti.org/userguide/index.html#eclipsedesignerbpmnfeatures,找到activiti
designer deployment features有詳細的說明。