<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    JBPM4中常用概念總結(jié)

    1. 流程定義(Process Definition)
       流程定義是記錄在xml文件中的對(duì)流程的描述,它包含唯一的流程開始節(jié)點(diǎn)和多個(gè)流程功能節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)之間使用transition進(jìn)行連接。
        Process Definition使用id, key和version進(jìn)行標(biāo)識(shí),jBPM中可能包含多個(gè)key值相同的Process Definition,key值相同的Process Definition會(huì)擁有不同的version值,而id是使用key-version的形式用來表示唯一的Process Definition的。
       jBPM中使用RepositoryService來控制流程定義的發(fā)布,瀏覽,刪除等操作。

    2. 流程實(shí)例(Process Instance)
       以流程定義為藍(lán)本生成的流程實(shí)例,在jBPM屬于Execution的一種。
       當(dāng)我們執(zhí)行start時(shí),會(huì)根據(jù)流程定義啟動(dòng)一個(gè)新的流程實(shí)例,然后它會(huì)根據(jù)流程定義里的節(jié)點(diǎn)運(yùn)行,在遇到state或task時(shí)停頓,等待外部用戶調(diào)用signal,最后會(huì)執(zhí)行到end節(jié)點(diǎn),結(jié)束整個(gè)流程。
       jBPM中只允許有一個(gè)start節(jié)點(diǎn),所以每個(gè)流程都是單一入口的,jBPM4中可以允許有多個(gè)end節(jié)點(diǎn),所以我們可以在任意位置結(jié)束流程。
       jBPM中使用ExecutionService來控制流程實(shí)例的啟動(dòng),瀏覽,執(zhí)行,刪除等操作

    3. state節(jié)點(diǎn)
       狀態(tài)結(jié)點(diǎn)是一個(gè)典型的等待狀態(tài)。同任務(wù)結(jié)點(diǎn)不同的是,狀態(tài)結(jié)點(diǎn)不會(huì)向任務(wù)列表添加任務(wù)實(shí)例。當(dāng)業(yè)務(wù)進(jìn)程需要等待外部系統(tǒng)的干預(yù)時(shí),這種結(jié)點(diǎn)是很有用的。(需要外部系統(tǒng)干預(yù),但又不是讓人去干預(yù))假設(shè)如下情況:在進(jìn)入該結(jié)點(diǎn)時(shí),通過node-enter事件向外部系統(tǒng)發(fā)送一個(gè)消息,然后結(jié)點(diǎn)進(jìn)入等待狀態(tài);當(dāng)外部系統(tǒng)完成處理,并回送一個(gè)消息,這將導(dǎo)致觸發(fā)一個(gè)signal()方法的運(yùn)行,該方法重新激活正在等待的流程繼續(xù)下行
       jBPM中使用ExecutionService來控制對(duì)state的signal操作。

    4. task節(jié)點(diǎn)
       任務(wù)結(jié)點(diǎn)(task-node)任務(wù)結(jié)點(diǎn)是代表由人介入的一個(gè)或多個(gè)任務(wù)。因此當(dāng)流程運(yùn)行到一個(gè)任務(wù)結(jié)點(diǎn)時(shí),會(huì)生成“任務(wù)實(shí)例對(duì)象(task instances)”,并添加到參與人的任務(wù)列表中,之后結(jié)點(diǎn)會(huì)處于等待狀態(tài),直到參與人完成他們的任務(wù),并激活流程繼續(xù)向下執(zhí)行。
       task節(jié)點(diǎn)可以使用assignee, swimelane等方式為任務(wù)定義分配到某個(gè)人或者某個(gè)組,對(duì)應(yīng)的用戶可以執(zhí)行completeTask()結(jié)束任務(wù),并控制任務(wù)結(jié)束后流程實(shí)例向哪個(gè)方向前進(jìn)。
       jBPM中使用TaskService控制task的各項(xiàng)操作。

    5. Identity身份驗(yàn)證
       jBPM中的身份驗(yàn)證分為User, Group和Membership三部分,用戶表示登陸用戶,Group表示用戶組,用戶和用戶組之間的關(guān)聯(lián)關(guān)系保存在Membership中。User和Group與Task中的assignee和swimelane是息息相關(guān)的。
       
    6.事件
       Event反映的是流程執(zhí)行中的各個(gè)時(shí)刻。在流程執(zhí)行中 JBPM引擎會(huì)在計(jì)算下一個(gè)狀態(tài)的時(shí)候觸發(fā)各種事件。一個(gè)事件通常和流程定義中的一個(gè)元素相關(guān)聯(lián),比如流程定義本身,節(jié)點(diǎn)或者轉(zhuǎn)移。大部分的元素能夠觸發(fā)不同類型的事件,比如一個(gè)節(jié)點(diǎn)可以觸發(fā)節(jié)點(diǎn)進(jìn)入事件,節(jié)點(diǎn)離開事件。事件其實(shí)是和動(dòng)作連接在一起的。每個(gè)事件維護(hù)一個(gè)動(dòng)作列表。當(dāng)JBPM引擎觸發(fā)一個(gè)事件的時(shí)候,該事件維護(hù)的動(dòng)作列表中的動(dòng)作將被執(zhí)行。

    JBPM中事件類型是寫死在事件類中的,共有16種:
    EVENTTYPE_TRANSITION = "transition"; // 轉(zhuǎn)移
    EVENTTYPE_BEFORE_SIGNAL = "before-signal"; // 發(fā)信號(hào)前
    EVENTTYPE_AFTER_SIGNAL = "after-signal"; // 發(fā)信號(hào)后
    EVENTTYPE_PROCESS_START = "process-start"; // 處理開始狀態(tài)
    EVENTTYPE_PROCESS_END = "process-end"; // 處理結(jié)束狀態(tài)
    EVENTTYPE_NODE_ENTER = "node-enter"; // 進(jìn)入節(jié)點(diǎn)
    EVENTTYPE_NODE_LEAVE = "node-leave"; // 離開節(jié)點(diǎn)
    EVENTTYPE_SUPERSTATE_ENTER = "superstate-enter"; // 進(jìn)入超級(jí)狀態(tài)
    EVENTTYPE_SUPERSTATE_LEAVE = "superstate-leave"; // 離開超級(jí)狀態(tài)
    EVENTTYPE_SUBPROCESS_CREATED = "subprocess-created"; // 子流程創(chuàng)建
    EVENTTYPE_SUBPROCESS_END = "subprocess-end"; // 子流程結(jié)束
    EVENTTYPE_TASK_CREATE = "task-create"; // 任務(wù)創(chuàng)建
    EVENTTYPE_TASK_ASSIGN = "task-assign"; // 任務(wù)分派
    EVENTTYPE_TASK_START = "task-start"; // 任務(wù)啟動(dòng)
    EVENTTYPE_TASK_END = "task-end"; // 任務(wù)結(jié)束
    EVENTTYPE_TIMER = "timer"; // 定時(shí)器

    7.transition
       關(guān)聯(lián)兩個(gè)節(jié)點(diǎn),用于表示節(jié)點(diǎn)的走向

    8.常用類說明
       ProcessEngine:它是整個(gè)jBPM4的入口,并且是單例模式。通過它可以獲取processEngine,并藉此獲得工作流引擎所提供的各種服務(wù)
        
       RepositoryService:控制流程定義的發(fā)布,瀏覽,刪除等操作
        
       ExecutionService:控制流程實(shí)例的啟動(dòng),瀏覽,執(zhí)行,刪除等操作

       IdentityService:控制身份的各項(xiàng)操作

    *********************************************************************************************

    對(duì)jBPM4.3數(shù)據(jù)庫的幾張表簡(jiǎn)單介紹


    JBPM4_DEPLOYMENT   流程定義表 
    JBPM4_DEPLOYPROP 流程定義屬性表

    JBPM4_EXECUTION  流程實(shí)例表 
    JBPM4_HIST_ACTINST 流程活動(dòng)(節(jié)點(diǎn))實(shí)例表

    JBPM4_HIST_DETAIL  流程歷史詳細(xì)表

    JBPM4_HIST_PROCINST 流程實(shí)例歷史表

    JBPM4_HIST_TASK  流程任務(wù)實(shí)例歷史表 
    JBPM4_HIST_VAR  流程變量(上下文)歷史表

    JBPM4_ID_GROUP 角色表 
    JBPM4_ID_MEMBERSHIP 用戶角色表 
    JBPM4_ID_USER  用戶表 
    JBPM4_JOB  定時(shí)表 
    JBPM4_LOB  存儲(chǔ)表
     
    JBPM4_PARTICIPATION 參與者表 
    JBPM4_SWIMLANE  泳道表 
    JBPM4_TASK 任務(wù)表 
    JBPM4_VARIABLE 上下文表

    紅色的表為經(jīng)常使用的表.這里不使用JBPM自己的權(quán)限角色定義.

    發(fā)布一個(gè)流程deploy后
    jbpm4_deployment新增一條記錄
    jbpm4_deployprop新增三條記錄
    jbpm4_lob新增一條記錄

    開始一個(gè)流程startProcessInstanceByKey后
    jbpm4_execution新增一條記錄
    jbpm4_hist_actinst新增一條記錄
    jbpm4_hist_procinst新增一條記錄
    jbpm4_hist_task新增一條記錄
    jbpm4_task新增一條記錄

    流程定義相關(guān)的布署信息就存儲(chǔ)在(1) JBPM4_DEPLOYMENT、(2) JBPM4_DEPLOYPROP 及(3) JBPM4_LOB 中。上傳一個(gè)包含png和jpdl.xml的zip包后,JBPM4_DEPLOYMENT多一條記錄 JBPM4_DEPLOYPROP多三條, JBPM4_LOB多兩條。 
    (4)J B PM4_HIST_PROCINST 與(5) JBPM4_HIST_ACTINST 分別存放的是Process Instance、Activity Instance的歷史記錄。
    (6)JBPM4_EXECUTION 主要是存放JBPM4的執(zhí)行信息,Execution機(jī)制代替了JBPM3的Token機(jī)制(詳細(xì)參閱JBPM4的PVM機(jī)制,過段時(shí)間我也會(huì)進(jìn)一步分析)。
    (7)JBPM4_TASK 存放需要人來完成的Activities,需要人來參與完成的Activity 被稱為Task。
    (8)JBPM4_PARTICIPATION 存放Participation的信息,Participation的種類有Candidate、Client、Owner、 Replaced Assignee和Viewer。而具體的Participation既可以是單一用戶,也可以是用戶組。
    (9)JBPM4_SWIMLANE。 Swim Lane是一種Runtime Process Role。通過Swim Lane,多個(gè)Task可以一次分配到同一Actor身上。
    (10) JBPM4 _VARIABLE 存的是進(jìn)行時(shí)的臨時(shí)變量。
    (11) JBPM4_HIST_DETAIL 保存Variable的變更記錄。 
    (12)JBPM4_HIST_VAR 保存歷史的變量 。 
    (13) JBPM4_HIST_TASK Task的歷史信息。 
    (14)JBPM4_ID_GROUP (15)JBPM_ID_MEMBERSHIP (16)JBPM4_ID_USER 這三張表很常見了,基本的權(quán)限控制,關(guān)于用戶認(rèn)證方面建議還是自己開發(fā)一套,JBPM4的功能太簡(jiǎn)單了,使用中有很多需要難以滿足。 
    (17) JBPM4_JOB 存放的是Timer的定義。

    posted on 2011-04-16 12:55 paulwong 閱讀(1020) 評(píng)論(1)  編輯  收藏 所屬分類: JBPM

    Feedback

    # re: JBPM4中常用概念總結(jié) 2011-12-28 10:38 yknife

    都是一些需要自己整理的東西,樓主幫忙整理好了,LZ好人啊  回復(fù)  更多評(píng)論   


    主站蜘蛛池模板: 亚洲三级高清免费| 日韩免费高清一级毛片在线| 免费在线观看一区| 亚洲午夜久久久精品电影院| 国产精品亚洲A∨天堂不卡| 日本无卡码免费一区二区三区| 久久国产高潮流白浆免费观看| 一级做受视频免费是看美女| 亚洲AV无码AV吞精久久| 亚洲一区二区三区亚瑟 | 亚洲人成色99999在线观看| 亚洲av中文无码乱人伦在线r▽| 亚洲精品国产精品乱码不卞 | 亚洲AV日韩AV一区二区三曲| 亚洲一级毛片免观看| 亚洲精品国产专区91在线| 亚洲高清国产AV拍精品青青草原 | 日本免费A级毛一片| 国产精品成人69XXX免费视频| 国产天堂亚洲国产碰碰| 亚洲а∨精品天堂在线| 亚洲人成人网站18禁| 亚洲欧洲无卡二区视頻| 亚洲中文无码mv| 亚洲中文无码永久免| 亚洲第一成年免费网站| 亚洲а∨精品天堂在线| 国产综合成人亚洲区| 国产青草亚洲香蕉精品久久| 在线亚洲v日韩v| 污污视频网站免费观看| 乱淫片免费影院观看| 一区二区视频免费观看| 国产日韩精品无码区免费专区国产| 一区二区三区免费视频观看| 亚洲视频在线免费| 国产又黄又爽又大的免费视频| 日韩精品无码免费专区午夜不卡 | 亚洲视频在线观看地址| 亚洲女人初试黑人巨高清| 亚洲综合校园春色|