- 浏览: 94980 次
- 来自: ...
最新评论
-
gongcheneric:
如果我是要在一个局域网内的某台电脑上修改其他电脑(已知电脑的I ...
java 修改系统时间 -
lijunlong:
...
java 修改系统时间 -
jljf_hh:
喔,了解一下,正好没时间研究这东西呢.哈哈
JBPM阶段性工作总结 -
yuyanshan:
你好,我也是这们做的不,不过我还不明白怎么处理任务,我是这样想 ...
会签实现
同fork等一样是一种节点类型。任务节点是jbpm中一个非常重要的概念,一个任务节点可以包含若干个任务(开始状态start-state只能有一个任务),不同的任务可以由不同的人来完成,任务实例被分配给actorId来完成。
任务实例有几个状态:创建、开始、结束,这些信息存在JBPM_TASKINSTANCE中。
常用的方法:
分派任务(指定处理人)-TaskInstance.assign(String)
根据处理人查找任务实例-TaskMgmtSession.findTaskInstancesByActorId(…)
任务创建-TaskMgmtInstance.createTaskInstance(…)
任务开始-TaskInstance.start()
任务结束TaskInstance.end(…)
任务可以被指定一个优先级,这个优先级在任务的实例创建时将被作为每个任务实例的初始优先级,任务实例的初始优先级可以在以后被修改。
如果多于一个任务实例与一个任务节点关联,流程开发者可以指定任务实例的完成怎样影响流程的继续。下面是可以给任务节点的signal属性设置的值:
l last:这是默认值。当最后一个任务实例完成时继续执行;当在节点入口处没有任务创建时,继续执行。
l last-wait:当最后一个任务实例完成时继续执行;当在节点入口处没有任务创建时,执行在任务节点等待,直到任务被创建。
l first:当第一个任务实例完成时继续执行;当在节点入口处没有任务创建时,继续执行。
l first-wait:当第一个任务实例完成时继续执行;当在节点入口处没有任务创建时,执行在任务节点等待,直到任务被创建。
l unsynchronized:总是继续执行,不管任务是否创建和完成。
l never:执行不再继续,不管任务是否创建和完成。
你可以在流程定义文件中定义任务,也可以在代码中定义:
public class CreateTasks implements ActionHandler {
public void execute(ExecutionContext executionContext) throws Exception {
Token token = executionContext.getToken();
TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance();
TaskNode taskNode = (TaskNode) executionContext.getNode();
Task changeNappy = taskNode.getTask("change nappy");
// 现在, 相同任务的两个任务实例被创建
tmi.createTaskInstance(changeNappy, token);
tmi.createTaskInstance(changeNappy, token);
}
}
在Jbpm中,可以结合使用推模式和拉模式的任务分配。流程可以计算任务的责任人,并把它推到他/她的任务清单里;或者,任务可以被分配到参与者池,这种情况下,池中的每个参与者都可以拉出任务并把它放入参与者的个人任务清单。
推模式:Assignable.setActorId(String actorId);TaskMgmtSession.findTaskInstances(String actorId)
拉模式:Assignable.setPooledActors(String[] actorIds);TaskMgmtSesion.findPooledTaskInstances(String actorId);TaskMgmtSession.findPooledTaskInstances(List actorIds)
为了防止多个用户在同一个共享任务上工作,使用用户的actorId修改任务实例的actorId就可以了。这样,任务实例将不会出现在共享任务清单中,而只会存在于用户个人的任务清单里。设置任务实例的actorId为空(null),则会把任务实例放回共享任务里。
任务实例可以拥有它自己的变量,并且也可以“看到”流程变量。
这里使用的是默认的控制器,也可以定义自己的控制器
-- here goes your task controller handler configuration --
任务有四个标准的事件类型定义:task-create,task-assign,task-start,和task-end。
<?xml version="1.0" encoding="UTF-8"?>
<process-definition xmlns="" name="yytest">
<swimlane name="banker">
<assignment expression="user(ernie)"/>
</swimlane>
<swimlane name="casher">
<assignment expression="user(bert)"/>
</swimlane>
<start-state name="start">
<transition name="" to="charge"/>
</start-state>
<task-node name="charge" signal="first">
<task name="bank" swimlane="banker"/>
<task name="cash" swimlane="casher"/>
<transition name="" to="end"/>
</task-node>
<end-state name="end"/>
</process-definition>
private static void run()...{
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
try ...{
long processInstanceId =1;
processInstance = jbpmContext.loadProcessInstance(processInstanceId);
Token token = processInstance.getRootToken();
System.out.println(token.getNode());
token.signal();
System.out.println(token.getNode());
List casherTasks = jbpmContext.getTaskMgmtSession().findTaskInstances("ernie");
TaskInstance cashertaskInstance = (TaskInstance)casherTasks.get(0);
cashertaskInstance.start();
cashertaskInstance.end();
System.out.println(token.getNode());
jbpmContext.save(processInstance);
}finally ...{
jbpmContext.close();
}
}
-------------------------------------------------
输出结果
StartState(start)
TaskNode(charge)
EndState(end)
发表评论
-
节点描述
2008-08-07 21:59 1150对jBPM来讲,工作流由一 ... -
sample
2008-08-07 21:12 872xml配置 <start-state ... -
controller
2008-07-31 20:44 890controller(控制器) \28在任务执行时,可能需要 ... -
exception-handler
2008-07-31 20:43 1820exception-handler 异常处理 jbpm异常 ... -
spring和jbpm事务一致性
2008-07-31 20:24 2807关于jbpm和spring结合的事务问题: 当JBPM使用sp ... -
知识点
2008-07-31 10:25 893Node Type ... -
ssh-jbpm发布遇到的问题
2008-07-30 10:04 15191.自己输入http://localhost:8080/ssh ... -
发布jbpm示例shipping遇到的问题
2008-07-28 18:09 10351 jstl和jsp2.0版本问题 <%@taglib ... -
jbpm解析流程定义
2008-07-27 19:25 991jbpm解析流程定义有三种方式:1)par包static Pr ... -
Jbpm学习知识点
2008-07-26 21:32 1086如何运行Jbpm的示例程序?如何部署Jbpm?如何安装Jbp ... -
会签实现
2008-07-26 21:28 1397转载自http://tomkoo.iteye.com/blog ... -
Tomcat+mysql 配置
2008-07-26 09:24 1386JBoss JBPM 实践系列(一)--- 安装配置(Tomc ... -
业务流程设计
2008-07-26 09:01 1686转载自http://linliangyi2007.iteye. ... -
jBPM相关概念
2008-07-26 08:25 826转载自http://fndcz.iteye.com/blog/ ... -
jbpm资源
2008-07-26 07:59 811ant和发布 http://fndcz.iteye.com/ ... -
jbpm任务分配分析
2008-07-26 07:53 2180jbpm任务分配分析 任务 ... -
JBPM源码浅析
2008-07-26 07:40 1098转载自 http://zwchen.iteye.com/blo ... -
JBPM阶段性工作总结
2008-07-26 07:37 1517转载自http://zwchen.iteye.co ... -
eclipse的jbpm插件配置
2008-07-25 17:36 4710eclipse版本3.2.2 1. jbpm插件从jbpm-s ...
相关推荐
1、流程进入TaskNode节点,执行TaskNode类的execute()方法,该方法首先获得TaskMgmtInstance实例,然后通过它来创建TaskInstance。taskMgmtInstance.createTaskInstance(task, executionContext); 2、在上面的...
vue节点教程
JBPM_TASK JBPM_TASK FK_TASK_TASKNODE TASKNODE_ 一个NODE可以有多个TASK JBPM_TASK JBPM_TASK FK_TASK_STARTST STARTSTATE_ 一个开始节点可以对应多个TASK JBPM_LOG JBPM_LOG FK_LOG_SOURCENODE SOURCENODE_ ...
vue-task-node ...import {TaskNode, TaskNodeStore} from 'vue-task-node' import 'vue-task-node/dist/css/vnode.css' Vue.config.productionTip = false Vue.use(TaskNode) Vue.use(Vuex) const sto
关于JBPM中并发子流程的实现方式,网上有很多的说法,但是好像每种办法都有这样那样的缺点,要么实现太复杂,...这里我介绍一种我的并发子流程的实现方式:使用TaskNode使任务并行的方式,模拟实现JBPM子流程的并发执行
作业处理器中的所有内容均来自TaskNode。 总体轮廓是创建一个请求以启动该过程。 然后,流程创建一个执行上下文,该上下文在流程的生命周期内从一个节点流向另一个节点。 通过生成错误或通过请求取消可以停止流。 ...