使用jBpm支持高级用户交互模式
2010-01-21 00:00:00 来源:WEB开发网实现四眼原则
我们上面已经说过,实现四眼原则意味着要允许多人同时干一个活。它的实现有以下几种可能方法:
在任务外解决:需要大量时间的任务并行循环(parallel looping) 。
使用动作处理器(Action handler):附加到任务节点的进入事件(enter event),基于流程实例变量创建多个节点实例。
在任务内解决:引入“任务接受量(task take)”(类似jPDL 4)并允许某个任务实例可被接受多次。
根据jBPM最佳实践 ——“扩展jBPM API而不是去搞复杂的流程建模” ,我决定采用任务内解决的方法。这就要求修改jBPM提供的任务和任务实例类。
扩展Task类
jBPM任务的定义被包含在org.jbpm.taskmgmt.def.Task类中。为了支持四眼原则,我们需要给类增加以下的字段/方法(清单1):
protected int numSignatures = 1;
public int getNumSignatures(){
return numSignatures;
}
public void setNumSignatures(int numSignatures){
this.numSignatures = numSignatures;
}
清单1 给Task类增加字段和方法
这个新的参数允许指定任务完成所需的任务处理人数量。缺省值为1,这意味着,只有1个用户应该/可以处理这个任务。
jBPM使用Hibernate来向数据库保存和读取数据。为了让我们新加的变量持久化,我们需要更新Task类的Hibernate配置文件(Task.hbm.xml),它在org.jbpm.taskmgmt.def文件夹中,增加代码如下(清单2)
<property name="numSignatures" column="NUMSIGNATURES_" />
更多精彩
赞助商链接