工作流引擎Activiti與SpringBoot2整合--開源軟件誕生17

開源ERP技術(shù)整合系列--第17篇

用日志記錄“開源軟件”的誕生

【點(diǎn)亮星標(biāo)】----祈盼著一個(gè)鼓勵(lì)

博主開源地址:

碼云:https://gitee.com/redragon/redragon-erp

GitHub:https://github.com/redragon1985/redragon-erp

為什么選擇Activiti

最常用的工作流引擎Activiti和JBPM楣黍,我當(dāng)初是如何選擇的呢陪腌?要考慮學(xué)習(xí)成本嘿期、現(xiàn)有功能像寒、兼容性、版本穩(wěn)定性、可擴(kuò)展性等等。

(1)Activiti的創(chuàng)始人Tom Baeyens是JBPM之前版本的核心人物驾荣,從這個(gè)層面出發(fā)Activiti工作流引擎的是站在巨人的肩膀上打造的,肯定會(huì)積累很多之前的經(jīng)驗(yàn)普泡,并解決很多之前遇到的問題播掷。

(2)Activiti使用了我們更常用的技術(shù),例如IOC撼班、AOP歧匈、MyBatis、WebService权烧、Restful眯亦,核心引擎則是基于之前版本的PVM,接口設(shè)計(jì)優(yōu)雅般码;而JBPM完全舍棄了之前的引擎,基于JBoss的Drools Flow實(shí)現(xiàn)乱顾,接口層面的設(shè)計(jì)十分混亂板祝。

(3)Activiti做了更多的擴(kuò)展功能,比如相對(duì)完整的表單設(shè)計(jì)走净,流程的熱部署券时、更加豐富的IDE插件。

Acitviti框架

下面來說說Activiti框架的核心功能

1伏伯、7個(gè)接口:工作流引擎可以想象成一個(gè)服務(wù)端橘洞,部署好以后,是需要客戶端的調(diào)用才能實(shí)現(xiàn)對(duì)工作流程的操作说搅。

RepositoryService:提供一系列管理流程部署和流程定義的API炸枣。

RuntimeService:在流程運(yùn)行時(shí)對(duì)流程實(shí)例進(jìn)行管理與控制。

TaskService:對(duì)流程任務(wù)進(jìn)行管理,例如任務(wù)提醒适肠、任務(wù)完成和創(chuàng)建任務(wù)等霍衫。

IdentityService:提供對(duì)流程角色數(shù)據(jù)進(jìn)行管理的API,這些角色數(shù)據(jù)包括用戶組侯养、用戶等敦跌。

ManagementService:提供對(duì)流程引擎進(jìn)行管理和維護(hù)的服務(wù)。

HistoryService:對(duì)流程的歷史數(shù)據(jù)進(jìn)行操作逛揩,包括查詢柠傍、刪除這些歷史數(shù)據(jù)。

FormService:表單服務(wù)辩稽。

