BlogJava 聯(lián)系 聚合 管理  

          Blog Stats

          隨筆檔案

          文章檔案


          gyl868

          2009年8月8日 #

          一 : 重要概念

          1 : process definition(流程定義):

                   工作流的流程的完整定義,包括節(jié)點(diǎn)和節(jié)點(diǎn)之間的走向等關(guān)鍵信息。通常以xml格式提供。一個(gè)具體的系統(tǒng)往往是由許多個(gè)流程組成的。

          2 : process instance(流程實(shí)例):

                   每個(gè)process defination生成的業(yè)務(wù)層的實(shí)例。當(dāng)process instance創(chuàng)建以后,代表流程的執(zhí)行路徑,并被定義到開始節(jié)點(diǎn)。


          3  : token(令牌):

                   表示了一個(gè)執(zhí)行的路徑,它是運(yùn)行時(shí)產(chǎn)生的。當(dāng)實(shí)例建立以后,令牌也就產(chǎn)生了。

          4 : node:

                   表示流程中的一個(gè)節(jié)點(diǎn)。

          5 : transition:

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

          6 : signal:

                   讓一個(gè)token執(zhí)行下一步。process instance也有signal,當(dāng)用process instance的signal時(shí),其實(shí)就是運(yùn)行process instance根令牌(root token)的signal.   當(dāng)token進(jìn)入到一個(gè)node時(shí),node會被執(zhí)行,并產(chǎn)生一些事件,比如進(jìn)入、離開節(jié)點(diǎn)等,這也是執(zhí)行業(yè)務(wù)邏輯的地方。事件由action來表示。
           

          7 : 事件Event 

          Event反映的是流程執(zhí)行中的各個(gè)時(shí)刻。在流程執(zhí)行中JBPM引擎會在計(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í)是和動作連接在一起的。每個(gè)事件維護(hù)一個(gè)動作列表。當(dāng)JBPM引擎觸發(fā)一個(gè)事件的時(shí)候,該事件維護(hù)的動作列表中的動作將被執(zhí)行。

          事件類型

          在JBPM中事件類型是寫死在事件類中的,共有16種:

          EVENTTYPE_TRANSITION = "transition"; // 轉(zhuǎn)移
          EVENTTYPE_BEFORE_SIGNAL = "before-signal"; // 發(fā)信號前
          EVENTTYPE_AFTER_SIGNAL = "after-signal"; // 發(fā)信號后
          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)入超級狀態(tài)
          EVENTTYPE_SUPERSTATE_LEAVE = "superstate-leave"; // 離開超級狀態(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ù)啟動
          EVENTTYPE_TASK_END = "task-end"; // 任務(wù)結(jié)束
          EVENTTYPE_TIMER = "timer"; // 定時(shí)器



          二 : 常用 API


          ProcessInstance是ProcessDefinition的一個(gè)執(zhí)行實(shí)例,想象一下對于訂票流程,每個(gè)客戶的訂票動作都會根據(jù)訂票流程定義而創(chuàng)建一個(gè)流程實(shí)例,也就是執(zhí)行實(shí)例ProcessInstance.當(dāng)一個(gè)ProcessInstance被創(chuàng)建后,負(fù)責(zé)執(zhí)行主路徑的token也被創(chuàng)建,這個(gè)token就是根token(root token),根token此時(shí)位于流程定義的開始狀態(tài)start state.

          創(chuàng)建執(zhí)行實(shí)例很簡單有2種方式 :

          1 : 通過 ProcessDefinition 類的 createProcessInstance() 方法

          //得到 processDefinition 
          ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("processdefinition.xml");
          //通過 processDefinition 創(chuàng)建 出 processInstance
          ProcessInstance  processInstance = processDefinition.createProcessInstance();

          2 :通過 ProcessInstance 類的  構(gòu)造函數(shù)

          //得到 jbpmContext
          JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();

          //得到 processDefinition
          ProcessDefinition processDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition("baoxiao");

          //得到 processInstance
           ProcessInstance processInstance = new ProcessInstance(processDefinition);
          posted @ 2009-08-08 22:52 gyl868 閱讀(116) | 評論 (0)編輯 收藏

          僅列出標(biāo)題  
          主站蜘蛛池模板: 宾阳县| 桐城市| 邓州市| 扶沟县| 宣武区| 南部县| 黄大仙区| 读书| 本溪市| 金华市| 莱州市| 偃师市| 平原县| 万载县| 溧水县| 方正县| 饶河县| 乌鲁木齐县| 庄河市| 噶尔县| 永城市| 龙泉市| 吴堡县| 山东省| 洛扎县| 上饶市| 沙雅县| 中牟县| 互助| 淮安市| 连州市| 金山区| 沙洋县| 长武县| 海林市| 崇明县| 吉安市| 西平县| 庆云县| 京山县| 栖霞市|