posts - 193,  comments - 520,  trackbacks - 0

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

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

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

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

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

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

          當(dāng)對任務(wù)進行分配時,一般需要實現(xiàn)AssignmentHandler這個接口,這個接口的方法只有一個:
            void assign( Assignable assignable, ExecutionContext executionContext ) throws Exception;
          一個典型的實現(xiàn)(把名字是'change nappy'的任務(wù)交給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的具體實現(xiàn)類也是兩個
            swimlaneInstancehe和taskInstance。這樣就不不難理解整個任務(wù)分配流程了:
            1、流程進入TaskNode節(jié)點,執(zhí)行TaskNode類的execute()方法,該方法首先獲得TaskMgmtInstance實例,然后通過它來創(chuàng)建TaskInstance。taskMgmtInstance.createTaskInstance(task, executionContext);
            2、在上面的createTaskInstance(task, executionContext)里,該方法調(diào)用了taskInstance.assign(executionContext)對taskInstance進行分配。
            3、在assign(executionContext)方法里,首先會判斷task屬性里是否存在swimlane,如果有的話,這個taskInstance就會分配給swimlane指定的ActorId或 PooledActors;如果不存在,再去找task屬性里 assignmentDelegation(分配代理類)通過代理類(即我們自己寫的實現(xiàn)AssignmentHandler這個接口的類)指定ActorId或 PooledActors。



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

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

          關(guān)注工作流和企業(yè)業(yè)務(wù)流程改進。現(xiàn)就職于ThoughtWorks。新浪微博:http://weibo.com/ronghao100

          常用鏈接

          留言簿(38)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          常去的網(wǎng)站

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 辉南县| 大姚县| 榆树市| 得荣县| 鄢陵县| 阳江市| 盖州市| 河池市| 涞源县| 湖北省| 环江| 开封市| 金平| 基隆市| 江津市| 柞水县| 同仁县| 台中县| 永新县| 南城县| 页游| 镇康县| 都江堰市| 瑞丽市| 高邮市| 原平市| 卓尼县| 贺州市| 陆丰市| 阿图什市| 麦盖提县| 绥芬河市| 亚东县| 托克逊县| 全南县| 都江堰市| 叶城县| 阳曲县| 汝南县| 花垣县| 古田县|