2携兵、28張表:表記錄了用戶信息、流程信息搂誉、歷史信息等各種數(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_ih_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用戶信息表

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

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

act_ge_property屬性數(shù)據(jù)表存儲(chǔ)整個(gè)流程引擎級(jí)別的數(shù)據(jù)

3炭懊、BPMN業(yè)務(wù)流程模型:可以通過流程圖的方式配置業(yè)務(wù)流程并级、分支、條件等侮腹,最終生成引擎可識(shí)別的xml文件

BPMN2.0是一套建立工作流程模型的標(biāo)準(zhǔn)嘲碧。下面說幾個(gè)重點(diǎn)的元素和符號(hào)。

(1)事件:常用的是開始事件父阻、結(jié)束事件愈涩,用于標(biāo)識(shí)流程的開始和結(jié)束

(2)活動(dòng):常用的是任務(wù),用于描述流程節(jié)點(diǎn)中的一項(xiàng)工作

(3)網(wǎng)關(guān):常用包括并行網(wǎng)關(guān)加矛、排他網(wǎng)關(guān)履婉,并行即同時(shí)流轉(zhuǎn)多個(gè)分支,排他即只流轉(zhuǎn)其中一個(gè)分支

與SpringBoot整合

(1)修改POM添加依賴

<dependency>

<groupId>org.activiti</groupId>

<artifactId>activiti-spring-boot-starter-basic</artifactId>

<version>6.0.0</version>

</dependency>

(2)將BPMN2.0規(guī)范的XML文件拷貝到項(xiàng)目目錄下:/resources/processes

(3)構(gòu)建表結(jié)構(gòu)斟览,修改springBoot主配置文件application.properties

spring.activiti.database-schema-update=true

設(shè)置成true以后毁腿,會(huì)在項(xiàng)目啟動(dòng)的時(shí)候自動(dòng)創(chuàng)建Activiti表結(jié)構(gòu),首次數(shù)據(jù)表建好后建議改成false

(4)Activiti相關(guān)配置苛茂,修改springBoot主配置文件application.properties

#保存歷史數(shù)據(jù)得級(jí)別已烤,分為none、activity妓羊、audit(默認(rèn))胯究、full

spring.activiti.history-level=full

#是否校驗(yàn)流程文件,默認(rèn)校驗(yàn)resources下的processes文件夾里的流程文件

spring.activiti.check-process-definitions=false

#修改默認(rèn)的流程文件存儲(chǔ)位置

spring.activiti.process-definition-location-prefix=classpath:/processes/

(5)通過注解方式訪問常用接口

@Autowired

privateRuntimeService runtimeService;

@Autowired

privateTaskService taskService;

@Autowired

privateIdentityService identityService;

@Autowired

privateRepositoryService repositoryService;

@Autowired

privateProcessEngine processEngine;

@Autowired

privateHistoryService historyService;

后記

如果您對(duì)我們正在做的開源軟件感興趣躁绸,歡迎各種形式的合作裕循,作為貢獻(xiàn)者或直接加入我們臣嚣!讓我們一起打造一套開源的企業(yè)級(jí)信息化解決方案。


【碼云】或【GitHub】搜索“赤龍ERP”點(diǎn)擊星標(biāo)费韭,亦可加入我們茧球!?讓我們從小開始做點(diǎn)偉大的事!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末星持,一起剝皮案震驚了整個(gè)濱河市抢埋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌督暂,老刑警劉巖揪垄,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異逻翁,居然都是意外死亡饥努,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門八回,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酷愧,“玉大人,你說我怎么就攤上這事缠诅∪茉。” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵管引,是天一觀的道長士败。 經(jīng)常有香客問我,道長褥伴,這世上最難降的妖魔是什么谅将? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮重慢,結(jié)果婚禮上饥臂,老公的妹妹穿的比我還像新娘。我一直安慰自己伤锚,他們只是感情好擅笔,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著屯援,像睡著了一般。 火紅的嫁衣襯著肌膚如雪念脯。 梳的紋絲不亂的頭發(fā)上狞洋,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音绿店,去河邊找鬼吉懊。 笑死庐橙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的借嗽。 我是一名探鬼主播态鳖,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼恶导!你這毒婦竟也來了浆竭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤惨寿,失蹤者是張志新(化名)和其女友劉穎邦泄,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體裂垦,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡顺囊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蕉拢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片特碳。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖晕换,靈堂內(nèi)的尸體忽然破棺而出午乓,到底是詐尸還是另有隱情,我是刑警寧澤届巩,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布硅瞧,位于F島的核電站,受9級(jí)特大地震影響恕汇,放射性物質(zhì)發(fā)生泄漏腕唧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一瘾英、第九天 我趴在偏房一處隱蔽的房頂上張望枣接。 院中可真熱鬧,春花似錦缺谴、人聲如沸但惶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽膀曾。三九已至,卻和暖如春阳啥,著一層夾襖步出監(jiān)牢的瞬間添谊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國打工察迟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留斩狱,地道東北人耳高。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像所踊,于是被迫代替她去往敵國和親泌枪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349