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 |