工作流Activiti的學(xué)習(xí)總結(jié)Activiti手動執(zhí)行的應(yīng)用(UserTask)_第1頁
工作流Activiti的學(xué)習(xí)總結(jié)Activiti手動執(zhí)行的應(yīng)用(UserTask)_第2頁
工作流Activiti的學(xué)習(xí)總結(jié)Activiti手動執(zhí)行的應(yīng)用(UserTask)_第3頁
工作流Activiti的學(xué)習(xí)總結(jié)Activiti手動執(zhí)行的應(yīng)用(UserTask)_第4頁
工作流Activiti的學(xué)習(xí)總結(jié)Activiti手動執(zhí)行的應(yīng)用(UserTask)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、工作流模擬某公司請假流程情景如下:開發(fā)人員請假流程,如果開發(fā)人員請假,如果請假天數(shù)小于3天,組長批準(zhǔn),人事批準(zhǔn) 即可請假。如果請假大約三天,需要項目經(jīng)理或者產(chǎn)品經(jīng)理批準(zhǔn),并且項目總監(jiān)批準(zhǔn) 流程圖:流程配置: ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;人事判斷;event=;complete;class=;com.easyway.workflow.activiti.gateway.HumanResouceUserTaskListener”;/;endEvent id=;endevent1; name=;sourceRef=;startevent1;sour

2、ceRef=;parallelgateway1;sourceRef=;parallelgateway1;sourceRef=;parallelgateway1;sourceRef=;servicetask1”;targetRef=;parallelgateway2;sourceRef=;servicetask2”;sourceRef=;servicetask3;sourceRef=;parallelgateway2;sourceRef=;servicetask4;sourceRef=;parallelgateway3;sourceRef=;servicetask5;activiti:taskL

3、istener流程實現(xiàn): package com.easyway.workflow.activiti.gateway; import java.util.logging.Logger;/*execute方法的參數(shù)DelegateExecution execution可以在流程中各個結(jié)點之間傳遞流程 變量。;元素的 event 屬性,它一共包含三種事件:;create;、 assignment”;、complete”;,分別表示結(jié)點執(zhí)行處理邏輯的時機(jī)為:在處理類實例化時、 在結(jié)點處理邏輯被指派時、在結(jié)點處理邏輯執(zhí)行完成時,可以根據(jù)自己的需要進(jìn)行指定。*上述流程定義中,4個任務(wù)結(jié)點對應(yīng)的處理類*;

4、元素的 event 屬性,它一共包含三種事件:”;create”;、 assignment”;、;complete”;,分別表示結(jié)點執(zhí)行處理邏輯的時機(jī)為:在處理類實例化時、 在結(jié)點處理邏輯被指派時、在結(jié)點處理邏輯執(zhí)行完成時,可以根據(jù)自己的需要進(jìn)行指定。* *; ; ; ; ; * * *項目經(jīng)理審批過程author longgangbai *2011-12-17 下午 07:45:47*/ public class DeveloperManagerUserTaskListener implements TaskListener privatefinalLoggerlog=Logger.getL

