jBPM 是一個非常優秀的開源工作流引擎,雖然他不是一個一站式的工作流平臺,不過它已經為我們提供了比較豐富的底層操作,為了滿足特定的項目需求,我們一般需要對其進行二次開發,才能適用于具體的業務需求。
其中一個主要的擴展點是針對 TaskNode 進行的用戶的分配。TaskNode 是 jBPM 中一個非常重要的概念,一個任務節點可以包含若干個任務,不同的任務可以由不同的人來完成,任務實例被分配給 actorId 來完成,其中指定到人的分配工作就是 Assignment 要處理的,這也是我們需要定制的功能,為了實現用戶的分配,我們需要實現 AssignmentHandler 接口,接口原型如下。
public interface AssignmentHandler extends Serializable {
void assign(Assignable assignable, ExecutionContext executionContext) throws Exception;
}
通常用代碼實現的話,我們可以讓一個類實現這個接口,并在 swimlane 或者 tasknode 中的 assignment 指定該類。但是,這樣的靈活性是顯然不夠的,在系統的使用過程中,分配策略會不斷的進行調整,因此我們需要更為靈活的解決方案,jBPM 本身可以使用基于 Bean Shell 的腳本來寫分配策略,但是 Bean Shell 不是那么強大,我們需要更為強大的解決方案,因此,我們選用了已經被 JBoss 收為旗下的 JBoss Drools 4.0 規則引擎 (在 3.0 的時候曾經改名為 JBoss Rules,4.0 又改回來了)
完整版本請查看:http://www.steadyxp.com/archives/120.html
posted on 2008-09-05 15:29
steady 閱讀(2312)
評論(0) 編輯 收藏 所屬分類:
Java