Activiti7的使用(五)

本次再模擬一個(gè)請(qǐng)假流程:這里我用tom啟動(dòng)一個(gè)請(qǐng)假流程實(shí)例,tom請(qǐng)2.5天假。 tom的部門(mén)主管有l(wèi)ucy和mary世剖,這兩個(gè)主管都可以審批定罢,當(dāng)請(qǐng)假天數(shù)大于3天,要總經(jīng)理審批旁瘫,人事記錄是lili 祖凫,總經(jīng)理是sillyming。

先畫(huà)流程圖:

完整的流程圖

先填寫(xiě)我們的流程id為:holiday


然后是填寫(xiě)申請(qǐng)表的任務(wù)人


holiday實(shí)體類(lèi)的leavePerson屬性值

接著部門(mén)主管審批

再到人事存檔

最后總經(jīng)理審批

最后設(shè)置兩條分支線的條件



流程圖就這樣完成酬凳。

然后可以寫(xiě)代碼了蝙场,先建一個(gè)實(shí)體類(lèi)Holiday,實(shí)現(xiàn)Serializable接口



/* 這里我用tom啟動(dòng)一個(gè)請(qǐng)假流程實(shí)例,tom請(qǐng)2.5天假粱年。

* tom的部門(mén)主管有l(wèi)ucy和mary。

* 人事記錄是lili

* 總經(jīng)理是sillyming

* */

