流程引擎Camunda開發(fā)記錄(一)

使用Camunda前,首先介紹幾個(gè)概念:

1.什么是流程定義-ProcessDefinition:

ProcessDefinition(流程定義)就是一個(gè)流程的步驟說明,比如一個(gè)審批流程钞楼,申請(qǐng)人王三發(fā)起提交申請(qǐng),李四作為部門經(jīng)理進(jìn)行審批振湾,審批完成后暇务,此申請(qǐng)到達(dá)下一級(jí)總經(jīng)理王五,進(jìn)行審批拿撩。就這么整個(gè)流程說明其實(shí)就是流程定義衣厘,不過在Camunda中整個(gè)流程定義是以helloworld.bpmn與helloworld.png格式存在的。

2.什么是流程部署:

流程被設(shè)計(jì)好之后,得到.bpmn或者pngde 文件影暴,那他如何被劉程引擎解析的错邦,這時(shí)候就需要將流程定義部署到流程引擎上。流程每部署一次就會(huì)得到一個(gè)deploymentId

3.什么是流程實(shí)例-ProcessInstance:

每開啟流程一次就會(huì)生成一條相應(yīng)的流程實(shí)例型宙,開啟流程其實(shí)就是將流程運(yùn)轉(zhuǎn)起來撬呢,就像請(qǐng)假流程,只有當(dāng)用戶發(fā)出請(qǐng)假申請(qǐng)(開啟請(qǐng)假流程)妆兑,就會(huì)生成一條請(qǐng)假實(shí)例魂拦。
一個(gè)流程實(shí)例就表示流程從開始到結(jié)束最大的流程分支。開啟一個(gè)流程就只能有一個(gè)流程實(shí)例

4.什么是執(zhí)行實(shí)例-executeInstance:

啟動(dòng)流程搁嗓,首先會(huì)創(chuàng)建流程實(shí)例芯勘,如果存在子流程、多實(shí)例腺逛、并行網(wǎng)關(guān)荷愕,會(huì)再次創(chuàng)建執(zhí)行實(shí)例,當(dāng)所有的執(zhí)行實(shí)例按照一定規(guī)則結(jié)束執(zhí)行后棍矛,流程實(shí)例也就隨之結(jié)束路翻。
執(zhí)行實(shí)例的父級(jí)或者父級(jí)的父級(jí)就是流程實(shí)例。
下面是以并行網(wǎng)關(guān)為例介紹茄靠,流程實(shí)例和執(zhí)行實(shí)例之間的關(guān)系茂契;


image.png
image.png

下面是以多實(shí)例為例介紹,流程實(shí)例和執(zhí)行實(shí)例之間的關(guān)系:

image.png

image.png

執(zhí)行樹的壓縮和優(yōu)化

引入活動(dòng)實(shí)例樹的第二個(gè)原因是慨绳,流程引擎運(yùn)行時(shí)壓縮和優(yōu)化執(zhí)行樹掉冶。考慮一個(gè)并行網(wǎng)關(guān)有兩個(gè)usertasks的例子脐雪。最初T1和T2都是活動(dòng)的厌小。在執(zhí)行樹中,我們將看到無效的并發(fā)根執(zhí)行等待在并行網(wǎng)關(guān)战秋,為每個(gè)任務(wù)之一璧亚。活動(dòng)實(shí)例樹具有相同的結(jié)構(gòu)脂信,但根節(jié)點(diǎn)對(duì)應(yīng)的流程實(shí)例本身癣蟋,并且它并不等待在并行網(wǎng)關(guān). 當(dāng)T2完成任務(wù)后,將壓縮流程引擎執(zhí)行樹狰闪,去除T1的執(zhí)行疯搅,并用根執(zhí)行取代它。如果執(zhí)行T1引用了變量或任務(wù)埋泵,那么它們將被移動(dòng)到根執(zhí)行中幔欧∽镏危活動(dòng)實(shí)例樹看起來不同的是:它仍然包含一個(gè)T1的活動(dòng)實(shí)例和流程定義本身。

