JBPM4.4动态创建的节点,如何服务器重启的情况下还能继续操作

mycol 2013-06-19
动态创建一个任务节点,等待用户提交时,服务器重新启动了,然后此节点就找不到了,怎么实现呢,请大家帮忙想想法子
comsci 2013-06-19
想办法把节点存储在XML文件里面。。。
mycol 2013-06-20
这样一是不好存储,二是存储了会不会引起版本的更新,三是监控容易出错

还有其他法子么?
freezingsky 2013-07-11
jbpm3.x的时候,倒是可以动态创建结点和路径,4.x的就不清楚了。
imatrix开发平台 2013-07-15
在iMatrix开发平台中有实现取回、退回、环节跳转功能,用到了动态创建节点技术。环节跳转功能的代码实现如下:
//将jbpm跳转到taskName环节
processEngine.execute(new GetBackCommand(instance.getProcessInstanceId(),taskName));
参数说明:instance.getProcessInstanceId():流程实例id,String类型的
  taskName:跳转到的环节名称
当调用了该方法后,jbpm就会完成当前环节的任务,并自动进监听类,例如:办理人设置监听、流向流转监听,之后流程就会进入跳转到的环节,并给相应的办理人生成任务。
GetBackCommand类是自己实现的,用于动态创建流向、任务等,其部分代码实现如下:

//查询execution中的当前任务并完成它
Task task = engine.getTaskService().createTaskQuery().processInstanceId(execution.getProcessInstance().getId()).activityName(execution.getActivityName()).uniqueResult();
if(task==null){
Execution tempExecution = execution.findActiveExecutionIn(execution.getActivityName());
if(tempExecution==null)return null;//并发时返回null engine.getExecutionService().signalExecutionById(tempExecution.getId(),DYNAMIC_TRANSITION_NAME);
}else{
engine.getTaskService().completeTask(task.getId(), DYNAMIC_TRANSITION_NAME);
}

具体实现请参考iMatrix开发平台的源码https://github.com/norteksoft/5.2.0.RC/tree/master/iMatrix/imatrix-mysql-5.2.0.RC/src/main/java/com/norteksoft/wf/engine/core中的GetBackCommand.java
Global site tag (gtag.js) - Google Analytics