5、ogger(DeveloperManagerUserTaskListener.class.getName();/* (non-Javadoc)*seeorg.activiti.engine.delegate.TaskListener#notify(org.activiti.engine.delegate.De legateTask) */ Override public void notify(DelegateTask delegateTask) try Thread.sleep(10000); catch (InterruptedException e) / TODO Auto-genera

6、ted catch blocke.printStackTrace();(;variavles=; + delegateTask.getVariables();delegateTask.setVariable(”;項目經(jīng)理;,”;請假天數(shù)大約3天,同意請假。;); (”;項目經(jīng)理,請假天數(shù)大約3天,同意請假。.”;);package com.easyway.workflow.activiti.gateway;import java.util.logging.Logger;/* execute方法的參數(shù)DelegateExecution execution可以在流程中各個結(jié)點之間傳遞流 程變量。*

7、;元素的 event 屬性,它一共包含三種事件:;create”;、 assignment”;、;complete”;,分別表示結(jié)點執(zhí)行處理邏輯的時機(jī)為:在處理類實例化時、 在結(jié)點處理邏輯被指派時、在結(jié)點處理邏輯執(zhí)行完成時,可以根據(jù)自己的需要進(jìn)行指定。; ;*人事部門審批過程author longgangbai*2011-12-17 下午 07:45:47*/public class HumanResouceUserTaskListener implements TaskListener privatefinalLoggerlog=Logger.getLogger(HumanResouceUs

8、erTaskListener.class.getName();/配置如下;*項目總監(jiān)審批過程 (non-Javadoc)*seeorg.activiti.engine.delegate.TaskListener#notify(org.activiti.engine.delegate.De legateTask)*/Overridepublic void notify(DelegateTask delegateTask) try Thread.sleep(10000); catch (InterruptedException e) / TODO Auto-generated catch bloc

9、k e.printStackTrace();(;variavles=; + delegateTask.getVariables();delegateTask.setVariable(”;人事部門;,”;請假天數(shù)大約3天,同意請假。;); (”;人事部門,請假天數(shù)大約3天,同意請假。;); package com.easyway.workflow.activiti.gateway;import java.util.logging.Logger;/* author longgangbaiexecute方法的參數(shù)DelegateExecution execution可以在流程中各個結(jié)點之間傳遞流 程

10、變量。*;元素的 event 屬性,它一共包含三種事件:;create”;、 assignment”;、;complete”;,分別表示結(jié)點執(zhí)行處理邏輯的時機(jī)為:在處理類實例化時、 在結(jié)點處理邏輯被指派時、在結(jié)點處理邏輯執(zhí)行完成時,可以根據(jù)自己的需要進(jìn)行指定。2011-12-17 下午 07:45:47 */public class ProductBossUserTaskListener implements TaskListener privatefinalLoggerlog=Logger.getLogger(ProductBossUserTaskListener.class.getName

11、();/ (non-Javadoc)*seeorg.activiti.engine.delegate.TaskListener#notify(org.activiti.engine.delegate.De legateTask)*/Overridepublic void notify(DelegateTask execution) try Thread.sleep(10000); catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace();(;variavles=; + executi

12、on.getVariables();execution.setVariable(”;項目總監(jiān)”;,”;請假天數(shù)大約3天,同意請假。;); (”;項目總監(jiān),請假天數(shù)大約3天,同意請假。;); package com.easyway.workflow.activiti.gateway;import java.util.logging.Logger;/*配置如下;execute方法的參數(shù)DelegateExecution execution可以在流程中各個結(jié)點之間傳遞流 程變量。*;元素的 event 屬性,它一共包含三種事件:;create”;、 assignment”;、;complete”;,

13、分別表示結(jié)點執(zhí)行處理邏輯的時機(jī)為:在處理類實例化時、 在結(jié)點處理邏輯被指派時、在結(jié)點處理邏輯執(zhí)行完成時,可以根據(jù)自己的需要進(jìn)行指定。; ;*產(chǎn)品經(jīng)理審批過程author longgangbai*2011-12-17 下午 07:45:47 */public class ProductManagerUserTaskListener implements TaskListener privatefinalLoggerlog=Logger.getLogger(ProductManagerUserTaskListener.class.getName();/* (non-Javadoc)*seeorg.

14、activiti.engine.delegate.TaskListener#notify(org.activiti.engine.delegate.De legateTask)*/Overridepublic void notify(DelegateTask execution) try Thread.sleep(10000); catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace();(;variavles=; + execution.getVariables();executio

15、n.setVariable(;產(chǎn)品經(jīng)理;,”;請假天數(shù)大約3天,同意請假。;); (;產(chǎn)品經(jīng)理,請假天數(shù)大約3天,同意請假。;); package com.easyway.workflow.activiti.gateway;import java.util.logging.Logger;/*;元素的 event 屬性,它一共包含三種事件:;create;、 assignment”;、complete”;,分別表示結(jié)點執(zhí)行處理邏輯的時機(jī)為:在處理類實例化時、 在結(jié)點處理邏輯被指派時、在結(jié)點處理邏輯執(zhí)行完成時,可以根據(jù)自己的需要進(jìn)行指定。*配置如下:; ;*項目組長批準(zhǔn)請假模擬當(dāng)開發(fā)人員請假小于3

16、天,組長比準(zhǔn)author longgangbai*2011-12-17 上午 09:07:37*/public class TeamLeaderUserTaskListener implements TaskListener privatefinalLoggerlog=Logger.getLogger(TeamLeaderUserTaskListener.class.getName();/* (non-Javadoc)*seeorg.activiti.engine.delegate.TaskListener#notify(org.activiti.engine.delegate.De lega

17、teTask)*/Overridepublic void notify(DelegateTask execution) try Thread.sleep(10000); catch (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace();(”;variavles=”; + execution.getVariables();execution.setVariable(”;項目組長”;,”;請假天數(shù)小于3天,同意請假?!?); (”;項目組長,請假天數(shù)小于3天,同意請假。”;);package co

18、m.easyway.workflow.activiti.gateway;import junit.framework.TestCase;/*主要是在測試之前做一些初始化工作,主要包括流程引擎實例*的構(gòu)建,及其流程提供的基本服務(wù)。*目的:讓開發(fā)者熟悉工作流使用過程使用的幾個步驟1.加載相關(guān)的工作流全局配置文件activiti.cfg.xml配置文件信息2.獲取工作流相關(guān)的服務(wù)(RepositoryService,RuntimeService,TaskService, HistoryService, FormService, ManagementService,IdentityService 等)

19、2.加載工作流文件*.bpmn20.xml信息*3.部署工作流部署工作流由多種方式,在以后會相繼講解*author longgangbai*2011-12-17 下午 07:48:59*/public abstract class AbstractTest extends TestCase private ProcessEngine processEngine;protected String deploymentId;protected RepositoryService repositoryService;protected RuntimeService runtimeService;pr

20、otected TaskService taskService;protected FormService formService;protected HistoryService historyService;protected IdentityService identityService;protected ManagementService managementService;/*測試用例開始初始化工作1.創(chuàng)建相關(guān)的工作流程對象ProcessEngine2.創(chuàng)建相關(guān)的服務(wù)3.*/Overrideprotected void setUp() throws Exception super.

21、setUp();/由于ProcessEngine為線程安全性對象,整個項目可以共用一個 if(processEngine=null) /此處使用此種方法調(diào)用的activiti的配置文件為classpath路徑下的 activiti.cfg.xml/采用的H2的數(shù)據(jù)庫processEngine = ProcessEngines.getDefaultProcessEngine();/獲取工作流的各種服務(wù)信息repositoryService = processEngine.getRepositoryService();runtimeService = processEngine.getRuntim

22、eService();taskService = processEngine.getTaskService();formService = processEngine.getFormService();historyService = processEngine.getHistoryService();identityService = processEngine.getIdentityService();managementService = processEngine.getManagementService();/調(diào)用擴(kuò)展的初始化工作 initialize();/*test銷毀方法*/O

23、verrideprotected void tearDown() throws Exception super.tearDown();destroy();/*便于子類的工作的初始化的擴(kuò)展工作*throws Exception*/protected abstract void initialize() throws Exception;/*便于子類的工作的銷毀的擴(kuò)展工作*throws Exception*/protected abstract void destroy() throws Exception;/* package com.easyway.workflow.activiti.gate

24、way; import java.util.Date; /*測試實例如下*author longgangbai*2011-12-18 上午 12:00:03*/ public class ParallelGatewayTest extends AbstractTest private String deploymentId; private Date start = null; private Date end = null; Override protected void initialize() throws Exception deploymentId = repositoryServi

25、ce.createDeployment() .addClasspathResource(;diagrams/UserExecuteTask.bpmn20.xml”;) .deploy().getId(); Override protected void destroy() throws Exception repositoryService.deleteDeployment(deploymentId, true); Deployment public void testUnbalancedForkJoin() 獲取流程實例對象 ProcessInstancepi=runtimeService.

26、startProcessInstanceByKey(;UserExecuteTask”;); 獲取任務(wù)服務(wù)對象的查詢 TaskQueryquery=taskService.createTaskQuery().processInstanceId(pi.getId().orderByTaskName().as c();獲取所有的任務(wù) List; tasks = query.list(); assertEquals(3, tasks.size(); start = new Date(); for(Task task : tasks) 執(zhí)行任務(wù) taskSplete(task.getId();Syst

27、em.out.println(;name =+;+task.getName();end = new Date();System.out.println(;”; + (end.getTime()-start.getTime() +;ms.”;); /查詢?nèi)蝿?wù)tasks = query.list();assertEquals(1, tasks.size();for(Task task : tasks) taskSplete(task.getId();System.out.println(;name =+;+task.getName();end = new Date();System.out.pri

28、ntln(;”; + (end.getTime()-start.getTime() +;ms.”;); end = new Date();System.out.println(;”; + (end.getTime()-start.getTime() + ;ms.”;);運行結(jié)果:2011-12-1813:15:29org.activiti.engine.ProcessEnginesinitProcessEnginFromResource信 息 :initializing process engine for resourcejar:file:/C:/activiti-rest/activiti

29、-cfg.jar!/activiti.cfg.xml 2011-12-18 13:15:32 org.activiti.engine.impl.ProcessEngineImpl ;信息: ProcessEngine default created2011-12-1813:15:32org.activiti.engine.ProcessEnginesinitProcessEnginFromResource信息: initialised process engine default2011-12-18 13:15:32 org.activiti.engine.impl.jobexecutor.J

30、obAcquisitionThreadrun 信息:JobAcquisitionThread starting to acquire jobs2011-12-18 13:15:32 org.activiti.engine.impl.bpmn.deployer.BpmnDeployer deploy 信息:Processing resource diagrams/UserExecuteTask.bpmn20.xml2011-12-1813:15:33org.activiti.engine.impl.bpmn.parser.BpmnParseparseDefinitionsAttributes信息:XMLSchema currently not supported as typeLanguage2011-12-1813:15:33org.activiti.engine.impl.bpmn.parser.BpmnParseparseDefinitionsAttributes信息: XPath currently not supported as expressionLanguage 2011-12-1813:15:43com.easyway.workflow.activiti.gateway.ProductManagerUserTaskLi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論