springBoot搭建activiti工作流
1、新建maven項目
2、依賴 的pom文件
3、新建springboot的配置文件
server:port: 8080 security:basic:enabled: falsespring:datasource:url: jdbc:mysql://127.0.0.1:3306/zhou?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNullusername: rootpassword: 1234564、新建spring的啟動文件
package com.jerryl;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan;@SpringBootApplication @ComponentScan public class SpringBootWithActivitiApplication {public static void main(String[] args) {SpringApplication.run(SpringBootWithActivitiApplication.class, args);} }5、啟動springboot如果數(shù)據(jù)庫出現(xiàn)activiti的表格,說明搭建完成。
想要源碼的給小編留言………
activiti:
activiti是一款BPM的框架,processEngine是activiti的核心,負責流程流程生成的各種數(shù)據(jù)及實例,監(jiān)控和管理流程。activiti默認操作是數(shù)據(jù)庫的是mybatis。
注:工作流activiti的表是管理流程的而業(yè)務的數(shù)據(jù)都需要用戶自己創(chuàng)建和維護。
activiti的7個服務
RuntimeService:主要與流程實例有關(guān),流程定義是指設(shè)計的一個流程,流程實例是指真正的一個事件,比如請假流程是設(shè)計的一個流程,小明請假則是一個具體的流程實例。這項服務可以創(chuàng)建一個流程實例,即啟動一個流程,中斷或者激活一個流程實例,以及設(shè)置信號事件觸發(fā)器,消息時間觸發(fā)器(這些和啟動流程的條件有關(guān)),設(shè)置變量,事件監(jiān)聽等一系列和流程實例有關(guān)的操作。
HistoryService:主要是用于查詢流程的運行記錄,只有查詢和刪除的操作,沒有增加和修改。主要查詢活動實例,細節(jié),流程實例,變量實例以及任務實例,對應數(shù)據(jù)庫中相應的表。
IdentityService:主要用于控制用戶和用戶組,要注意流程引擎本身是沒有用戶限制的,在用戶任務的時候可以指定用戶完成,這個不是必須的。這個服務包括用戶以及用戶組的:創(chuàng)建,保存和刪除,以及它們之間的關(guān)系,用戶詳細信息的創(chuàng)建等操作。
TaskService:主要用于流程中的任務節(jié)點的相關(guān)操作,BPMN實際上有很多種類型的任務,不單單是用戶任務,這個的設(shè)置主要是針對用戶任務的相關(guān)設(shè)置,其它類型的任務并不需要太多的設(shè)置,大部分都是自動類型的任務,需要相應的觸發(fā)條件。
FormService:主要用于表單數(shù)據(jù)的保存和獲取,有啟動流程的表單和任務過程中產(chǎn)生的表單。
ManagementService:這個服務功能比較雜,看里面的方法大致有這些功能:查詢數(shù)據(jù)庫表的相關(guān)信息,Job相關(guān)的查詢,刪除。還有事件日志的相關(guān)操作。總的來說是activiti的一些全局相關(guān)的操作。
DynamicBpmnService:這個服務是5.19版本后新增的一個服務,和RepositoryService的作用相似,都是與流程定義有關(guān),但是卻完全不同。從名字上來看是動態(tài)的BPMN服務,看里面的方法都是改變流程的相關(guān)屬性。這個方法就可以直接操作流程定義,而不需要讀取模型,再設(shè)計部署(一個流程基本要經(jīng)過創(chuàng)建模型,設(shè)計畫圖,生產(chǎn)BPMN的XML文件,再部署成流程定義,這個服務就可以直接操作流程定義,不會改變原本的文件,個人感覺可能會帶來一些的問題,但是目前對于流程流轉(zhuǎn)內(nèi)部實現(xiàn)還沒有完全理解,使用要謹慎,比如有的流程正在運行老版本的定義,這個時候改變流程定義,接下來怎么流轉(zhuǎn)之類的都是問題)。
流程圖審批人的設(shè)置
activiti的流程
1、部署流程
2、啟動流程
Map<String,Object> variables=new HashMap<String,Object>();variables.put("leaveId", leaveId);// 啟動流程ProcessInstance pi= runtimeService.startProcessInstanceByKey("hello",variables); // 根據(jù)流程實例Id查詢?nèi)蝿誘ask task=taskService.createTaskQuery().processInstanceId(pi.getProcessInstanceId()).singleResult(); // 完成 學生填寫請假單任務 taskService.complete(task.getId()); Leave leave=leaveService.findById(leaveId);//修改狀態(tài)leave.setState("審核中");leave.setProcessInstanceId(pi.getProcessInstanceId());// 修改請假單狀態(tài)leaveService.updateLeave(leave);總結(jié)
以上是生活随笔為你收集整理的springBoot搭建activiti工作流的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于日志的常用配置(log4j和logb
- 下一篇: iis错误解决