工作流-輕量級(jí)工作流引擎Snaker學(xué)習(xí)筆記

https://yunmel.gitbooks.io/snakerflow/

七張核心表

68747470733a2f2f73322e617831782e636f6d2f323031392f30392f32302f6e6a4166426a2e706e67.png

表定義詳細(xì)

  1. WF_PROCESS
    流程定義,例如請(qǐng)假申請(qǐng)宾巍,用車申請(qǐng)等流程定義


    153019_729ddee2_13178.png
  2. WF_ORDER
    流程實(shí)例翎承,當(dāng)前運(yùn)行中的流程實(shí)例的信息肌厨,比如嫁乘,我申請(qǐng)了一條請(qǐng)假流程杯瞻,流程編號(hào)“請(qǐng)假-001”瓣戚,這個(gè)請(qǐng)假流程“請(qǐng)假-001”就是一個(gè)流程實(shí)例

  3. WF_HIST_ORDER
    歷史流程實(shí)例端圈,只要啟動(dòng)過的流程,歷史流程實(shí)例表中就會(huì)存儲(chǔ)流程的實(shí)例信息子库,比如這條流程是否結(jié)束

  4. WF_TASK
    任務(wù)舱权,某個(gè)流程中某個(gè)節(jié)點(diǎn),叫做任務(wù)實(shí)例仑嗅。比如“請(qǐng)假-001”中需要上級(jí)審批宴倍,“上級(jí)審批”這個(gè)節(jié)點(diǎn)就是一個(gè)任務(wù)實(shí)例

  5. WF_HIST_TASK
    歷史任務(wù)(就是執(zhí)行完了的任務(wù)),所有任務(wù)結(jié)束以后都會(huì)在歷史任務(wù)信息表里存一條記錄

  6. WF_TASK_ACTOR
    每個(gè)任務(wù)對(duì)應(yīng)的參與者(記住誰(shuí)可以簽收或處理)仓技,可能會(huì)有多個(gè)人或者用戶組鸵贬。

  7. WF_HIST_TASK_ACTOR
    歷史的參與者表,任務(wù)處理完以后脖捻,對(duì)應(yīng)處理人的信息會(huì)存到這個(gè)表里面

詳細(xì)講解

  1. WF_PROCESS:存放流程定義阔逼,通過編輯一個(gè)后綴為.snaker的xml文檔來定義流程的走向;在前端流程定義管理里有個(gè)部署流程的按鈕地沮,可以將編輯好的xml文檔保存到WF_PROCESS表中嗜浮,并產(chǎn)生一條記錄。xml文檔里有流程的名字摩疑,如果這個(gè)名字在WF_PROCESS已經(jīng)存在了危融,則保存時(shí)產(chǎn)生的新的記錄的version字段值會(huì)自動(dòng)加1。processId是唯一的雷袋,不重復(fù)吉殃。

  2. WF_ORDER:存放流程實(shí)例的。開啟一個(gè)流程實(shí)例時(shí)楷怒,WF_ORDER表有個(gè)字段PROCESS_ID和流程定義的process_id相關(guān)聯(lián)寨腔,他們是一對(duì)多的關(guān)系。當(dāng)開啟一個(gè)流程實(shí)例WF_ORDER時(shí)率寡,在WF_ORDER和WF_HIST_ORDER都新增一條記錄迫卢,并且同時(shí)產(chǎn)生的那兩條記錄的主鍵id是一樣的。冶共,其中WF_HIST_ORDER比WF_ORDER多一個(gè)字段ORDER_STATUS 流程實(shí)例狀態(tài)(0:結(jié)束乾蛤;1:活動(dòng))每界。
    當(dāng)流程沒跑完時(shí),ORDER_STATUS的值是1家卖;
    當(dāng)整個(gè)事件流程跑完了眨层,WF_ORDER表的那條記錄會(huì)被刪除,WF_HIST_ORDER表對(duì)應(yīng)的那條記錄的ORDER_STATUS的值變成0上荡,表示流程實(shí)例跑完了趴樱。

  3. WF_TASK:存當(dāng)前任務(wù)的;當(dāng)流程執(zhí)行完當(dāng)前任務(wù)節(jié)點(diǎn)時(shí)酪捡,WF_TASK的這條記錄會(huì)被剪切到WF_HIST_TASK表中叁征,然后在WF_TASK表中新增下一個(gè)任務(wù)節(jié)點(diǎn)的信息記錄。新增的下一任務(wù)節(jié)點(diǎn)的task有個(gè)字段parent_task_id記住上一個(gè)任務(wù)節(jié)點(diǎn)在WF_HIST_TASK表里的WF_HIST_TASK_ID(上一個(gè)任務(wù)節(jié)點(diǎn)從WF_TASK表剪切到WF_HIST_TASK了)逛薇;這樣就可以實(shí)現(xiàn)回退等功能捺疼。

  4. WF_TASK_ACTOR:存哪個(gè)任務(wù)關(guān)聯(lián)了那些參與者的,就是哪些人可以簽收或者處理永罚。如果當(dāng)前任務(wù)節(jié)點(diǎn)被執(zhí)行了啤呼,則相關(guān)的參與者會(huì)被剪切到WF_HIST_TASK_ACTOR表里,和WF_TASK、WF_HIST_TASK類似,這樣回退時(shí)延塑,就知道以前這一步是誰(shuí)處理的。

