




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、工作流模擬某公司請(qǐng)假流程情景如下:開(kāi)發(fā)人員請(qǐng)假流程,如果開(kāi)發(fā)人員請(qǐng)假,如果請(qǐng)假天數(shù)小于3天,組長(zhǎng)批準(zhǔn),人事批準(zhǔn) 即可請(qǐng)假。如果請(qǐng)假大約三天,需要項(xiàng)目經(jīng)理或者產(chǎn)品經(jīng)理批準(zhǔn),并且項(xiàng)目總監(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流程實(shí)現(xiàn): package com.easyway.workflow.activiti.gateway; import java.util.logging.Logger;/*execute方法的參數(shù)DelegateExecution execution可以在流程中各個(gè)結(jié)點(diǎn)之間傳遞流程 變量。;元素的 event 屬性,它一共包含三種事件:;create;、 assignment”;、complete”;,分別表示結(jié)點(diǎn)執(zhí)行處理邏輯的時(shí)機(jī)為:在處理類實(shí)例化時(shí)、 在結(jié)點(diǎn)處理邏輯被指派時(shí)、在結(jié)點(diǎn)處理邏輯執(zhí)行完成時(shí),可以根據(jù)自己的需要進(jìn)行指定。*上述流程定義中,4個(gè)任務(wù)結(jié)點(diǎn)對(duì)應(yīng)的處理類*;
4、元素的 event 屬性,它一共包含三種事件:”;create”;、 assignment”;、;complete”;,分別表示結(jié)點(diǎn)執(zhí)行處理邏輯的時(shí)機(jī)為:在處理類實(shí)例化時(shí)、 在結(jié)點(diǎn)處理邏輯被指派時(shí)、在結(jié)點(diǎn)處理邏輯執(zhí)行完成時(shí),可以根據(jù)自己的需要進(jìn)行指定。* *; ; ; ; ; * * *項(xiàng)目經(jīng)理審批過(guò)程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(”;項(xiàng)目經(jīng)理;,”;請(qǐng)假天數(shù)大約3天,同意請(qǐng)假。;); (”;項(xiàng)目經(jīng)理,請(qǐng)假天數(shù)大約3天,同意請(qǐng)假。.”;);package com.easyway.workflow.activiti.gateway;import java.util.logging.Logger;/* execute方法的參數(shù)DelegateExecution execution可以在流程中各個(gè)結(jié)點(diǎn)之間傳遞流 程變量。*
7、;元素的 event 屬性,它一共包含三種事件:;create”;、 assignment”;、;complete”;,分別表示結(jié)點(diǎn)執(zhí)行處理邏輯的時(shí)機(jī)為:在處理類實(shí)例化時(shí)、 在結(jié)點(diǎn)處理邏輯被指派時(shí)、在結(jié)點(diǎn)處理邏輯執(zhí)行完成時(shí),可以根據(jù)自己的需要進(jìn)行指定。; ;*人事部門審批過(guò)程author longgangbai*2011-12-17 下午 07:45:47*/public class HumanResouceUserTaskListener implements TaskListener privatefinalLoggerlog=Logger.getLogger(HumanResouceUs
8、erTaskListener.class.getName();/配置如下;*項(xiàng)目總監(jiān)審批過(guò)程 (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(”;人事部門;,”;請(qǐng)假天數(shù)大約3天,同意請(qǐng)假。;); (”;人事部門,請(qǐng)假天數(shù)大約3天,同意請(qǐng)假。;); package com.easyway.workflow.activiti.gateway;import java.util.logging.Logger;/* author longgangbaiexecute方法的參數(shù)DelegateExecution execution可以在流程中各個(gè)結(jié)點(diǎn)之間傳遞流 程
10、變量。*;元素的 event 屬性,它一共包含三種事件:;create”;、 assignment”;、;complete”;,分別表示結(jié)點(diǎn)執(zhí)行處理邏輯的時(shí)機(jī)為:在處理類實(shí)例化時(shí)、 在結(jié)點(diǎn)處理邏輯被指派時(shí)、在結(jié)點(diǎn)處理邏輯執(zhí)行完成時(shí),可以根據(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(”;項(xiàng)目總監(jiān)”;,”;請(qǐng)假天數(shù)大約3天,同意請(qǐng)假。;); (”;項(xiàng)目總監(jiān),請(qǐng)假天數(shù)大約3天,同意請(qǐng)假。;); package com.easyway.workflow.activiti.gateway;import java.util.logging.Logger;/*配置如下;execute方法的參數(shù)DelegateExecution execution可以在流程中各個(gè)結(jié)點(diǎn)之間傳遞流 程變量。*;元素的 event 屬性,它一共包含三種事件:;create”;、 assignment”;、;complete”;,
13、分別表示結(jié)點(diǎn)執(zhí)行處理邏輯的時(shí)機(jī)為:在處理類實(shí)例化時(shí)、 在結(jié)點(diǎn)處理邏輯被指派時(shí)、在結(jié)點(diǎn)處理邏輯執(zhí)行完成時(shí),可以根據(jù)自己的需要進(jìn)行指定。; ;*產(chǎn)品經(jīng)理審批過(guò)程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)理;,”;請(qǐng)假天數(shù)大約3天,同意請(qǐng)假。;); (;產(chǎn)品經(jīng)理,請(qǐng)假天數(shù)大約3天,同意請(qǐng)假。;); package com.easyway.workflow.activiti.gateway;import java.util.logging.Logger;/*;元素的 event 屬性,它一共包含三種事件:;create;、 assignment”;、complete”;,分別表示結(jié)點(diǎn)執(zhí)行處理邏輯的時(shí)機(jī)為:在處理類實(shí)例化時(shí)、 在結(jié)點(diǎn)處理邏輯被指派時(shí)、在結(jié)點(diǎn)處理邏輯執(zhí)行完成時(shí),可以根據(jù)自己的需要進(jìn)行指定。*配置如下:; ;*項(xiàng)目組長(zhǎng)批準(zhǔn)請(qǐng)假模擬當(dāng)開(kāi)發(fā)人員請(qǐng)假小于3
16、天,組長(zhǎng)比準(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(”;項(xiàng)目組長(zhǎng)”;,”;請(qǐng)假天數(shù)小于3天,同意請(qǐng)假?!?); (”;項(xiàng)目組長(zhǎng),請(qǐng)假天數(shù)小于3天,同意請(qǐng)假。”;);package co
18、m.easyway.workflow.activiti.gateway;import junit.framework.TestCase;/*主要是在測(cè)試之前做一些初始化工作,主要包括流程引擎實(shí)例*的構(gòu)建,及其流程提供的基本服務(wù)。*目的:讓開(kāi)發(fā)者熟悉工作流使用過(guò)程使用的幾個(gè)步驟1.加載相關(guān)的工作流全局配置文件activiti.cfg.xml配置文件信息2.獲取工作流相關(guān)的服務(wù)(RepositoryService,RuntimeService,TaskService, HistoryService, FormService, ManagementService,IdentityService 等)
19、2.加載工作流文件*.bpmn20.xml信息*3.部署工作流部署工作流由多種方式,在以后會(huì)相繼講解*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;/*測(cè)試用例開(kāi)始初始化工作1.創(chuàng)建相關(guān)的工作流程對(duì)象ProcessEngine2.創(chuàng)建相關(guān)的服務(wù)3.*/Overrideprotected void setUp() throws Exception super.
21、setUp();/由于ProcessEngine為線程安全性對(duì)象,整個(gè)項(xiàng)目可以共用一個(gè) if(processEngine=null) /此處使用此種方法調(diào)用的activiti的配置文件為classpath路徑下的 activiti.cfg.xml/采用的H2的數(shù)據(jù)庫(kù)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; /*測(cè)試實(shí)例如下*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() 獲取流程實(shí)例對(duì)象 ProcessInstancepi=runtimeService.
26、startProcessInstanceByKey(;UserExecuteTask”;); 獲取任務(wù)服務(wù)對(duì)象的查詢 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.”;);運(yùn)行結(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024成都師范學(xué)院輔導(dǎo)員招聘筆試真題
- 2025年抗肝片吸蟲(chóng)病藥合作協(xié)議書
- 2025年空氣和廢氣監(jiān)測(cè)儀器項(xiàng)目合作計(jì)劃書
- 2025年湖南省退役軍人事務(wù)廳下屬事業(yè)單位招聘考試筆試試題【答案】
- 2025年江西省農(nóng)業(yè)農(nóng)村廳下屬事業(yè)單位招聘考試筆試試題【答案】
- 2025年教師招聘考試教育綜合理論知識(shí)復(fù)習(xí)題庫(kù)(300題)【答案】
- 2025年印刷品、記錄媒介復(fù)制品合作協(xié)議書
- 項(xiàng)目投資管理制度 (一)
- 課堂教學(xué)效益年活動(dòng)開(kāi)展情況匯報(bào)
- 消防值班制度
- 建筑工程項(xiàng)目管理人員工作標(biāo)準(zhǔn)
- (完整文本版)新概念英語(yǔ)第一冊(cè)單詞表默寫版1-144
- 建設(shè)用地報(bào)批服務(wù)投標(biāo)方案(技術(shù)方案)
- 仁愛(ài)版英語(yǔ)九年級(jí)(上)全冊(cè)課文翻譯(互譯版)
- (2023版)小學(xué)語(yǔ)文一年級(jí)上冊(cè)電子課本
- 新華鎮(zhèn)生活污水處理管網(wǎng)與新華農(nóng)場(chǎng)管網(wǎng)并網(wǎng)項(xiàng)目環(huán)境影響報(bào)告表
- 互聯(lián)網(wǎng)導(dǎo)論智慧樹(shù)知到課后章節(jié)答案2023年下上海第二工業(yè)大學(xué)
- 工程物探-第五章電法勘探課件
- KSS編碼說(shuō)明電廠KKS編號(hào)
- 臺(tái)區(qū)線損綜合分析臺(tái)區(qū)線損分類及計(jì)算方法
- 人民醫(yī)院普外科臨床技術(shù)操作規(guī)范2023版
評(píng)論
0/150
提交評(píng)論