posts - 193,  comments - 520,  trackbacks - 0

          一個Task instance(任務實例)可以被分配給一個actorId (java.lang.String)。所有的Task instance都被保存在數據庫中的表jbpm_taskinstance里。當你想得到特定用戶的任務清單時,你就可以通過一個與用戶關聯的actorId來查詢這張表。

          一個流程定義有一個TaskMgmtDefinition;一個TaskMgmtDefinition對應多個swimlane,同時對應多個task;一個swimlane有多個task,可以  TaskMgmtDefinition中通過task的名稱直接獲取相應的task;

          swimlane對象有四個屬性,分別是name(名字)、assignmentDelegation(分配代理類)、taskMgmtDefinition、tasks(Set 對應多個task),可以增加task

          task對象主要的屬性:taskMgmtDefinition、swimlane、assignmentDelegation、taskNode,需要注意的是swimlane和assignmentDelegation中間只是可以一個屬性有值,因為它們都和任務的分配有關系。

          一個流程實例有一個TaskMgmtInstance;一個TaskMgmtInstance對應多個swimlaneInstance,同時對應多個taskInstance;一個swimlaneInstance有多個taskInstance,可以從TaskMgmtInstance中直接獲取相應的taskInstance;

          swimlaneInstance對象主要有五個屬性,分別是name、actorId、pooledActors(Set)、swimlane、taskMgmtInstance。
          taskInstance對象的主要屬性:name、actorId、task、swimlaneInstance、taskMgmtInstance、pooledActors。

          當對任務進行分配時,一般需要實現AssignmentHandler這個接口,這個接口的方法只有一個:
            void assign( Assignable assignable, ExecutionContext executionContext ) throws Exception;
          一個典型的實現(把名字是'change nappy'的任務交給NappyAssignmentHandler這個類來分配)
             <task name='change nappy'>
                <assignment class='org.jbpm.tutorial.taskmgmt.NappyAssignmentHandler' />
             </task>
          NappyAssignmentHandler類:
            public void assign(Assignable assignable, ExecutionContext executionContext) {
              assignable.setActorId("papa");
            }
          同樣,Assignable只是一個接口,它有兩個方法:setActorId()和setPooledActors(),Assignable的具體實現類也是兩個
            swimlaneInstancehe和taskInstance。這樣就不不難理解整個任務分配流程了:
            1、流程進入TaskNode節點,執行TaskNode類的execute()方法,該方法首先獲得TaskMgmtInstance實例,然后通過它來創建TaskInstance。taskMgmtInstance.createTaskInstance(task, executionContext);
            2、在上面的createTaskInstance(task, executionContext)里,該方法調用了taskInstance.assign(executionContext)對taskInstance進行分配。
            3、在assign(executionContext)方法里,首先會判斷task屬性里是否存在swimlane,如果有的話,這個taskInstance就會分配給swimlane指定的ActorId或 PooledActors;如果不存在,再去找task屬性里 assignmentDelegation(分配代理類)通過代理類(即我們自己寫的實現AssignmentHandler這個接口的類)指定ActorId或 PooledActors。



          http://www.aygfsteel.com/ronghao 榮浩原創,轉載請注明出處:)
          posted on 2005-11-11 16:39 ronghao 閱讀(3517) 評論(3)  編輯  收藏 所屬分類: 工作流jbpm3

          FeedBack:
          # re: jbpm任務分配管理
          2005-11-30 01:31 | jk
          g  回復  更多評論
            
          # re: jbpm任務分配管理
          2006-11-19 04:09 | kuan
          jbpm的每個流程變更的話,是不是都要重新寫action來適應的?  回復  更多評論
            
          # re: jbpm任務分配管理
          2007-06-08 00:29 | L2
          學習。。。  回復  更多評論
            
          <2005年11月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          關注工作流和企業業務流程改進。現就職于ThoughtWorks。新浪微博:http://weibo.com/ronghao100

          常用鏈接

          留言簿(38)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          常去的網站

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 南澳县| 宿迁市| 五莲县| 图们市| 高碑店市| 大同县| 蒙山县| 永清县| 临湘市| 盐源县| 连南| 伊通| 萨迦县| 麦盖提县| 基隆市| 寻甸| 汉源县| 永川市| 临桂县| 商城县| 伊宁县| 礼泉县| 商水县| 黄大仙区| 磐石市| 山东| 甘泉县| 长丰县| 河北区| 个旧市| 天全县| 河间市| 临朐县| 泾阳县| 海伦市| 大余县| 洪湖市| 徐闻县| 布拖县| 清新县| 新田县|