- 浏览: 270546 次
- 性别:
- 来自: 新乡
文章分类
- 全部博客 (227)
- servciemix (10)
- db (18)
- javaTools (4)
- hibernate (31)
- web (3)
- spring (14)
- design pattern (4)
- java security (3)
- portal (1)
- ejb (6)
- session (2)
- java_lang (21)
- jbpm (29)
- struts (7)
- orgRights (2)
- project manager Jira (7)
- 跨库事务 (2)
- mysql (14)
- ubuntu (7)
- osgi (9)
- maven ant make (4)
- 分布式 高并发 高性能 (5)
- virgo-dm_server (0)
- osgi web (3)
- platform (1)
- smooks (1)
- business (1)
- 职场生涯 (14)
- Java编码格式 (2)
- web服务 (1)
- 计算机使用 (1)
- 健康工作生活的保障,工作中务必抛掉的不良心态 (4)
- 电信-网络监控 (1)
- 多线程-multithread (1)
- 海量数据-高性能 (2)
- Mybatis (1)
- web开发平台研发 (0)
- oracle (0)
- 应用服务器调优 (0)
- web前端 (0)
- servlet-jsp (0)
- tomcat (2)
- newtouch (1)
- portal_liferay (2)
- version control (1)
- apm-impact (2)
- tools (1)
- 研发管理 (1)
- 电商业务 (1)
- 生鲜电商市场调查 (0)
- PBX (0)
- 房东 (0)
最新评论
-
lifuchao:
...
权限问题 -
Branding:
谢谢,受教了,另外,CONN AS SYSDBA,必须是在操作 ...
Oracle密码忘记了怎么办? -
zhuchao_ko:
...
Portal实现原理 -
败类斯文:
不知道改哪里。。。木有见到红色。。表示悟性低了、、
jira error: Neither the JAVA_HOME nor the JRE_HOME environment variable is defin -
c__06:
正文:假如事务我是这样定义的: <tx:method n ...
Spring中Transactional配置
jbpm6(2007-03-14 23:32:38)转载
JBPM流程通过Aciton动态创建TaskInstance来实现“会签”
关键字: JBPM 会签
昨天在Jbpm-inside群里面和大家讨论了在Jbpm流程中,如何实现“会签”的问题,最后得出了两种方案。今天就这两种思想中的一种:通过Aciton动态创建TaskInstance来实现“会签”,自己实现了一把,成功了!
1. 创建processDefinition.xml流程定义文件,如下:
代码
<?xml version="1.0" encoding="UTF-8"?>
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="webPay">
<swimlane name="PooledActors">
<assignment class="com.sky.plugin.jbpm.ActorHandel"></assignment>
</swimlane>
<start-state name="网上支付审批流程">
<transition name="开始" to="财务人员录入"></transition>
</start-state>
<task-node name="财务人员录入">
<task name="财务人员录入申报数据" swimlane="PooledActors"></task>
<transition name="主管会计复核" to="主管会计复核"></transition>
</task-node>
<task-node name="主管会计复核" signal="last-wait" create-tasks="false">
<task name="主管会计复核" swimlane="PooledActors"></task>
<event type="node-enter">
<action name="createInstance"
class="com.sky.plugin.jbpm.CreateTaskInstance">
</action>
</event>
<transition name="复核通过" to="领导审批"></transition>
<transition name="复核不通过" to="异常结束"></transition>
</task-node>
<task-node name="领导审批">
<task name="领导审批" swimlane="PooledActors"></task>
<transition name="同意" to="结束"></transition>
<transition name="不同意" to="异常结束"></transition>
</task-node>
<end-state name="结束"></end-state>
<end-state name="异常结束"></end-state>
</process-definition>
task-node"主管会计复核"则是我们需要进行会签的节点。在这个节点我们设置了几个重要的属性:
1) signal="last-wait",这个属性决定了该节点将在完成该节点内的所有Task的TaskInstance以后才会进入下一个节点。)
2) create-tasks="false",这个属性决定了在进入该节点的时候,不会自动为该节点的任何Task创建任何的TaskInstance。因为我们需要根据会签的人员来自己创建TaskInstance。
3) action,action的设定是为了,在Action中根据实际的情况来创建TaskInstance
2. 编写Action代码
代码
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
import org.jbpm.graph.exe.Token;
import org.jbpm.graph.node.TaskNode;
import org.jbpm.taskmgmt.def.Task;
import org.jbpm.taskmgmt.exe.TaskMgmtInstance;
public class CreateTaskInstance implements ActionHandler {
private static final long serialVersionUID = 1L;
public void execute(ExecutionContext executionContext) throws Exception {
Token token = executionContext.getToken();
TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance();
TaskNode taskNode = (TaskNode) executionContext.getNode();
Task task= taskNode.getTask("主管会计复核");
tmi.createTaskInstance(task, token)
.setPooledActors(new String[]{"1000"});
tmi.createTaskInstance(task, token)
.setPooledActors(new String[]{"1001"});
}
}
当然,在实际情况中.setPooledActors(new String[]{"100"})中设置的actor应该是动态指定的,这里为了简单方便就直接写入的固定值。
3.部署运行,OK!
注意:如果在给TaskInstance指定Actor的时候是使用.setActor()方法的话,那么在获取用户任务列表的时候用.findTaskInstances();如果是用.setPooledActors(),则需要使用.findPolledTaskInstance()方法。[list][/list]
JBPM流程通过Aciton动态创建TaskInstance来实现“会签”
关键字: JBPM 会签
昨天在Jbpm-inside群里面和大家讨论了在Jbpm流程中,如何实现“会签”的问题,最后得出了两种方案。今天就这两种思想中的一种:通过Aciton动态创建TaskInstance来实现“会签”,自己实现了一把,成功了!
1. 创建processDefinition.xml流程定义文件,如下:
代码
<?xml version="1.0" encoding="UTF-8"?>
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="webPay">
<swimlane name="PooledActors">
<assignment class="com.sky.plugin.jbpm.ActorHandel"></assignment>
</swimlane>
<start-state name="网上支付审批流程">
<transition name="开始" to="财务人员录入"></transition>
</start-state>
<task-node name="财务人员录入">
<task name="财务人员录入申报数据" swimlane="PooledActors"></task>
<transition name="主管会计复核" to="主管会计复核"></transition>
</task-node>
<task-node name="主管会计复核" signal="last-wait" create-tasks="false">
<task name="主管会计复核" swimlane="PooledActors"></task>
<event type="node-enter">
<action name="createInstance"
class="com.sky.plugin.jbpm.CreateTaskInstance">
</action>
</event>
<transition name="复核通过" to="领导审批"></transition>
<transition name="复核不通过" to="异常结束"></transition>
</task-node>
<task-node name="领导审批">
<task name="领导审批" swimlane="PooledActors"></task>
<transition name="同意" to="结束"></transition>
<transition name="不同意" to="异常结束"></transition>
</task-node>
<end-state name="结束"></end-state>
<end-state name="异常结束"></end-state>
</process-definition>
task-node"主管会计复核"则是我们需要进行会签的节点。在这个节点我们设置了几个重要的属性:
1) signal="last-wait",这个属性决定了该节点将在完成该节点内的所有Task的TaskInstance以后才会进入下一个节点。)
2) create-tasks="false",这个属性决定了在进入该节点的时候,不会自动为该节点的任何Task创建任何的TaskInstance。因为我们需要根据会签的人员来自己创建TaskInstance。
3) action,action的设定是为了,在Action中根据实际的情况来创建TaskInstance
2. 编写Action代码
代码
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
import org.jbpm.graph.exe.Token;
import org.jbpm.graph.node.TaskNode;
import org.jbpm.taskmgmt.def.Task;
import org.jbpm.taskmgmt.exe.TaskMgmtInstance;
public class CreateTaskInstance implements ActionHandler {
private static final long serialVersionUID = 1L;
public void execute(ExecutionContext executionContext) throws Exception {
Token token = executionContext.getToken();
TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance();
TaskNode taskNode = (TaskNode) executionContext.getNode();
Task task= taskNode.getTask("主管会计复核");
tmi.createTaskInstance(task, token)
.setPooledActors(new String[]{"1000"});
tmi.createTaskInstance(task, token)
.setPooledActors(new String[]{"1001"});
}
}
当然,在实际情况中.setPooledActors(new String[]{"100"})中设置的actor应该是动态指定的,这里为了简单方便就直接写入的固定值。
3.部署运行,OK!
注意:如果在给TaskInstance指定Actor的时候是使用.setActor()方法的话,那么在获取用户任务列表的时候用.findTaskInstances();如果是用.setPooledActors(),则需要使用.findPolledTaskInstance()方法。[list][/list]
发表评论
-
JBPM4的优秀博文链接
2011-08-31 22:39 13311 Jbpm4 IOC容器 http://www.it ... -
jbpm4 在tomcat6 下面ssh2 错误
2011-08-31 21:35 1003异常:java.lang.LinkageError: load ... -
JBPM4表结构说明
2011-07-23 00:33 1301JBPM4表结构说明 (2010-05-05 14:10:02 ... -
jbpm流程文件的部署
2011-07-23 00:32 1199jbpm流程文件的部署 (2010-05-05 14:51:5 ... -
BPM4.3总结二 Jbpm4.3使用文档
2011-07-23 00:30 1158JBPM4.3总结二 [此博文包含图片] (2010-05-0 ... -
JBPM4.3总结五 合同审批实例
2011-07-23 00:27 1364JBPM4.3总结五 [此博文包含图片] (2010-05-0 ... -
JBPM4.3总结四 2.9任务管理
2011-07-23 00:26 1065JBPM4.3总结四 (2010-05-05 11:53:32 ... -
JBPM4.3总结三 集成自定义用户表
2011-07-23 00:24 1580JBPM4.3总结三 (2010-05-05 11:54:56 ... -
swing 实现JBPM 4.2例子
2011-07-22 13:20 1042swing 实现JBPM 4.2例子 http://blo ... -
JBPM4.3之任务管理
2011-07-22 12:37 1082JBPM4.3总结四(2010-05-05 11:53:32) ... -
jbpm frequently used url
2011-06-29 12:19 10911. http://old.family168.com/bb ... -
jbpm4 和 spring 的集成
2011-06-29 11:37 840jbpm4 内置了和 spring 的集成支持, 配置很简单, ... -
任务提交后为什么JBPM4_HIST_VAR不存在值
2011-06-29 11:05 1502JbpmProcessEngineUtil.getExecut ... -
权限问题
2011-06-29 09:05 1240机构 与 权限关系表:机构拥有与之关联的权限 应用 与 权限 ... -
jBPM4的运行期环境
2011-06-29 08:52 689一、运行期环境就是一个餐馆 二、jBPM4的运行期环境 E ... -
Jbpm4.3连接数据库配置
2011-06-29 08:35 1315Jbpm4.3连接数据库配置 收藏 1、我以mysql为例子 ... -
jbpm4 有18张表,简单介绍如下
2011-06-29 08:33 1834jbpm4 有18张表,简单介绍如下: JBPM4_DEP ... -
Drools
2011-06-28 20:59 1284Drools - The Business Logic int ... -
Activiti BPM Platform
2011-06-28 20:58 1126Activiti BPM Platform http://a ... -
jbpm之6 JBPM流程通过Aciton动态创建TaskInstance来实现“会签”
2011-06-28 20:52 802jbpm6(2007-03-14 23:32:38)转载 ...
相关推荐
jbpm是一个开源的工作流管理框架,版本4.3提供了丰富的功能来支持复杂的企业流程,其中包括会签的实现。本文将深入探讨jbpm4.3如何实现会签功能,并分享相关的源码和工具使用。 1. jbpm4.3概述: jbpm4.3是jbpm的一...
通过学习"CountersignDemo"这个实例,你可以深入了解JBPM4.4的会签实现,包括如何设计流程、创建自定义活动、编写工具类以及如何在实际应用中部署和使用。这将有助于提升你对业务流程管理的理解,使你能更好地为企业...
在jBPM中,我们可以通过动态修改流程实例的结构来实现加签。例如,当一个特定条件满足时,我们的custom节点可以增加一个新的多实例任务,并将其分配给新添加的审批人。 减签则是在流程进行中,因为某些原因不再需要...
在jbPM中实现加签,可以通过动态修改任务参与者的方式来达成。这通常需要编写自定义服务任务或者监听器,当满足特定条件时,动态插入新的参与者到任务实例中。 4. **减签功能** 减签则是在流程进行中,某些审批者...
使用JBPM4.4,开发者可以设计复杂的审批流程,例如请假申请、报销审批等,通过图形化的流程设计器(Business Process Designer)创建流程模型。流程中的每个步骤可以关联到一个任务,任务可以分配给不同的角色或用户...
本文将深入探讨如何通过手工编码方式在JBPM中实现流程监控,包括如何监控已发布流程的状态、流程实例的动态以及任务实例的执行情况。 #### 一、理解流程监控的核心需求 流程监控的核心目标在于实时掌握系统内流程...
这个示例应用可以帮助初学者了解如何在实际项目中结合jbpm4和SSH来实现业务流程自动化,同时也为更复杂的BPM系统开发奠定了基础。通过学习和实践这个教程,开发者可以掌握如何将工作流管理融入到日常的Web应用中,...
这通常通过序列流(Sequence Flow)来实现,每个任务完成后,流程才会流转到下一个任务。 查询已办和待办任务是流程参与者日常操作的重要部分。jbpm提供了任务查询服务,可以基于各种条件(如任务状态、任务负责人...
6. **使用流程审计表**:JBPM的持久化机制会将流程实例和任务的状态记录在数据库的审计表中,可以通过查询这些审计表来获取流程的运行状态,从而实现监控。 7. **设计和实现监控服务**:创建一个独立的服务,该服务...
其次,创建流程定义(.bpmn文件)来描述会签流程。在这个流程中,可以设置多个并行的任务节点,每个节点代表一个会签的角色。通过使用边界事件和多实例任务,我们可以实现会签的逻辑。多实例任务允许我们指定一个...
6. **流程实例(Process Instance)与令牌(Token)**:jbpm中的每个流程执行实例都有一个与之关联的令牌,令牌在流程图中移动,代表了流程的当前状态。在并行网关中,令牌会复制,每个副本代表一个并行路径。 7. *...
在本项目中,你可以看到如何通过jbpm提供的工具或API创建请假流程的模型,包括请假申请、审批、驳回等步骤。 Struts2作为MVC框架负责处理用户请求,提供视图层和控制层的交互。Spring框架则用于依赖注入和事务管理...
这些节点的处理方式,例如如何通过decision条件或表达式进行决策,如何实现并行分支,如何结束流程实例等,都是jBPM流程设计的关键知识点。 自动活动(Automatic Activities)是流程中无需人工干预的部分,文档对于...
Raphael提供了一系列API,可以创建、移动、改变形状和颜色等,使得jbpm4.4能够动态生成和编辑流程图。 在jbpm4.4中设计流程图时,用户可以通过拖放操作添加各种流程元素,如开始事件、结束事件、任务和网关等。每种...
在jbpm中,"fork & join"机制是实现并行处理和流程控制的关键概念,尤其在处理会签(多个审批人同时参与审批)等场景时显得尤为重要。 "fork"在jbpm中指的是流程分支,当流程到达一个fork节点时,流程会分裂为多个...
在中文环境中,关于JBPM5.4的资料相对较少,因此,这套教程将深入探讨如何在国内没有中文文档支持的情况下,通过翻译英文文档和实际项目应用来掌握JBPM5.4的使用,确保开发者能够顺利地进行工作流开发。 **1. 安装...