您好,登錄后才能下訂單哦!
小編給大家分享一下Spring Boot集成工作流引擎Camunda的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
過程:進(jìn)入官網(wǎng)。主頁主色調(diào)讓我想起了橙子,頂部白色背景配上黑Bold菜單,掃了一遍,點(diǎn)擊Developers(嗯,這是直覺,畢竟用來開發(fā)嘛)。咦,發(fā)現(xiàn)還有二級菜單,再掃一遍,先LEARN吧,然后就點(diǎn)了 Build Your First Project 。一直滾動鼠標(biāo),看到了Quick Start,點(diǎn)擊Learn more,新開了個頁簽。因?yàn)槲业氖荢pringBoot項(xiàng)目,所以直接點(diǎn)開了Spring Boot,然后就跟著文檔真正Start了。
1.IDEA創(chuàng)建一個SpringBoot項(xiàng)目,還是用阿里云的Initializr吧,比spring.io快。
2.引入Camunda BPM的依賴,我只引入了camunda-bpm-spring-boot-starter-webapp(因?yàn)槲乙榭碈amunda的表結(jié)構(gòu),必須用自己的MySQL),而且調(diào)整了版本為3.4.0。
然后在resources下面新增META-INF/processes.xml空文件。
(引入Camunda的SpringBoot項(xiàng)目,啟動時會自動建表)
3.Spring Boot程序入口添加注解@EnableProcessApplication。
4.接下來就是要設(shè)計(jì)一個工作流了,需要下載設(shè)計(jì)軟件Camunda Modeler ,一家的,下吧,不慌。然后參照文檔設(shè)計(jì)了借款工作流。然后根據(jù)項(xiàng)目需要設(shè)計(jì)了自己的工作流
流程開始,先走“開發(fā)”,走完會輸出一個布爾值pass,true則通過走“測試”,false則不通過“流程失敗結(jié)束”。走“測試”的話,也會輸出一個布爾值pass,true則通過走“流程成功結(jié)束”,否則“流程失敗結(jié)束”。
5.保存工作流,放入SpringBoot項(xiàng)目resources目錄下,也可以在resources下新建子目錄存放,便于分類管理。
6.接下來的內(nèi)容很重要,因?yàn)殚_始涉及編碼了。
A、首先就是流程怎么開始,這個簡單
/** 操作流程實(shí)例 */@Autowiredprivate RuntimeService runtimeService;
ProcessInstance instance = runtimeService.startProcessInstanceByKey(參數(shù)是工作流ID);System.out.println("實(shí)例啟動成功,實(shí)例ID:" + instance.getProcessInstanceId());
記住,這個實(shí)例ID(不是工作流ID)一定要跟你的業(yè)務(wù)綁定,因?yàn)榱鞒桃粏?,就會走“開發(fā)”。
B、第二步就是怎么設(shè)置這個“開發(fā)”的輸出參數(shù)pass了(踩了很多的坑)
/** 操作任務(wù) */@Autowiredprivate TaskService taskService;
Task task = taskService.createTaskQuery().processInstanceId(剛才那個跟業(yè)務(wù)綁定的實(shí)例ID).singleResult();Map<String, Object> variables = new HashMap<>(1);variables.put("pass", true);taskService.complete(task.getId(), variables);System.out.println("開發(fā)任務(wù)執(zhí)行成功,任務(wù)ID:" + task.getId());
singleResult是因?yàn)槲疫@里開發(fā)就一個task,如果你的工作流某個節(jié)點(diǎn)有多個task,就用list()方法,然后一個個處理task。
然后“測試”的跟“開發(fā)”就差不多了,拿到task,設(shè)置參數(shù),完成task,結(jié)束。
C、至于“開發(fā)”和“測試”,各節(jié)點(diǎn)里面要做的事情,我是設(shè)計(jì)工作流時,設(shè)置節(jié)點(diǎn)的Listeners處理的,有Execution Listener和Task Listener,然和配合Event Type。
以上是“Spring Boot集成工作流引擎Camunda的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。