activiti工作流

一. 介紹

1.activiti是一個(gè)開源的工作流引擎,它實(shí)現(xiàn)了BPMN 2.0規(guī)范,可以發(fā)布設(shè)計(jì)好的流程定義,并通過api進(jìn)行流程調(diào)度。

2.activiti的核心組成

image

幾大核心api

二. 整合

1.導(dǎo)入依賴

 <dependency>
   <groupId>org.activiti</groupId>
  <artifactId>activiti-spring-boot-starter-basic</artifactId>
  <version>6.0.0</version>
 </dependency>

需要注意的是,這里的依賴版本,需要對(duì)應(yīng)數(shù)據(jù)庫中act_ge_property表中schema.version版本信息,所以一般不建議在創(chuàng)建完表之后修改依賴信息

2.application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/activitiserverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.show-sql=truespring.activiti.database-schema-update=true
spring.activiti.check-process-definitions=falsespring.activiti.process-definition-location-prefix=classpath:/processes/
spring.activiti.db-identity-used=true
#    process-definition-location-suffixes:
#      - **.bpmn
#      - **.bpmn20.xml
spring.activiti.db-history-used=true
spring.activiti.history-level=full

3.安裝actibpm插件。file--》plugin--》搜索actiBPM安裝即可。

4.Help-EditCustomVmOption-

-Dfile.encoding=UTF-8

防止bpmn文件中文亂碼

5.啟動(dòng)類

 @SpringBootApplication(exclude = SecurityAutoConfiguration.class)
  1. 項(xiàng)目的resource目錄下新建一個(gè)processess文件夾,存放.bpmn文件

在resource/processess下新建一個(gè)bpmn文件,如圖直接拖動(dòng)畫出一個(gè)流程示例

image

7.點(diǎn)擊空白處設(shè)置id和name。

8.activiti默認(rèn)的ID生成策略在高并發(fā)場景下會(huì)出現(xiàn)ID重復(fù)的情況,因此在高并發(fā)場景下建議采用UUID的策略。修改activiti配置文件,增加以下語句,并增加IdGen類。

@Configuration
public class ActivitiConfigimplements ProcessEngineConfigurationConfigurer {
@Override
public void configure(SpringProcessEngineConfigurationspringProcessEngineConfiguration) {
                 springProcessEngineConfiguration.setIdGenerator(newIdGeneratorUtil();
         }
}
public class IdGeneratorUtilimplements IdGenerator {
 /**
* 封裝JDK自帶的UUID, 通過Random數(shù)字生成, 中間無-分割.
*/
    public static String uuid() {
        return UUID.randomUUID().toString().replaceAll("-","");
   }
@Override
   public String getNextId() {
           return uuid();
   }
}

9.啟動(dòng)項(xiàng)目會(huì)在對(duì)應(yīng)數(shù)據(jù)庫中生成28張表

Activiti的后臺(tái)是有數(shù)據(jù)庫的支持的,所有的表都以ACT_開頭。第二部分是表示用途的兩個(gè)字母標(biāo)識(shí)。用途也和服務(wù)的API對(duì)應(yīng)

ACT_RE_*:’RE’表示repository。這個(gè)前綴的表包含了流程定義和流程靜態(tài)資源 (圖片,規(guī)則等等)。

ACT_RU_*:’RU’表示runtime。這些是運(yùn)行時(shí)的表,包含流程實(shí)例,任務(wù),變量,異步任務(wù)等運(yùn)行中的數(shù)據(jù)。Activiti只在流程實(shí)例執(zhí)行過程中保存這些數(shù)據(jù), 在流程結(jié)束時(shí)就會(huì)刪除這些記錄。這樣運(yùn)行時(shí)表可以一直很小且速度很快。

ACT_ID_*:’ID’表示identity。這些表包含身份信息,比如用戶,組等等。

ACT_HI_*:’HI’表示history。這些表包含歷史數(shù)據(jù),比如歷史流程實(shí)例,變量,任務(wù)等等。

ACT_GE_*:通用數(shù)據(jù),用于不同場景下。

資源庫流程規(guī)則表

act_re_deployment:部署信息表

act_re_model:流程設(shè)計(jì)模型部署表

act_re_procdef:流程定義數(shù)據(jù)表

運(yùn)行時(shí)數(shù)據(jù)庫表

act_ru_execution:運(yùn)行時(shí)流程執(zhí)行實(shí)例表

act_ru_identitylink:運(yùn)行時(shí)流程人員表,主要存儲(chǔ)任務(wù)節(jié)點(diǎn)與參與者的相關(guān)信息

act_ru_task:運(yùn)行時(shí)任務(wù)節(jié)點(diǎn)表

act_ru_variable:運(yùn)行時(shí)流程變量數(shù)據(jù)表

歷史數(shù)據(jù)庫表

act_hi_actinst:歷史節(jié)點(diǎn)表

act_hi_attachment:歷史附件表

act_hi_comment:歷史意見表

act_hi_identitylink:歷史流程人員表

act_hi_detail :歷史詳情表,提供歷史變量的查詢

act_hi_procinst:歷史流程實(shí)例表

act_hi_taskinst:歷史任務(wù)實(shí)例表

act_hi_varinst:歷史變量表

組織機(jī)構(gòu)表

act_id_group :用戶組信息表

act_id_info:用戶擴(kuò)展信息表

act_id_membership:用戶與用戶組對(duì)應(yīng)信息表

act_id_user:用戶信息表

這四張表很常見,基本的組織機(jī)構(gòu)管理,關(guān)于用戶認(rèn)證方面建議還是自己開發(fā)一套,組件自帶的功能太簡單,使用中有很多需求難以滿足。

通用數(shù)據(jù)表

act_ge_bytearray:二進(jìn)制數(shù)據(jù)表

act_ge_property:屬性數(shù)據(jù)表存儲(chǔ)整個(gè)流程引擎級(jí)別的數(shù)據(jù),初始化表結(jié)構(gòu)時(shí)會(huì)默認(rèn)插入三條記錄

10.部署流程

repositoryService.createDeployment().addClasspathResource("singleAssignee.bpmn").deploy();

11.查詢待辦

