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