public class ActivitiDeployment2 {

? ? public static void main(String[] args){

? ? ? ? //1.創(chuàng)建ProcessEngineConfiguration對(duì)象? 第一個(gè)參數(shù):配置文件名稱(chēng)? 第二個(gè)參數(shù)是配置文件processEngineConfiguration的bean的id

? ? ? ? ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml","processEngineConfiguration");

? ? ? ? //創(chuàng)建ProcesEngine對(duì)象

? ? ? ? ProcessEngine processEngine = configuration.buildProcessEngine();

? ? ? ? //到這里activiti所需要的25張表自動(dòng)生成

//流程部署

//processDeployment(processEngine);

//tom啟動(dòng)一個(gè)流程實(shí)例

//startProcess(processEngine);

//tom任務(wù)查詢(xún)

//List tomTaskList=searchTask(processEngine,"tom");

//tom處理任務(wù)

//disposeTask(processEngine,tomTaskList);

//部門(mén)主管lucy領(lǐng)取任務(wù)

//pickupTask(processEngine,"lucy");

//部門(mén)主管lucy突然想去大便罚拟,為了不耽誤台诗,lucy把任務(wù)給了mary

//connectTask(processEngine,"lucy","mary");

//mary和tom有關(guān)系完箩,就通過(guò)了審批

//completeTask(processEngine,"mary");

? ? }

? ? //流程部署

? ? public static void processDeployment(ProcessEngine processEngine){

? ? ? ? //部署流程定義就是要將上邊繪制的圖形即流程定義(.bpmn)部署在工作流程引擎 activiti 中

//2.得到RepositoryService實(shí)例

? ? ? ? RepositoryService repositoryService = processEngine.getRepositoryService();

? ? ? ? //3.進(jìn)行部署

? ? ? ? Deployment deployment=repositoryService.createDeployment()

? ? ? ? ? ? ? ? .addClasspathResource("diagram/holiday2.bpmn")

? ? ? ? ? ? ? ? .addClasspathResource("diagram/holiday2.png")

? ? ? ? ? ? ? ? .name("請(qǐng)假申請(qǐng)流程")

? ? ? ? ? ? ? ? .deploy();

? ? ? ? //執(zhí)行此操作后 activiti 會(huì)將上邊代碼中指定的 bpm 文件和圖片文件保存在 activiti 數(shù)據(jù)庫(kù)。

//? ? ? ? 受影響的表有:

//? ? ? ? act_re_deployment? 部署信息

//? ? ? ? act_re_procdef? ? 流程定義的一些信息

//? ? ? ? act_ge_bytearray? 流程定義的bpmn文件及png文件

//4.輸出部署的一些信息

? ? ? ? System.out.println(deployment.getName());

? ? ? ? System.out.println(deployment.getId());

? ? }

? ? //啟動(dòng)一個(gè)流程實(shí)例

? ? public static void startProcess(ProcessEngine processEngine){

? ? ? ? Holiday tomHoliday=new Holiday();

? ? ? ? tomHoliday.setTotalDay(2.5F);

? ? ? ? tomHoliday.setLeavePerson("tom");

? ? ? ? tomHoliday.setDeptManager("lucy,mary");

? ? ? ? tomHoliday.setPersonnel("lili");

? ? ? ? tomHoliday.setGeneralManager("sillyming");

? ? ? ? Map<String,Object> map=new HashMap<>();

? ? ? ? map.put("holiday",tomHoliday);

? ? ? ? RuntimeService runtimeService=processEngine.getRuntimeService();

? ? ? ? ProcessInstance processInstance=runtimeService.startProcessInstanceByKey("holiday",map);

? ? ? ? System.out.println(processInstance.getProcessInstanceId());

? ? ? ? System.out.println(processInstance.getId());

? ? ? ? System.out.println("tom開(kāi)啟了一個(gè)請(qǐng)假流程實(shí)例");

? ? }

? ? //任務(wù)查詢(xún)

? ? public static List<String> searchTask(ProcessEngine processEngine,String taskPerson){

? ? ? ? //流程啟動(dòng)后拉队,各各任務(wù)的負(fù)責(zé)人就可以查詢(xún)自己當(dāng)前需要處理的任務(wù)弊知,查詢(xún)出來(lái)的任務(wù)都是該用戶(hù)的待辦任務(wù)。

? ? ? ? TaskService taskService=processEngine.getTaskService();

? ? ? ? List<Task> list=taskService.createTaskQuery()

? ? ? ? ? ? ? ? .processDefinitionKey("holiday")//流程實(shí)例key

? ? ? ? ? ? ? ? .taskAssignee(taskPerson)//查詢(xún)誰(shuí)的任務(wù)

? ? ? ? ? ? ? ? .list();

? ? ? ? List<String> idList=new ArrayList<String>();

? ? ? ? for(Task task:list){

? ? ? ? ? ? idList.add(task.getId());

? ? ? ? ? ? System.out.println(task.getId());

? ? ? ? ? ? System.out.println(task.getName());

? ? ? ? ? ? System.out.println(task.getProcessInstanceId());

? ? ? ? }

? ? ? ? return idList;

? ? }

? ? //處理任務(wù)

? ? public static void disposeTask(ProcessEngine processEngine,List<String> list){

? ? ? ? //任務(wù)負(fù)責(zé)人查詢(xún)待辦任務(wù)粱快,選擇任務(wù)進(jìn)行處理秩彤,完成任務(wù)。

? ? ? ? TaskService taskService=processEngine.getTaskService();

? ? ? ? for(String id:list){

? ? ? ? ? ? taskService.complete(id);//任務(wù)id

? ? ? ? ? ? System.out.println("處理任務(wù)id:"+id);

? ? ? ? }

}

? ? public static void pickupTask(ProcessEngine processEngine,String taskPerson){

? ? ? ? TaskService taskService=processEngine.getTaskService();

? ? ? ? Task task=taskService.createTaskQuery()

? ? ? ? ? ? ? ? .processDefinitionKey("holiday")//流程實(shí)例key

? ? ? ? ? ? ? ? .singleResult();

? ? ? ? if(task!=null){

? ? ? ? ? ? taskService.claim(task.getId(),taskPerson);

? ? ? ? ? ? System.out.println(taskPerson+"->領(lǐng)取任務(wù):"+task.getId());

? ? ? ? }

}

? ? public static void connectTask(ProcessEngine processEngine,String taskPerson1,String taskPerson2){

? ? ? ? TaskService taskService=processEngine.getTaskService();

? ? ? ? Task task=taskService.createTaskQuery()

? ? ? ? ? ? ? ? .processDefinitionKey("holiday")//流程實(shí)例key

? ? ? ? ? ? ? ? .taskAssignee(taskPerson1)

? ? ? ? ? ? ? ? .singleResult();

? ? ? ? if(task!=null){

? ? ? ? ? ? //這里如果 taskPerson2為null事哭,則是把任務(wù)歸還

? ? ? ? ? ? taskService.setAssignee(task.getId(),taskPerson2);

? ? ? ? ? ? System.out.println(taskPerson1+"->把任務(wù):"+task.getId()+"->交給:"+taskPerson2);

? ? ? ? }

}

? ? public? static void completeTask(ProcessEngine processEngine,String taskPerson){

? ? ? ? TaskService taskService=processEngine.getTaskService();

? ? ? ? Task task=taskService.createTaskQuery()

? ? ? ? ? ? ? ? .processDefinitionKey("holiday")//流程實(shí)例key

? ? ? ? ? ? ? ? .taskAssignee(taskPerson)

? ? ? ? ? ? ? ? .singleResult();

? ? ? ? if(task!=null){

? ? ? ? ? ? taskService.complete(task.getId());

? ? ? ? ? ? System.out.println(taskPerson+"->完成任務(wù):"+task.getId());

? ? ? ? }

}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末漫雷,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子鳍咱,更是在濱河造成了極大的恐慌降盹,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谤辜,死亡現(xiàn)場(chǎng)離奇詭異蓄坏,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)丑念,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)涡戳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人脯倚,你說(shuō)我怎么就攤上這事渔彰。” “怎么了挠将?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵胳岂,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我舔稀,道長(zhǎng)乳丰,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任内贮,我火速辦了婚禮产园,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘夜郁。我一直安慰自己什燕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布竞端。 她就那樣靜靜地躺著屎即,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上技俐,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天乘陪,我揣著相機(jī)與錄音,去河邊找鬼雕擂。 笑死啡邑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的井赌。 我是一名探鬼主播谤逼,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼仇穗!你這毒婦竟也來(lái)了流部?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤仪缸,失蹤者是張志新(化名)和其女友劉穎贵涵,沒(méi)想到半個(gè)月后恰画,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡跨晴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年片林,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片费封。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡弓摘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出韧献,到底是詐尸還是另有隱情,我是刑警寧澤璧针,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布渊啰,位于F島的核電站申屹,受9級(jí)特大地震影響走搁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜私植,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一曲稼、第九天 我趴在偏房一處隱蔽的房頂上張望湖员。 院中可真熱鬧,春花似錦娘摔、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至晒奕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間魄眉,已是汗流浹背闷袒。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留脾歇,地道東北人淘捡。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像激况,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子乌逐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容