在定义流程模板的时候同样可以定义一个自己的类来做任务分配器的功能,在代码中分配任务执行者。分配器类需要实现AssignmentHandler(org.jbpm.api.task.AssignmentHandler)接口。
流程图雷同,xml描述如下:
<?xml version="1.0" encoding="UTF-8"?>
<process name="TaskAssignmentHandler" xmlns="http://jbpm.org/4.4/jpdl">
<start name="start1" g="173,51,48,48">
<transition name="to task1" to="task1" g="-52,-22" />
</start>
<task name="task1" g="151,157,92,52">
<assignment-handler class="myHandler.AssignmentHandler">
<field name="name">
<string value="liuyan" />
</field>
</assignment-handler>
<transition name="to state1" to="state1" g="-56,-22" />
</task>
<state name="state1" g="155,268,92,52" />
</process>
而myHandler.AssignmentHandler代码如下
package myHandler;
import org.jbpm.api.model.OpenExecution;
import org.jbpm.api.task.Assignable;
/**
* 任务分配处理器
*
* @author liuyan
*
*/
public class AssignmentHandler implements org.jbpm.api.task.AssignmentHandler {
String name;
@Override
public void assign(Assignable assignable, OpenExecution execution)
throws Exception {
// 设置任务分配者
assignable.setAssignee(name);
}
}
name的值是被注入的,根据注入的name的值将任务指定给它。
测试代码如下:
/**
* 指派任务的所有人
*/
public void test02AssigneeTask() {
// 开始process流程
ProcessInstance processInstance = executionService
.startProcessInstanceByKey("TaskAssignmentHandler");
// 流程实例的ID
String pid = processInstance.getId();
System.out.println(pid);// forkjoin.10001
}
/**
* 按用户名查找
*/
public void test03FindTaskes(){
List<Task> taskList = taskService.findPersonalTasks("liuyan");
for (Task task : taskList) {
System.out.println(task.getAssignee());
}
}
当查找结果时候,会发现liuyan用户拥有一个待处理的任务。当然在分配器类中还可以自己写更复杂的业务判断来指定给相关人员处理Task。
分享到:
相关推荐
【JBPM4 学习使用总结】 JBPM4 是一个开源的工作流管理系统,它提供了完整的工作流生命周期管理,包括设计、部署、执行和监控。在深入学习和使用JBPM4的过程中,我们可以了解到它的一些核心特性以及如何有效地利用...
- 描述了jBPM4的核心组件——进程引擎的作用和功能。 - 进程引擎负责解析流程定义,并驱动流程实例的执行。 - **5.3 部署流程** - 介绍了如何将定义好的流程部署到jBPM环境中。 - 包括上传文件、配置参数等步骤...
【jbpm jar java】——深入理解jbpm与Java的整合应用 jbpm,全称是JBoss Business Process Management,是一款开源的工作流管理系统,主要用于处理业务流程的建模、执行和监控。jbpm的设计目标是提供一个灵活且强大...
3. **任务服务(Task Service)**:处理流程中的任务分配和管理,如任务创建、指派、完成等。任务可以分配给具体的用户或角色,支持动态任务委派和工作流规则。 4. **数据库存储(Database Persistence)**:JBPM...
5. **jbpm事件和监听器**:jbpm允许设置事件监听器来响应流程中的特定事件,比如任务完成、流程结束等,开发者可以借此实现自定义的行为,如发送邮件通知。 6. **jbpm集成**:虽然描述中提到压缩包中没有JAR包,但...
3. **任务服务**:jBPM提供了任务服务,用于处理任务的分配、完成、查询等操作,支持工作流与业务逻辑的交互。 4. **持久化**:jBPM使用JPA(Java Persistence API)进行数据持久化,使得流程实例和任务信息可以在...
4. **事件与监听器**:利用事件(如任务完成、流程结束等)和监听器(Listener)来实现特定行为,比如发送通知、更新数据库记录等。 5. **流程实例的启动与跟踪**:通过API或前端界面启动流程实例,并使用工作流...
在本案例中,我们关注的是如何利用jbpm4.1来实现一个具体的业务场景——报销流程。这个流程通常涉及到员工提交报销申请,然后由财务部门审批,最后进行支付。在这个过程中,jbpm4.1可以帮助我们定义和自动化这些步骤...