一搭建環境
1.1?? JDK 6+
activiti?運行在版本?6以上的?JDK上。轉到?Oracle Java SE下載頁面,點擊按鈕“下載?JDK”。網頁中也有安裝說明。要核實安裝是否成功,在命令行上運行?java–version。將打印出安裝的?JDK的版本。
1.2?? Ant 1.8.1+
從?Ant[http://ant.apache.org/bindownload.cgi]下載頁面下載最新穩定版的?Ant。解壓文件,確保其?bin文件夾在操作系統的?path?下。在命令行上運行?ant–version?來檢查?Ant是否安裝成功。成功將打印安裝的?Ant?版本。
1.3?? Eclipse 3.7+
從?Eclipse的下載頁面下載?Eclipse Classic(或Eclipse JEE)版的?eclipse。解壓下載的文件,然后就可以運行?eclipse路徑下的eclipse?文件了。
下載地址:http://www.eclipse.org/downloads/packages/release/indigo/sr2
1.4?? Activiti -eclipse designer插件安裝
?????????在安裝Activiti -eclipse designer插件前先安裝maven插件,m2e(eclipse)插件在Install New SoftWare安裝時會出現些問題,按以下步驟安裝即可。
1.4.1?先安裝GEF插件
maven插件安裝的時候會依賴這個插件,在Eclipse -> help -> Install New SoftWare中安裝,update site:http://download.eclipse.org/tools/gef/updates/interim/
1.4.2?安裝SVN插件
在Eclipse -> help -> Install New SoftWare中安裝,update site:http://subclipse.tigris.org/update_1.6.x
1.4.3安裝Maven插件
方式一:在線安裝
?????????在Eclipse -> help -> Install New SoftWare中安裝,update site:http://nexus.tesla.io:8081/nexus/content/sites/m2e.extras/m2e/1.5.0/N/LATEST/
順便eclipse m2e支持site:http://www.eclipse.org/m2e/download/
?????????如在線安裝不成功,報[the selected did not contain any resources that can run on server maven project]錯誤,建議采用方式二安裝。
方式二:本地安裝
?????????下載maven和?eclipse-maven3-plugin插件(eclipse-maven3-plugin為本人CSDN上傳)
Maven site:?http://ant.apache.org/bindownload.cgi
eclipse-maven3-plugin site:?http://download.csdn.net/detail/yangyi22/5663245
?????????在eclipse目錄下建立myplugins目錄,將eclipse-maven3-plugin解壓后文件復制進去,建立links目錄,新建maven.link文件(名字隨意取)添加文本:
path=…/eclipse/myplugins/maven,即讓eclipse啟動時去尋找myplugins中的插件,如本人安裝的路徑:path=D:/Java~coding~site /eclipse[indigo-jee]/eclipse/myplugins/maven
1.4.4?最后安裝Activiti -eclipse designer
打開?HelpàInstall New Software。在如下面板中,點擊Add按鈕,然后填入下列字段:lName:Activiti BPMN 2.0 designer
l?Location:http://activiti.org/designer/update/
?
安裝成功后,新建activiti項目,視圖如下:
?
安裝m2eclipse插件后,重啟Eclipse,如提示:
Eclipse is running in a JRE, but a JDK is required
??Some Maven plugins may not work when importing projects or updating source folders.
需要修改eclipse.ini文件,新增一項配置
-vm配置項必須在–vmargs配置項前,是因為執行到-vmargs配置項已經選擇了一個默認的JVM了。
所以在–vmargs前面加上這一句:
-vm??
C:/Program Files/Java/jdk1.6.0_20/bin/javaw.exe?
二開始activiti 5.10的第一個demo
2.1???建立activiti-demo工程,選擇Activiti Project
?
創建成功后的項目:
?
給activiti-demo項目添加activiti依賴包,項目右鍵Build Path->Configure Build Path->libraries -> Add External Jars選中…\activiti-5.10\setup\files\dependencies\libs下所有包添加即可。
2.2?將activiti-demo工程的數據庫整合為MySQL
?????????將…\activiti-5.10\setup\build\activiti-cfg目錄下的activiti.cfg.xml配置文件復制到項目src\main\resources目錄下,修改數據庫配置如下:
<!-- Database configurations -->
????<propertyname="jdbcUrl"
value="jdbc:mysql://localhost:3306/test?autoReconnect=true"/>
????<propertyname="jdbcDriver"
??? ???value="com.mysql.jdbc.Driver"/>
????<propertyname="jdbcUsername"value="root"/>
????<propertyname="jdbcPassword"value="root"/>
????<!-- Database configurations -->
????<propertyname="databaseSchemaUpdate"value="true"/>
????<!-- job executor configurations -->
????<propertyname="jobExecutorActivate"value="false"/>
2.3?設計activiti-demo工程的流程
在該項目的src/main/resource/diagrams下右鍵創建Activiti diagram,文件名為:DemoProcess.bpmn。
?-->
?
此時進入Activiti Diagram Editor,在空白處點一下,下邊屬性欄中設置id和name,id就是這個流程的key,后邊啟動流程的時候使用到。
?
注意:Activiti 5.8升級到5.9以后,xxx.bpmn20.xml和xxx.png已不默認生成,僅僅是生成xxx.bpmn文件,xxx.bpmn中的定義內容就如xxx.bpmn20.xml一樣。
????????另外,快捷菜單:“Create deployment artifacts”和“Import BPMN20 file”,在5.9以后去掉了。
如需設計完成流程后自動生成一個png圖片按如下處理
l??保存無法生存png圖片按以下處理
Window –> Preferences -> Activiti ->Save勾選即可
或者手動操作:用Activiti Designer打開xxx.bpmn文件,然后右鍵選擇Export Diagram...,在彈出的對話框中設置圖片的參數即可,一般使用默認就可以了。
在設計編輯器中保存DemoProcess.bpmn后的項目視圖如下:
?
測試類代碼??DemoProcessTest.java
- package?main.java;??
- ??
- import?java.io.FileInputStream;??
- import?java.util.List;??
- import?org.activiti.engine.HistoryService;??
- import?org.activiti.engine.ProcessEngine;??
- import?org.activiti.engine.ProcessEngineConfiguration;??
- import?org.activiti.engine.RepositoryService;??
- import?org.activiti.engine.RuntimeService;??
- import?org.activiti.engine.TaskService;??
- import?org.activiti.engine.history.HistoricProcessInstance;??
- import?org.activiti.engine.runtime.ProcessInstance;??
- import?org.activiti.engine.task.Task;??
- ??
- /**?
- ?*?Activiti?5.10?demo?
- ?*?@author?BruceQin?
- ?*??
- ?*/??
- public?class?DemoProcessTest?{??
- ????//?diagrams實際路徑??
- ????private?static?String?realPath?=???
- ????????????"D:\\Java~coding~site\\J2EE-IDE\\Workspace\\workspace[indigo-jee]"?+??
- ????????????"\\activiti-demo\\src\\main\\resources\\diagrams";??
- ????public?static?void?main(String[]?args)?throws?Exception?{??
- ????????//?創建?Activiti流程引擎??
- ????????ProcessEngine?processEngine?=?ProcessEngineConfiguration??
- ????????????????.createProcessEngineConfigurationFromResource("activiti.cfg.xml")??
- ????????????????.buildProcessEngine();??
- ??????????
- ????????//?取得?Activiti?服務??
- ????????RepositoryService?repositoryService?=?processEngine.getRepositoryService();??
- ????????RuntimeService?runtimeService?=?processEngine.getRuntimeService();??
- ??
- ????????//?部署流程定義??
- ????????repositoryService??
- ????????????????.createDeployment()??
- ????????????????.addInputStream("DemoProcess.bpmn",new?FileInputStream(realPath?+?"\\DemoProcess.bpmn"))??
- ????????????????.addInputStream("DemoProcess.png",?new?FileInputStream(realPath?+?<a?href="file://\\DemoProcess.png">\\DemoProcess.png</a>))??
- ????????????????.deploy();??
- ??????????
- ????????//?啟動流程實例??
- ????????ProcessInstance?instance?=?processEngine??
- ?????????????????.getRuntimeService().startProcessInstanceByKey("DemoProcess");??
- ????????String?procId?=?instance.getId();??
- ????????System.out.println("procId:"+?procId);??
- ??????????
- ????????//?獲得第一個任務??
- ????????TaskService?taskService?=?processEngine.getTaskService();??
- ????????List<Task>?tasks?=?taskService.createTaskQuery().taskDefinitionKey("firstTask").list();??
- ????????for?(Task?task?:?tasks)?{??
- ????????????System.out.println("Following?task?is:?taskID?-"?+task.getId()+"?taskName?-"+?task.getName());??
- ????????????//?認領任務??
- ????????????taskService.claim(task.getId(),?"testUser");??
- ????????}??
- ???????????
- ????????//?查看testUser?現在是否能夠獲取到該任務??
- ????????tasks?=?taskService.createTaskQuery().taskAssignee("testUser").list();??
- ????????for?(Task?task?:?tasks)?{??
- ????????????System.out.println("Task?for?testUser:?"?+?task.getName());??
- ????????????//?完成任務??
- ????????????taskService.complete(task.getId());??
- ????????}??
- ????????System.out.println("Number?of?tasks?for?testUser:?"??
- ????????????????+?taskService.createTaskQuery().taskAssignee("testUser").count());??
- ??????????
- ??
- ????????//?獲取并認領第二個任務??
- ????????tasks?=?taskService.createTaskQuery().taskDefinitionKey("secondTask").list();??
- ????????for?(Task?task?:?tasks)?{??
- ????????????System.out.println("Following?task?is?:?taskID?-"?+task.getId()+"?taskName?-"+?task.getName());??
- ????????????taskService.claim(task.getId(),?"testUser");??
- ????????}??
- ??????????
- ????????//完成第二個任務結束結束流程??
- ????????for?(Task?task?:?tasks)?{??
- ????????????taskService.complete(task.getId());??
- ????????}??
- ??????????
- ????????//?核實流程是否結束??
- ????????HistoryService?historyService?=?processEngine.getHistoryService();??
- ????????HistoricProcessInstance?historicProcessInstance?=?historyService.createHistoricProcessInstanceQuery().processInstanceId(procId).singleResult();??
- ????????System.out.println("Process?instance?end?time:?"?+?historicProcessInstance.getEndTime());??
- ????}??
- }??
教程一完畢。