假如現(xiàn)在執(zhí)行節(jié)點(diǎn)的任務(wù)是A2惕蹄,上述中wf_task存的是執(zhí)行中的記錄,也就是說在執(zhí)行A2前坯临,wf_task中肯定會(huì)有一條執(zhí)行中的任務(wù)記錄,假設(shè)為A1恋昼,那么執(zhí)行A2時(shí)的增刪改為先將wf_task和wf_task_actor表中A1的記錄插入wf_hist_task和wf_hist_task_actor中看靠;其次是刪除wf_task和wf_task_actor中A1記錄,然后將A2的信息插入到wf_task和wf_task_actor中液肌。此時(shí)wf_task表的parent_task_id是歷史表A1記錄的Id挟炬,通過此可將所有任務(wù)串聯(lián)起來。task表的variable中的值為局部變量只能在當(dāng)前task中使用嗦哆。有人會(huì)有疑問谤祖,假設(shè)有如下流程圖,執(zhí)行task1時(shí)會(huì)怎么樣老速?

image.png

因?yàn)殚_始節(jié)點(diǎn)是一個(gè)比較特殊的nodemodel粥喜,群主稱之為流轉(zhuǎn)邏輯元素(下面總體設(shè)計(jì)思路中會(huì)有詳細(xì)介紹),它只負(fù)責(zé)流轉(zhuǎn)到下一節(jié)點(diǎn)不負(fù)責(zé)執(zhí)行橘券,也就沒有數(shù)據(jù)庫(kù)的增刪改额湘。這樣直接流轉(zhuǎn)到task1卿吐,插入wf_hist_task和wf_hist_task_actor,并且又直接流轉(zhuǎn)到end節(jié)點(diǎn)锋华,end節(jié)點(diǎn)也是一個(gè)流轉(zhuǎn)元素嗡官,它會(huì)直接刪除wf_order表的記錄并更改該流程實(shí)例wf_hist_order表的order_state的狀態(tài)。
至此一個(gè)流程的所有增刪改查結(jié)束毯焕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末衍腥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子纳猫,更是在濱河造成了極大的恐慌婆咸,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件续担,死亡現(xiàn)場(chǎng)離奇詭異擅耽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)物遇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門乖仇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人询兴,你說我怎么就攤上這事乃沙。” “怎么了诗舰?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵警儒,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我眶根,道長(zhǎng)蜀铲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任属百,我火速辦了婚禮记劝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘族扰。我一直安慰自己厌丑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布渔呵。 她就那樣靜靜地躺著怒竿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扩氢。 梳的紋絲不亂的頭發(fā)上耕驰,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音录豺,去河邊找鬼耍属。 笑死托嚣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的厚骗。 我是一名探鬼主播示启,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼领舰!你這毒婦竟也來了夫嗓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤冲秽,失蹤者是張志新(化名)和其女友劉穎舍咖,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锉桑,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡排霉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了民轴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片攻柠。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖后裸,靈堂內(nèi)的尸體忽然破棺而出瑰钮,到底是詐尸還是另有隱情,我是刑警寧澤微驶,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布浪谴,位于F島的核電站,受9級(jí)特大地震影響因苹,放射性物質(zhì)發(fā)生泄漏苟耻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一扶檐、第九天 我趴在偏房一處隱蔽的房頂上張望凶杖。 院中可真熱鬧,春花似錦蘸秘、人聲如沸官卡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至哮翘,卻和暖如春颈嚼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背饭寺。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工阻课, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叫挟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓限煞,卻偏偏與公主長(zhǎng)得像抹恳,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子署驻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容