- 浏览: 316023 次
- 性别:
- 来自: 重庆
文章分类
- 全部博客 (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 1139public class JbpmFacadeImpl ext ... -
二十五、将JBPM集成到基于SSH的OA系统中
2012-11-15 22:43 939具体步骤如下: -
二十四、如何给角色分配任务,而且拥有此角色的用户必需要通过n个人的审批之后才能继续往下?
2012-11-15 21:33 788解决方案: 1、 在一个node-enter ... -
二十三、如何给角色分配任务,而且拥有此角色的用户只要有一个用户审批通过就可以继续往下
2012-11-13 14:41 779解决方案: 首先,是基于前一个解决方案,我们自己来给 ... -
二十二、如何给角色分配任务,而且拥有此角色的用户均需审批通过之后才能继续往下?
2012-11-13 14:18 853解决方法: * 在一个n ... -
二十一、如何在Jbpm的各种Handler中访问spring的bean
2012-11-13 11:42 1076import org.springframe ... -
二十、如何给角色分配任务
2012-11-13 11:12 1166实现AssignmentHandler接口,在接口的实现方法中 ... -
十九、会签(通过PooledActors或者在一个TaskNode中定义多个Task)来实现
2012-11-09 17:15 1022如何实现多人会签,而且只要其中一个人审批通过就继续往下? ... -
十八、自定义VariableResolver
2012-11-09 16:50 1048<decision name="decisio ... -
十七、Decision节点和DecisionHandler的使用
2012-11-09 16:15 1050<?xml version="1.0& ... -
十六、流程相关的用例图、流程图
2012-11-08 17:29 1000部署流程: ... -
十五、从中间的TaskNode节点出发如何得到下一步可选路径列表
2012-11-06 16:12 834在上一节中说到: Set&l ... -
十四、从起点(StartState)出发,如何得知下一步可选的路径列表
2012-11-06 11:59 1036<process-definition name=&q ... -
十三、Fork和Join节点的基本用法
2012-11-06 10:48 1085<?xml version="1.0&qu ... -
十二、查询公文流转到哪个节点
2012-11-06 10:43 980//得到流程流转到的当前节点 @Test ... -
十一、流程流转
2012-11-06 10:43 963提交公文到下一个节点(本节点不是开始节点) pr ... -
十、查询某个用户的公文列表
2012-11-05 10:27 872private void printTask(JbpmCont ... -
九、提交公文
2012-11-05 10:29 793//将公文提交到第一个环节 @Test ... -
八、创建公文
2012-11-05 10:29 8251、创建公文对象 public ... -
七、部署流程
2012-11-05 10:28 893测试代码如下: //部署流程定义:根据流程 ...
相关推荐
在JBPM4.4版本中,我们可以看到一个具体的请假流程示例,该示例包含了实现回退功能的完整代码和Jar包,便于开发者理解和学习。 1. **流程设计** JBPM使用BPMN2.0(Business Process Model and Notation)标准进行...
标题中的“JBPM4.4实现一种无需指定上一节点(previous activity)的流程驳回(回退)”是指在使用JBPM(Java Business Process Management)4.4版本时,设计了一个特殊的流程控制机制,允许用户在执行流程过程中进行回...
"JBPM7基础开发" JBPM7 基础开发是基于流程引擎的开发方式和实现方式的简单说明。流程引擎是一个自动化管理和优化流程的工具,旨在提高不同部门之间业务的整合效率,降低开发和维护成本。 概念1:BPM(业务流程...
本文将深入探讨如何在JOffice2中实现JBPM4任务的回退功能,这在处理复杂流程时尤其重要,允许用户纠正错误或根据需要调整流程方向。 任务回退在JOffice2中有两种主要的实现方式: 1. **完成当前任务并生成新的后退...
5. **异常处理**:在整个过程中,可能出现拒绝申请、补充材料等异常情况,jbpm提供灵活的分支和回退机制,可以处理这些异常。 **jbpm关键概念** - **流程定义(Process Definition)**:描述了业务流程的结构和...
9. **错误处理和补偿**:jbpm支持异常处理和流程回退,允许在流程执行中处理错误,并通过补偿任务修复流程状态。 10. **持续集成与自动化测试**:通过Maven或Gradle等构建工具,可以设置持续集成流程,同时编写测试...
9. **异常处理与回退**:jbpm允许定义异常处理和回退策略,当流程执行过程中遇到问题时,可以根据预设规则进行错误恢复或流程回滚。 10. **持久化与事务管理**:jbpm使用JPA(Java Persistence API)进行数据持久化...
FixFlow不仅支持常见的工作流功能,如加签、会签、回退等“中国式工作流”,而且提供了更为友好的用户界面和更完善的本地化支持。 #### 五、总结 综上所述,JBPM与Activiti各有千秋,在不同的应用场景下展现出不同...
- **回退机制**: 提供流程回退功能,以便于错误恢复。 #### 四、案例分析 ##### 4.1 报销流程示例 - **流程设计**: 包括提交申请、部门经理审核、财务复核等环节。 - **实现代码**: 使用Java代码实现流程启动、...
- **流程执行**: 支持并发、分支、循环等复杂流程结构,以及异常处理和回退机制。 - **任务管理**: 包括任务的分配、领取、委托和监控。 - **规则集成**: 集成了Drools规则引擎,使得流程可以根据业务规则动态变化...
例如,它未直接支持“回退”、“取回”、“会签”、“委派”等功能,这些在中国被认为是常见的业务场景。然而,通过深入理解jbpm的架构和设计思路,开发者可以探索并实现这些特定需求的解决方案,以满足中国特色的...
4. **流程执行与控制**:学习如何启动流程实例、完成任务、处理异常以及进行流程的回退和分支。 5. **jbpm集成**:jbpm可与多种技术栈集成,如Spring、Hibernate等。教程可能包含如何将jbpm嵌入到现有的Java应用中...
7. **异常处理**:掌握如何在流程中处理异常情况,如错误处理、回退机制等。 总之,【jbpm4.4 demo】是一个宝贵的学习资源,对于想要理解和应用jbpm的开发者来说,它可以提供实践操作的经验,帮助他们更好地理解和...
8. **流程实例的控制和调试**:API提供了丰富的功能,如挂起、激活、回退和跳过流程节点,这对于测试和调试流程行为至关重要。 9. **规则引擎集成**:JBPM集成了Drools规则引擎,允许在流程中嵌入复杂的业务规则。...
jbPM 支持错误处理和异常回退策略,当流程执行过程中发生问题时,可以设定相应的错误处理节点,确保流程能够优雅地恢复或终止。 **10. 集成与扩展** jbPM 可以与其他Java企业级技术无缝集成,如Spring、Hibernate等...
在报销申请的场景中,我们还需要考虑异常处理,比如审批不通过时如何回退到上一步,或者在等待审批期间如何暂停流程。Jbpm支持条件分支、事件监听、定时器等特性,使得流程设计更加灵活。 总的来说,Jbpm通过流程...
- **异常处理与回退策略**:阐述如何处理流程中的异常情况,以及如何定义回退步骤。 - **报表与监控**:展示如何利用jBPM提供的工具监控流程实例的状态,生成业务报告。 - **案例研究**:提供实际应用场景,帮助理解...
JBPM通过其事件处理机制,支持在流程定义中直接使用特殊的Transition来处理任务回退。这种做法允许流程设计者为每个任务定义明确的回退路径,从而能够实现复杂和多层次的任务回退逻辑。这样不仅提高了任务回退的灵活...
5. **异常处理与回退**: jBPM支持异常处理和流程回退机制,当流程执行中出现问题时,可以有策略地处理。 通过以上内容,你可以对jBPM有一个基本的认识,并开始在Eclipse环境下进行jBPM的开发。记得,实践是检验真理...