- 浏览: 304942 次
- 性别:
- 来自: 重庆
文章分类
- 全部博客 (286)
- 设计模式 (14)
- spring (5)
- 开发工具 (12)
- java (19)
- apache.commons工具 (7)
- ibaits (5)
- extjs4.0 (4)
- 数据库 (2)
- spring工具类 (2)
- jquery1.8 (32)
- 杂记 (1)
- linux (2)
- Quart (1)
- springMVC (2)
- webservice (1)
- oracle (5)
- dwr (6)
- jbmp3 (27)
- lucene3.5 (27)
- javascript (18)
- hibernate3.3.2 (27)
- spring事务管理 (10)
- nio (2)
- strust2 (3)
- jvm (7)
- jquery-easyui-1.2.6 (22)
- 多线程 (14)
- maven (3)
- 常用正则表达式 (4)
最新评论
-
HF_SKY000:
请问:
一、能否提供一下密钥库文件的生成方法?
二、密钥库的密 ...
Java sslSocket 聊天实例
要实现JBPM的任务回退很简单,只要对JBPM中的2个表进行修改,这2个表分别是:
jbpm_token和jbpm_taskinstance,对应类是org.jbpm.graph.exe.Token和
org.jbpm.taskmgmt.exe.TaskInstance.
修改方法:
将已经完成的任务实例jbpm_taskinstance表中的2个字段修改:issuspended_=0和
isopen_=0,将start_=null和end_=null这2个字段改不改都可以 我自己是另外用一个业务表来记录任务处理时间的
这样就能将已经完成的实例重开
还要修改的表就是jbpm_token中的node_字段,这里要将你所回退到的节点的ID写进去,进行数据库的更新。
这2个表对应的2个方法分别是getTokenForUpdate和getTaskInstanceForUpdate。
jbpm没将任务回退直接写成Java方法,估计是怕不同人有不同的需求,感觉如果将jbpm的表结构如果能全了解,那样要根据自己需求自己扩展就很简单了。
多分支回退功能实现思路
在流程派发界面增加一个“回退按钮”,回退按钮仅能实现逐步回退,即回退到上一步;
如想实现多步回退,建议采用决策节点进行实现;
点击按钮后,系统进行如下判断:
首先需要了解当前节点的上一节点类型{
根据当前节点id(nodeid)查询JBPM_TRANSITION表,获得from信息;{
select name_,from_ as 上一节点id from JBPM_TRANSITION where PROCESSDEFINITION_ = ? and TO_ = ?[当前节点id]
}
select class_ from JBPM_NODE where id_ = 上一节点id
}
如果是开始节点(node class is R)则不允许
如果是普通节点(node class is K){
@todo:
1,将当前任务实例设置成完成状态(update JBPM_TASKINSTANCE set END_ = GETDATE(),ISOPEN_=0,ISSIGNALLING_=0 where id_ = ?;)
2,将上一节点对应的任务实例设置成未完成状态(
根据节点id获得任务id;
update JBPM_TASKINSTANCE set END_ = null,ISOPEN_=1,ISSIGNALLING_=1 where TOKEN_=? and TASK_ = ?;
)
3,将token移动到上一节点上(update JBPM_TOKEN set NODE_ = 1492 where ID_ = ?[tokenid];)
4,保存退回意见;操作JBPM_VARIABLEINSTANCE表{
INSERT INTO JBPM_VARIABLEINSTANCE
([CLASS_] -- 固定值
,[NAME_] --固定值
,[TOKEN_] --token id
,[PROCESSINSTANCE_] -- 流程实例id
,[STRINGVALUE_] -- name_ == 'operatorId' ? '当前登录人id' : '审批意见'
,[TASKINSTANCE_]) -- 当前任务实例id
VALUES
('S','operatorId',?,?,?,?) --记录操作人
,('S','comment',?,?,?,?) --记录操作人填写的审批意见
}
}
如果是汇聚节点(node class is J){
@todo:
1,查询汇聚节点的来源节点(select name_,from_ from JBPM_TRANSITION where PROCESSDEFINITION_ = ? and TO_ = ?)
2,将"必须执行"的节点结果集显示在界面上供用户选择(支持多选){
1,根据from_获得task_id(select * from JBPM_TASK where TASKNODE_ = ?[from_];)
2,检查节点是否必须执行(select if_must_approve[1必须0不必须] from wf_taskuser where task_id_ = ? and prcessinstance_id_ = ?)
}
3,用户选择预回退的节点后点击确认操作,系统做如下处理{
1,将当前任务实例设置成完成状态[同上]
2,获得所选节点信息
3,将获得的所有节点信息对应的任务实例设置成未完成状态[同上]
4,将token[子token]移动到每个所选节点上(update JBPM_TOKEN set NODE_ = ?[所选节点id],ISABLETOREACTIVATEPARENT_ = 1 where ID_ = ?[子tokenID];)
5,保存退回意见[同上]
}
}
如果是分支节点(node class is F){
@todo:
如果是汇聚节点,那么此操作一定发生在分支上且是其中一分支发起的回退操作;
首先系统提示操作者,此回退操作会自动设置所有分支中的任务实例状态为已完成;
确定操作后,token会回到汇聚节点处;
1,提示用户此操作的下场是什么
2,根据token查询所有子token(select ID_ from JBPM_TOKEN where PARENT_ = ?)
3,查询所有子token对应的任务实例(select * from JBPM_TASKINSTANCE where TOKEN_ in (select ID_ from JBPM_TOKEN where PARENT_ = ?))
4,将所有任务实例设置成完成状态
5,找到分支节点的上一节点并将对应的任务实例设置成未完成状态{
1,select from_ as 上一节点id from JBPM_TRANSITION where PROCESSDEFINITION_ = ? and TO_ = ?[当前节点id];
2,update from_对应的任务实例为未完成状态[同上]
}
6,将token(父亲)移动到分支节点的上一个节点上{
1,找到分支节点的上一节点[同上]
2,update JBPM_TOKEN set NODE_ = ?[from_] where ID_ = ?[tokenid];
}
6,保存退回意见[同上]
}
如果是决策节点(node class is D){
@todo:
1,将当前任务实例设置成完成状态
2,找到决策节点的上一节点并将对应的任务实例设置成未完成状态
3,将token移动到决策节点的上一节点
4,保存退回意见
}
发表评论
-
二十六、JbpmFacade简单实现
2012-11-16 10:30 1117public class JbpmFacadeImpl ext ... -
二十五、将JBPM集成到基于SSH的OA系统中
2012-11-15 22:43 909具体步骤如下: -
二十四、如何给角色分配任务,而且拥有此角色的用户必需要通过n个人的审批之后才能继续往下?
2012-11-15 21:33 765解决方案: 1、 在一个node-enter ... -
二十三、如何给角色分配任务,而且拥有此角色的用户只要有一个用户审批通过就可以继续往下
2012-11-13 14:41 755解决方案: 首先,是基于前一个解决方案,我们自己来给 ... -
二十二、如何给角色分配任务,而且拥有此角色的用户均需审批通过之后才能继续往下?
2012-11-13 14:18 826解决方法: * 在一个n ... -
二十一、如何在Jbpm的各种Handler中访问spring的bean
2012-11-13 11:42 1007import org.springframe ... -
二十、如何给角色分配任务
2012-11-13 11:12 1118实现AssignmentHandler接口,在接口的实现方法中 ... -
十九、会签(通过PooledActors或者在一个TaskNode中定义多个Task)来实现
2012-11-09 17:15 945如何实现多人会签,而且只要其中一个人审批通过就继续往下? ... -
十八、自定义VariableResolver
2012-11-09 16:50 983<decision name="decisio ... -
十七、Decision节点和DecisionHandler的使用
2012-11-09 16:15 1021<?xml version="1.0& ... -
十六、流程相关的用例图、流程图
2012-11-08 17:29 937部署流程: ... -
十五、从中间的TaskNode节点出发如何得到下一步可选路径列表
2012-11-06 16:12 789在上一节中说到: Set&l ... -
十四、从起点(StartState)出发,如何得知下一步可选的路径列表
2012-11-06 11:59 957<process-definition name=&q ... -
十三、Fork和Join节点的基本用法
2012-11-06 10:48 1031<?xml version="1.0&qu ... -
十二、查询公文流转到哪个节点
2012-11-06 10:43 931//得到流程流转到的当前节点 @Test ... -
十一、流程流转
2012-11-06 10:43 881提交公文到下一个节点(本节点不是开始节点) pr ... -
十、查询某个用户的公文列表
2012-11-05 10:27 845private void printTask(JbpmCont ... -
九、提交公文
2012-11-05 10:29 769//将公文提交到第一个环节 @Test ... -
八、创建公文
2012-11-05 10:29 7911、创建公文对象 public ... -
七、部署流程
2012-11-05 10:28 854测试代码如下: //部署流程定义:根据流程 ...
相关推荐
包含Jar包,实现回退功能,可以运行,不喜勿喷
JOffice2中的JBPM4的任务回退实现
简单描述流程引擎相关概念和以jbpm7为基础的开发方式和实现方式做简单的说明
NULL 博文链接:https://eminemning.iteye.com/blog/875250
业务流程执行:流程的启动、任务的提交、回退、撤销、取回、处理任务等操作、 实用需求实现:执行权限、工作流留痕、事务提醒 只需一套实现,你的业务只要在挂接中配置则可以具有工作流功能 业务方面:OA项目实战...
业务流程执行:流程的启动、任务的提交、回退、撤销、取回、处理任务等操作、 实用需求实现:执行权限、工作流留痕、事务提醒 只需一套实现,你的业务只要在挂接中配置则可以具有工作流功能 业务方面:OA项目实战
在开源工作流JBPM 的基础上,利用其特有的事件处理机制,提出了实现任务 回退,任务催办和会签任务等特殊工作流的方法,提高了开发效率并具有良好的灵活性,满 足了实际项目开发的需要。
任意回退、会签(包括加、减签,补签)、撤销(又叫回退)、自由流(又叫动态路由)。此处之所以叫做灵活的临时动态性需求
包括用户登录、流程部署、启动、删除、回退、审批、流程跟踪等功能,
jbpm-执行器用于调度 BPM 请求的 Executor 组件可用的功能。 线程池。 重试机制失败回退要运行简单的示例/演示,请移至 src/test/java 并执行 NoCDIExecutorTest
介绍了国内目前的工作流领域特点,尤其对临时动态性需求(会签、撤销、任意回退等)的各种场景进行了分析,提出了基于jBPM4的解决思路及一种动态路由的方法,以解决临时回退的问题。
20.流程任务逐步回退处理(任务追回及多驳回 ) 21.流程自由跳转 22.流程跳转业务规则设置 23.多级分发任务与任务汇总 24.会签(并行与串行)、补签及投票处理 25.流程版本变更管理 26.流程催办(基于MQ短信及邮件...
流程支持会签、并签、自由指派、自由回退、取回、代理等,并在每个审批节点都可以植入Java代码,实现任何业务需求,提供多种报表实时监控。 技术实现非常适合与研究GWT的人,有GWT的自定义控件、GWT与Spring集成、...
3.4.3回退处理 36 3.4.4自由流 36 3.4.5代理/代办 37 3.4.6异常处理 38 4.实验设计:基于JBPM的工作流管理系统 38 4.1 JBPM的简单介绍 38 4.2 需求 39 4.2.1 总体需求 39 4.2.2 功能需求 40 4.3 设计与实现 44 4.3.1...
提供流程定义、流程设置、流程版本更变,流程任务管理,流程实例管理,流程表单管理,流程表单在线义、模板表单,流程历史查询,查看我的任务,任务回退等丰富流程开发管理。 9 人力管理 10 报表管理 11 公文管理 ...