MDA/MDD/TDD/DDD/DDDDDDD
          posts - 536, comments - 111, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          在jBPM中,任務(wù)的分配有兩種模式:

          1. 推(Push)模式??? 在這種模式下,系統(tǒng)計(jì)算出應(yīng)該由哪個(gè)參與者(actor)完成當(dāng)前任務(wù)(task),然后直接將此task送到該actor的任務(wù)列表中(tasklist);
          2. 拉(Pull)模式??? 在這種模式下,系統(tǒng)首先計(jì)算出應(yīng)該由哪個(gè)參與者池(pool of actors)完成當(dāng)任務(wù),并將該任務(wù)送入相應(yīng)的任務(wù)池中;然后,再由參與者池中的任一人將任務(wù)拉到自己的任務(wù)列表中。

          參與者池與角色、用戶組的差異

          一般的應(yīng)用中,角色與用戶組的概念比較常見,而參與者池則不常見。

          針對(duì)一個(gè)Task一般會(huì)有多個(gè)可能的操作,而不同的角色有可能有權(quán)限進(jìn)行其中的一部分或全部操作。所以,不同角色有可能屬于相同的參與者池,一個(gè)角色也有可能被加入到多個(gè)參與者池中。

          一 般用戶組是按組織架構(gòu)進(jìn)行劃分的,在同一個(gè)用戶組可能會(huì)有多個(gè)不同的角色,或者具有不級(jí)別的權(quán)限。即使將同一角色、具有同一級(jí)別權(quán)限的用戶劃分為一組,也 不能回避具有更高級(jí)別權(quán)限的用戶操作低級(jí)別工作任務(wù)項(xiàng)的情形。另一方面,在Multi-Entity架構(gòu)下,也存在跨Entity操作的情形。

          總而言之,參與者池是區(qū)別于按角色、按組織進(jìn)行劃分的、一種特別的用戶分組方法。換言之,參與者池其實(shí)也是可以預(yù)先定義的。

          何時(shí)進(jìn)行任務(wù)分配計(jì)算

          既然參與者池是可以預(yù)見的,那么在“拉模式”下,何時(shí)進(jìn)行任務(wù)分配計(jì)算呢?

          毫無疑問,在工作流系統(tǒng)中,計(jì)算是在任務(wù)狀態(tài)轉(zhuǎn)換時(shí)自動(dòng)完成的。(當(dāng)然,相對(duì)于應(yīng)用的事務(wù)提交,工作流的這些操作都可以是異步完成的。)

          因些,“拉”的含義,不是在用戶刷新任務(wù)列表時(shí)才去計(jì)算他/她的所有工作項(xiàng);恰恰相反,無論是“拉”或是“推”,工作流系統(tǒng)其實(shí)都預(yù)先計(jì)算好了參與者的任務(wù)列表或可以從中挑選任務(wù)的“任務(wù)池”。

          jBPM參與者池的數(shù)據(jù)庫設(shè)計(jì)

          jbpmtask.jpeg
          jbpm_taskinstance與jbpm_pooledactor是典型的“多對(duì)多”的關(guān)系,中間通過jbpm_taskactorpool拆分成兩個(gè)“一對(duì)多”。
          原文:http://dayubian.spaces.live.com/blog/cns!9E5A349DF844201E!365.entry


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 德保县| 舞阳县| 江口县| 左权县| 北安市| 三河市| 铁岭市| 濮阳市| 历史| 克什克腾旗| 吉木乃县| 五常市| 呼和浩特市| 黄石市| 都匀市| 屯昌县| 隆子县| 石嘴山市| 昭觉县| 洛阳市| 鱼台县| 永春县| 高平市| 富民县| 团风县| 额济纳旗| 敦煌市| 安溪县| 古浪县| 洪泽县| 文昌市| 黄陵县| 武汉市| 博白县| 唐山市| 六安市| 东乡县| 无棣县| 巩义市| 常宁市| 滁州市|