這種行為(behavior)的衍生,在執(zhí)行樹種并不存在"節(jié)點(diǎn)實(shí)例標(biāo)識(shí)"(activity instance identity) 這種概念. 沒有唯一標(biāo)識(shí)來描述一個(gè)節(jié)點(diǎn)的實(shí)例礁蔗。在一般情況下觉义,是無法保證同一個(gè)進(jìn)入節(jié)點(diǎn)實(shí)例執(zhí)行將會(huì)完全一致的完成它。例如: 在上面的例子中T1 是以執(zhí)行ID=2開始 以執(zhí)行ID=1結(jié)束浴井。

注: 節(jié)點(diǎn)實(shí)例 即 活動(dòng)實(shí)例

4.Task
Task

任務(wù)晒骇,當(dāng)流程流轉(zhuǎn)到某個(gè)階段,需要用戶審核或者其他操作的時(shí)候滋饲,這個(gè)需要用戶來完成的操作就是一個(gè)任務(wù)厉碟,除了用戶任務(wù)之外,還有系統(tǒng)任務(wù)等其他任務(wù)

任務(wù)執(zhí)行人

如果需要讓某個(gè)用戶執(zhí)行某個(gè)任務(wù)屠缭,首先需要將任務(wù)分配給用戶箍鼓,一般有3種分配方式

直接指定,這里通過Assignee來直接指定某一個(gè)具體的用戶(一般是用戶ID或者唯一的用戶名)呵曹,支持表達(dá)式以支持動(dòng)態(tài)指定

指定候選人款咖,通過candidateUser來指定一系列候選人,如果是多個(gè)用戶奄喂,通過,號(hào)分隔

指定候選組铐殃,通過candidateGroup來指定某一個(gè)組里面的所有用戶(實(shí)際測(cè)試中,發(fā)現(xiàn)候選人和候選組是并集關(guān)系)

如果指定了候選人和候選組跨新,那么并不意味著所有的候選人都需要執(zhí)行任務(wù)富腊,這些人首先需要進(jìn)行一個(gè)認(rèn)領(lǐng)的操作,一個(gè)任務(wù)只能由一個(gè)人認(rèn)領(lǐng)域帐,認(rèn)領(lǐng)完成后才能執(zhí)行任務(wù)赘被,相對(duì)的,也可以取消認(rèn)領(lǐng)

5.RepositoryService

流程存儲(chǔ)服務(wù)RepositoryService主要的功能如下:

管理流程定義文件xml和靜態(tài)資源的服務(wù)
對(duì)特定流程的暫停和激活
流程定義啟動(dòng)權(quán)限管理
部署文件構(gòu)造器DeploymentBuilder
部署文件查詢器DeploymentQuery
流程定義查詢對(duì)象ProcessDefinition
流程定義的java格式BpmnModel

6.RuntimeService

該類就是啟動(dòng)實(shí)例肖揣,查詢與實(shí)例相關(guān)的一些信息

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末民假,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子龙优,更是在濱河造成了極大的恐慌羊异,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件彤断,死亡現(xiàn)場(chǎng)離奇詭異野舶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瓦糟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門筒愚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人菩浙,你說我怎么就攤上這事。” “怎么了劲蜻?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵陆淀,是天一觀的道長。 經(jīng)常有香客問我先嬉,道長轧苫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任疫蔓,我火速辦了婚禮含懊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘衅胀。我一直安慰自己岔乔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布滚躯。 她就那樣靜靜地躺著雏门,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掸掏。 梳的紋絲不亂的頭發(fā)上茁影,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音丧凤,去河邊找鬼募闲。 笑死,一個(gè)胖子當(dāng)著我的面吹牛愿待,可吹牛的內(nèi)容都是我干的浩螺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼呼盆,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼年扩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起访圃,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤厨幻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后腿时,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體况脆,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年批糟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了格了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡徽鼎,死狀恐怖盛末,靈堂內(nèi)的尸體忽然破棺而出弹惦,到底是詐尸還是另有隱情,我是刑警寧澤悄但,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布棠隐,位于F島的核電站,受9級(jí)特大地震影響檐嚣,放射性物質(zhì)發(fā)生泄漏助泽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一嚎京、第九天 我趴在偏房一處隱蔽的房頂上張望嗡贺。 院中可真熱鬧,春花似錦鞍帝、人聲如沸诫睬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽岩臣。三九已至,卻和暖如春宵膨,著一層夾襖步出監(jiān)牢的瞬間架谎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國打工辟躏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谷扣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓捎琐,卻偏偏與公主長得像会涎,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瑞凑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354