 List tasks = taskService.createTaskQuery().taskAssignee("kefu").list();

12.根據(jù)流程key開啟一個(gè)流程

 ProcessInstance test01 = runtimeService.startProcessInstanceByKey(key);

13.根據(jù)任務(wù)id提交任務(wù)

 taskService.complete(taskId);

14.總結(jié)操作

總結(jié)activiti中的幾個(gè)對(duì)象

幾個(gè)和流程相關(guān)的對(duì)象

Deployment:部署對(duì)象,和部署表(act_re_deployment)對(duì)應(yīng)

ProcessDefinition:流程定義對(duì)象,和流程定義表(act_re_procdef)對(duì)應(yīng)

ProcessInstance:流程實(shí)例對(duì)象,和流程實(shí)例表(act_ru_execution)對(duì)應(yīng)

Task:任務(wù)對(duì)象,和任務(wù)表(act_ru_task)對(duì)應(yīng)

幾個(gè)Service對(duì)象

RepositoryService:操作部署、流程定義等靜態(tài)資源信息

RuntimeService:操作流程實(shí)例,啟動(dòng)流程實(shí)例、查詢流程實(shí)例、刪除流程實(shí)例等動(dòng)態(tài)信息

TaskService:操作任務(wù),查詢?nèi)蝿?wù)、辦理任務(wù)等和任務(wù)相關(guān)的信息

HistoryService:操作歷史信息的,查詢歷史信息

IdentityService:操作用戶和組

幾個(gè)Query對(duì)象

DeploymentQuery:對(duì)應(yīng)查詢部署表(act_re_deployment)

ProcessDefinitionQuery:對(duì)應(yīng)查詢流程定義表(act_re_procdef)

ProcessInstanceQuery:對(duì)應(yīng)查詢流程實(shí)例表(act_ru_execution)

TaskQuery:對(duì)應(yīng)查詢?nèi)蝿?wù)表(act_ru_tas

https://blog.csdn.net/yerenyuan_pku/article/details/71307305?utm_medium=distribute.pc_relevant.none-task-blog-title-7&spm=1001.2101.3001.4242

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評(píng)論 6 546
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,814評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評(píng)論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評(píng)論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,779評(píng)論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,109評(píng)論 1 330
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評(píng)論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,287評(píng)論 0 291
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,799評(píng)論 1 338
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,515評(píng)論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,750評(píng)論 1 375
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評(píng)論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,933評(píng)論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評(píng)論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,492評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,703評(píng)論 2 380