使用jBpm支持高级用户交互模式
2010-01-21 00:00:00 来源:WEB开发网清单9 Assignee类的Hibernate映射文件
要让jBPM能够使用我们的自定义任务实例实现,我们还需要提供一个自定义的任务实例工厂(清单10)。
package com.navteq.jbpm.extensions;
import org.jbpm.graph.exe.ExecutionContext;
import org.jbpm.taskmgmt.TaskInstanceFactory;
import org.jbpm.taskmgmt.exe.TaskInstance;
public class AssignableTaskInstanceFactory implements TaskInstanceFactory {
private static final long serialVersionUID = 1L;
@Override
public TaskInstance createTaskInstance(ExecutionContext executionContext) {
return new AssignableTaskInstance();
}
}
清单10 自定义的任务实例工厂
最后,为了让jBPM运行时使用正确的任务实例工厂(清单10),还必须创建一个新的jBPM配置(清单11)。
<jbpm-configuration>
<bean name="jbpm.task.instance.factory"
class="com.navteq.jbpm.extensions.AssignableTaskInstanceFactory" singleton="true"
/>
</jbpm-configuration>
清单11 jBPM配置
完成所有这些变更之后(清单1-11),一个典型的任务处理显示如下:
List<String> actorIds = new LinkedList<String>();
actorIds.add("Peter");
List<TaskInstance> cTasks = jbpmContext.getGroupTaskList(actorIds)
TaskInstance cTask = cTasks.get(0);
AssignableTaskInstance aTask = (AssignableTaskInstance)cTask;
try{
aTask.reserve("Peter");
// Save
jbpmContext.close();
}
catch(Exception e){
System.out.println("Task " + cTask.getName() + " is already reserved");
e.printStackTrace();
}
更多精彩
赞助商链接