posts - 26,  comments - 7,  trackbacks - 0
          作者: 我想我是海 

          1概述
          一個流程定義是對一個業務流程的正式說明,以及它是基于有向圖的。該圖是結點(node)與流向(transition)的組合。圖中每一個結點都是一個特殊的類型,結果的類型決定了該結點的運行時的行為。一個流程定義有且僅有一個開始狀態。
          一個令牌(token)是執行的軌跡。令牌是一個運行時的概念,其維護著速個圖中指向結點的指針。
          一個流程實例(process instance),是流程定義的一次執行過程。當流程實例被創建 ,一個令牌被創建,該令牌叫做這個流程實例的根令牌并處于這個流程實例的開始狀態。
          信號(signal)命令令牌繼續執行,當接收到一個未命名的信號時,一個令牌將通過默認的“離開流向”離開當前結點,如果該信號有明確命名,令牌將通過指定的流向離開該結點。給流程實例發送命令是由令牌來代理。
          當令牌進入結點后,結點會被執和,結點本身負頁讓流程繼續,而讓流程繼續就是讓令牌離開當前結點,每個結點類型可以實現不同的動作來讓流程繼續。一個結點如果不繼續執行則可以看作是一個狀態。
          動作(Action)是在執行流程的時候事件觸發執行的Java代碼,圖是軟件需求的重要表達方式,但是圖只是一個軟件的視圖,它隱藏了許多技術的細節。動作就是把技術細節隱藏在圖以外的一種 機制。動作可以裝飾圖。主要的事件有:進入一個結點,離開一個結點,開始一個流向等。

          2流程圖
          流程定義的基本設施是由結點及流向組成的圖。那些信息是由一個叫processdefinition.xmlXML文件來定義的,每個結點有自已的類型,如狀態、選擇、分支、合并。每個結點有自已的流向集,每個流向有其唯一的名稱。如,下面一幅圖是一個JBAY拍賣流程的流程圖:

          下面是其對應的processdefinition.xml

          代碼
          1. <process-definition>  
          2.   
          3.   <start-state>  
          4.     <transition to="auction" />  
          5.   </start-state>  
          6.      
          7.   <state name="auction">  
          8.     <transition name="auction ends" to="salefork" />  
          9.     <transition name="cancel" to="end" />  
          10.   </state>  
          11.      
          12.   <fork name="salefork">  
          13.     <transition name="shipping" to="send item" />  
          14.     <transition name="billing" to="receive money" />  
          15.   </fork>  
          16.      
          17.   <state name="send item">  
          18.     <transition to="receive item" />  
          19.   </state>  
          20.   
          21.   <state name="receive item">  
          22.     <transition to="salejoin" />  
          23.   </state>  
          24.      
          25.   <state name="receive money">  
          26.     <transition to="send money" />  
          27.   </state>  
          28.   
          29.   <state name="send money">  
          30.     <transition to="salejoin" />  
          31.   </state>  
          32.      
          33.   <join name="salejoin">  
          34.     <transition to="end" />  
          35.   </join>  
          36.      
          37.   <end-state name="end" />  
          38.      
          39. </process-definition>  
          <script type="text" />render_code();</script>

          3結點
          流和圖由結點及流向組成,更多的圖及執行模型,見第四章,面向圖形編程。
          結點有類型,結點的類型決定了在運行時,執行進入到一個結點時發生的事情。JBPM有一系列的預置結點類型供我們使用。同時,你可以自已定義自已的結點類型。

          3.1結點的責任
          結點有兩個主要的責任,一,可以執行Java代碼,通常這些Java代碼與該結點的功能有點,如創建一個任務實例,發送一個通知,更新數據庫,二,結點負責傳播流程,即使流程可繼續執行,概括地說,結點在傳播流程時有下面一些選項:
          * 1 不傳播流程,這種情況下該結點表現為一個等待狀態。
          * 2 執行其中一個流向,流開當前結點。也就是說令牌在進入該結點的時候被程序要求執行一個流向流開:executionContext.leaveNode(String)。該結點表現為自動結點,它可以執行一些自定義邏輯并且繼續流程而不需要等待。
          *3 創建新的執行軌跡,結點可以決定創建新的令牌。每一個新令牌代表一個新的執行軌跡且可以在結點的流向中加載。一個好的示例就是分支結點。
          *4 執行軌跡的結束點。結點可以決定結束一個執行軌跡。意味著令牌被終止、執行軌跡完成。
          *5 通常,結點可以改變流程的整個運行時結構,運行時結構是指包括一系列的品樹形分布的令牌。每個令牌代表一條執行軌跡,結點創建或結束令牌,通過流向把令牌放到一個結點
          JBPM包括 -- 像所有的工作流和BPM引擎一樣-- 一系列的預置的結點類型,有文檔描述
          它們的配置和行為。但是JBPM和面向圖形編程基金會最難得的一點是我們對開發者開放模型,開發者可以自定義結點行為并易于在流程中使用。
          傳統的工作流和業務流程管理系統很相像的時,他們通常提供合適的結點集合(稱為流程語言),他們的流程語言是封閉的,并且執行模型是隱藏在運行環境之后。查找工作流模式結果表明,光有流程語言是不足夠的。我們選擇一種簡單的模型并允許開發者寫自已的結點類型。JPDL流程語言是開放的。

          posted on 2007-09-11 13:27 jbpm 閱讀(730) 評論(0)  編輯  收藏 所屬分類: jbpm概念
          主站蜘蛛池模板: 怀安县| 新蔡县| 永清县| 正阳县| 泰宁县| 凤庆县| 安吉县| 尼木县| 若羌县| 洪洞县| 库伦旗| 沽源县| 天镇县| 巴里| 济宁市| 桃园市| 红河县| 云龙县| 大关县| 长岛县| 华安县| 辽宁省| 舟曲县| 娄底市| 平顺县| 兴义市| 常州市| 扶绥县| 东辽县| 平凉市| 枣阳市| 阿合奇县| 宣城市| 仲巴县| 乌兰县| 凉城县| 鄂尔多斯市| 津市市| 武功县| 都兰县| 富蕴县|