com.sky.plugin.jbpm.def.DynamicCreateTaskInstance
代码
public class DynamicCreateTaskInstance implements ActionHandler {
private static final long serialVersionUID = 1L;
public void execute(ExecutionContext context) throws Exception {
ProcessDefinition processDefinition = context.getProcessDefinition();
TaskNode taskNode = (TaskNode) context.getNode();
Task task = (Task)taskNode.getTasks().iterator().next();
Long processDefinitionId = processDefinition.getId();
Long taskId = task.getId();
Token token = context.getToken();
TaskMgmtInstance tmi = context.getTaskMgmtInstance();
//获取自定义的进行会签的人员
ServiceFactory serviceFactory = ServiceFactory.getInstance();
ProcessService ps = serviceFactory.getProcessService();
String[] actors = ps.loadTaskActors(processDefinitionId, taskId);
//根据会签人员,每人创建一个TaskInstance
for(String actor : actors){
tmi.createTaskInstance(task, token).setActorId(actor);
}
}
}
com.sky.plugin.jbpm.def.ConuntersignActionHandler
代码
public class ConuntersignActionHandler implements ActionHandler {
private static final long serialVersionUID = 1L;
@SuppressWarnings("unchecked")
public void execute(ExecutionContext context) throws Exception {
Token token = context.getToken();
TaskMgmtInstance tmi = context.getTaskMgmtInstance();
Collection<TaskInstance> unfinishedTasks = tmi
.getUnfinishedTasks(token);
Object variable = context.getVariable("selectedTransition");
String selectedTransition;
if (variable == null) {
throw new RuntimeException(
"Jbpm transition error: user selected transition is null!");
} else {
// 获取当前TaskInstance选择的路径
selectedTransition = variable.toString();
}
// 如果用户选择的路径是流程定义中制定的不通过的路径,则自动完成余下所有的会签Task并转到相应路径
if (selectedTransition.equals("拒绝到复核人")) {
for (TaskInstance unfinishedTaskInstance : unfinishedTasks) {
// 把被结束的没有完成的TaskInstance的ActorId改为automatic complete
if (!unfinishedTaskInstance.hasEnded()) {
unfinishedTaskInstance.setActorId("automatic complete");
unfinishedTaskInstance.end("拒绝到复核人");
}
}
}
}
}
这个类对于会签是至关重要的,要通过这个Action来判断会签的情况。在这个Action中有这样几句代码:
代码
Object variable = context.getVariable("selectedTransition");
String selectedTransition;
if (variable == null) {
throw new RuntimeException(
"Jbpm transition error: user selected transition is null!");
} else {
// 获取当前TaskInstance选择的路径
selectedTransition = variable.toString();
}
其中的selectedTransition是用户选择的路径,也就是通过这个来判断会签的用户选择了“同意”或者“拒绝到复核人”,你可以通过流程变量的形式来保存。
如果“同意”,则继续下去,直到该TaskNode中所有的TaskInstance完成以后,通过会签,继续下去,如果选择“拒绝到复核人”,则会自动完成余下的所有TaskInstance,然后转到Transition“拒绝到复核人”,会签不通过。
其中有一句,设置所有自动完成的TaskInstance的Actor为“automatic complete”,这个可以解决在“以办事务”中出现自动完成的任务(TaskInstance)
代码
unfinishedTaskInstance.setActorId("automatic complete");
到这里整个会签的实现都在这里了,行文有点乱。哈哈!
分享到:
相关推荐
jbpm5是一款非常著名的工作流管理系统,其源代码的开放为开发者提供了深入理解工作流引擎运作机制的机会。jbpm5的核心在于提供一个可扩展且灵活的业务流程管理平台,允许开发者设计、执行、管理和监控业务流程。以下...
JBPM5表结构 亲手整理, H2转换成SQL SERVER
"【转载 见附件】纵观jBPM:从jBPM3到jBPM5以及Activiti5" 这个标题表明这是一个关于jBPM发展历程的综合分析,涵盖了从jBPM3到jBPM5的变迁,并且提到了Activiti5,这是一款与jBPM相关的流程管理框架。标题暗示了文章...
JBPM5是一款强大的工作流管理系统,它基于BPMN2.0标准,用于设计和实现复杂的业务流程。BPMN2.0是一种业务流程建模符号语言,它为业务分析师和开发人员提供了一种标准化的方式来描述和交流业务流程。在JBPM5中,设计...
### 工作流系统技术选型可行性分析:JBPM4与JBPM5 #### 一、引言 在数字化转型的背景下,工作流系统成为提高组织效率的关键技术之一。医院作为一个复杂的组织机构,其内部流程的优化对于提升服务质量至关重要。...
**jBPM5 用户手册-中文版** jBPM5 是一个开源的工作流管理系统,它提供了业务流程管理(BPM)和工作流解决方案,帮助企业或组织实现自动化的工作流程。这个用户手册是专为中文使用者设计的,旨在帮助他们更好地理解...
jbpm5是一个强大的工作流管理系统,它主要用于设计、执行和管理业务流程。在这个主题中,我们将深入探讨jbpm5的持久化机制以及流程的流转过程。 首先,让我们了解持久化在jbpm5中的作用。持久化是将数据保存在持久...
5. **数据存储**:JBPM使用持久化机制保存流程实例、任务、变量等信息,通常与数据库集成,如JPA或Hibernate。 6. **监控和管理**:提供仪表盘和API,可以实时监控流程执行情况,对流程实例进行管理和控制。 7. **...
高昂的成本门槛和对 BPM 点解决方案的关注导致开发者选择避开 BPM 的复杂性和风险,转而将状态和业务逻辑直接编码到企业应用中。 #### 二、jBPM 的诞生及其意义 **jBPM** 是一款开源 BPM 框架,由 JBoss 开发并...
然而,随着jBPM创始人Tom Baeyens离开JBoss,jBPM5的开发方向发生了转变,它完全放弃了jBPM4的基础,转而基于Drools Flow重新构建。 Tom Baeyens的离职催生了另一个重要项目——Activiti5,这是一个基于jBPM4的...
5. **表结构详解** - **JBPM4_DEPLOYMENT**:存储流程部署的信息,如部署ID、时间戳和部署的元数据。 - **JBPM4_DEPLOYPROP**:关联部署的属性,如流程定义的版本号。 - **JBPM4_EXECUTION**:表示流程实例,记录...
【JBPM web(SSH+JBPM)例子】是一个基于Java技术栈实现的工作流管理系统示例,其中SSH代表Spring、Struts和Hibernate这三个流行的Java企业级开发框架的组合,而JBPM则是Business Process Management(业务流程管理...
jbpm是一款开源的工作流管理系统,主要面向Java开发者,它提供了强大的流程定义和执行能力,帮助企业或组织实现自动化的工作流程。jbpm-2.0-beta1是该系统的早期版本,其核心功能包括工作流引擎、流程建模工具以及一...
5. **jBPM关键概念**: - **流程定义**:预先定义的业务流程逻辑。 - **流程实例**:业务的实际执行过程。 - **参与者**:执行任务的个体或系统。 - **活动(任务)**:流程中的操作节点。 - **活动实例**:...
### JBPM数据库表结构详解 #### 一、概述 JBPM是Java Business Process Model的缩写,是一款开源的工作流引擎,用于实现业务流程管理和自动化的工具。JBPM的设计旨在简化复杂的业务流程,使得非技术人员也能够理解...
5. **异常处理**:在整个过程中,可能出现拒绝申请、补充材料等异常情况,jbpm提供灵活的分支和回退机制,可以处理这些异常。 **jbpm关键概念** - **流程定义(Process Definition)**:描述了业务流程的结构和...
5. 应用与优化:将学到的知识应用到实际项目中,不断优化和改进工作流程。 jbpm4.4的学习不仅限于技术层面,还需要理解业务流程管理的理论和最佳实践。因此,在学习过程中,不仅要关注技术细节,还要思考如何将jbpm...
5. **org.jbpm.api.client**: 提供客户端API,如`ClientExecution`、`ClientProcessDefinition`和`ClientProcessInstance`,允许远程操作流程实例。这些类提供了开始、结束、挂起、恢复等流程控制功能。 6. **org....
jbpm3.2是流行的Java业务流程管理(BPM)平台的一个版本,可用于设计、执行和管理企业级业务流程。本文主要围绕jbpm3.2在开发过程中的关键概念、组件、API使用以及配置等知识点进行总结。 首先,了解jbpm3.2需要...
本文主要探讨的是如何将jBPM(一个开源的工作流管理系统)集成到Tomcat应用服务器,并连接MySQL数据库进行数据存储。jBPM是一个强大的业务流程管理(BPM)和工作流系统,它提供了完整的工具集来设计、部署和执行业务...