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概念
          主站蜘蛛池模板: 石狮市| 中方县| 泽库县| 盱眙县| 海淀区| 菏泽市| 兰州市| 临江市| 陆川县| 石屏县| 璧山县| 白河县| 玉屏| 青海省| 蒙自县| 浏阳市| 焦作市| 翁牛特旗| 乌鲁木齐县| 南皮县| 浦县| 泽州县| 长沙市| 赞皇县| 信阳市| 西宁市| 金寨县| 天全县| 准格尔旗| 双牌县| 平安县| 饶阳县| 常熟市| 浮梁县| 晋宁县| 石渠县| 开阳县| 富源县| 老河口市| 弥渡县| 华容县|