`
suhuanzheng7784877
  • 浏览: 705276 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ff8d036b-05a9-33b5-828a-2633bb68b7e6
读金庸故事,品程序人生
浏览量:47775
社区版块
存档分类
最新评论

JBPM4学习总结之6——Task之任务

    博客分类:
  • jbpm
阅读更多

1.       Task之任务分配人(assignee

Task是一般来处理人机交互的活动,也是工作流中最为复杂的节点,许多元素还有子元素。我们先来看指派分配人。

流程图如下:

 流程定义XML如下:

<?xml version="1.0" encoding="UTF-8"?>

<process name="TaskAssignee" xmlns="http://jbpm.org/4.4/jpdl">
	<start name="start1" g="137,21,48,48">
		<transition name="to task1" to="task1" g="-52,-22" />
	</start>
	<task name="task1" g="117,146,92,52" assignee="#{owner.name}">
		<transition name="to state1" to="state1" g="-56,-22" />
	</task>
	<state name="state1" g="121,280,92,52" />
</process>

 

通过流程变量#{owner.name}传入指派人的ID,当然owner类必须实现了序列化接口。

Owner类代码如下

package vo;

import java.io.Serializable;

public class AssigneeTaskVO implements Serializable {

	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

 测试代码如下:

AssigneeTaskVO assigneeTaskVO = new AssigneeTaskVO();

assigneeTaskVO.setName("liuyan");

Map<String, Object> map = new HashMap<String, Object>();

map.put("owner", assigneeTaskVO);

// 开始process流程
ProcessInstance processInstance = executionService
		.startProcessInstanceByKey("TaskAssignee", map);

// 流程实例的ID
String pid = processInstance.getId();

System.out.println(pid);// forkjoin.10001

List<Task> taskList = taskService.findPersonalTasks("liuyan");

for (Task task : taskList) {
	System.out.println(task.getAssignee());
}

 

2.       Task之任务分配人与分配组

利用Taskcandidate-groupscandidate-users可以指定分配组或者分配人。流程图雷同,我们来看xml定义如下:

<?xml version="1.0" encoding="UTF-8"?>

<process name="TaskGroup" xmlns="http://jbpm.org/4.4/jpdl">
	<start name="start1" g="160,39,48,48">
		<transition name="to task1" to="task1" g="-52,-22" />
	</start>
	<task name="task1" g="136,142,92,52" candidate-groups="tibco">
		<transition name="to state1" to="state1" g="-56,-22" />
	</task>
	<state name="state1" g="134,251,92,52" />
</process>

 

这里制定了一个组名叫做“tibco”。

下面来看测试代码:

/**
	 * 使用身份验证接口建立不同的用户、组、组成员
	 */
	public void test02CreateGroup() {
		identityService.createGroup("tibco");
		identityService.createGroup("vecinfo");

		identityService.createUser("liuyan", "liuyan", "素还真");
		identityService.createUser("fcl", "fcl", "风采铃");

		identityService.createMembership("liuyan", "tibco");
		identityService.createMembership("liuyan", "vecinfo");
		identityService.createMembership("fcl", "vecinfo");
	}

	/**
	 * 发起流程
	 */
	public void test03StartTask() {
		
		// 开始process流程
		ProcessInstance processInstance = executionService
				.startProcessInstanceByKey("TaskGroup");

		// 流程实例的ID
		String pid = processInstance.getId();

		System.out.println(pid);// forkjoin.10001
	}
	
	/**
	 * 获得指定人的任务列表
	 */
	public void test04GetAssigneeGroupTask() {
		List<Task> taskList1 = taskService.findPersonalTasks("liuyan");

		for (Task task : taskList1) {
			System.out.println(task.getAssignee());
		}
		
		List<Task> taskList2 = taskService.findPersonalTasks("fcl");

		for (Task task : taskList2) {
			System.out.println(task.getAssignee());
		}
		
		List<Task> taskList3 = taskService.findGroupTasks("liuyan");

		for (Task task : taskList3) {
			System.out.println(task.getId());//20002
		}
		
		List<Task> taskList4 = taskService.findGroupTasks("fcl");

		for (Task task : taskList4) {
			System.out.println(task.getId());
		}

	}
	
	/**
	 * 争抢获取任务
	 */
	public void test05ExeTask(){
		taskService.takeTask("20002", "liuyan");
		
	}
	
	/**
	 * 完成任务
	 */
	public void test06(){
		taskService.completeTask("20002");
	}

 test02CreateGroup()使用身份验证接口创建了组:tibcovecinfo,创建了用户:liuyanfcl,并且建立了人员与组织的关系。tibco只有liuyanvecinfoliuyanfcltest04GetAssigneeGroupTask()执行结果可以看到用户liuyantask,而fcl没有任何task。如果此时多个人都有task预备任务(把流程中的组名换成vecinfo)的时候,那么就是以争抢的方式来“夺取”该task来执行,谁先抢到,谁就可以执行任务,抢不到的人无法再争抢。

  • 大小: 8.1 KB
分享到:
评论

相关推荐

    jBPM-jPDL学习笔记——流程设计与控制(转载)

    《jBPM-jPDL学习笔记——流程设计与控制》 在IT行业中,流程管理和自动化是企业提升效率的关键。jBPM(Java Business Process Management)是一个开源的工作流和业务流程管理套件,它允许开发者通过定义流程定义...

    JBPM4 学习使用总结

    【JBPM4 学习使用总结】 JBPM4 是一个开源的工作流管理系统,它提供了完整的工作流生命周期管理,包括设计、部署、执行和监控。在深入学习和使用JBPM4的过程中,我们可以了解到它的一些核心特性以及如何有效地利用...

    JBPM4 示例文件

    这个压缩包包含了两个示例项目——jbpm4web和jbpm4helloworld,用于帮助开发者理解和学习如何在实际开发中应用JBPM4。 **工作流与Java工作流** 工作流(Workflow)是业务流程自动化的一种方式,它定义了在完成特定...

    JBPM相关学习资料

    4. **任务管理**:理解JBPM中的任务服务,如何分配和完成任务,以及如何使用人工作流(Human Task Service,HTS)来实现人员交互。 5. **事件处理**:学习如何利用事件驱动的架构(EDA)来响应系统内外的特定事件,...

    JBPM4使用小结.doc

    使用 JBPM4 在 Eclipse 中需要安装插件,在 JBPM 软件包下,找到 \install\src\gpd\jbpm-jpd-site.zip 文件,然后打开 Eclipse,点 Help——Install New Software,选择 JBPM 的插件安装。 JBPM4 提供了一个完整的...

    jBPM4 user guide

    - 描述了jBPM4的核心组件——进程引擎的作用和功能。 - 进程引擎负责解析流程定义,并驱动流程实例的执行。 - **5.3 部署流程** - 介绍了如何将定义好的流程部署到jBPM环境中。 - 包括上传文件、配置参数等步骤...

    JBPM工作流实战_使用泳道为多个任务指定相同的参与者视频 07

    通过学习这个视频教程,你可以掌握如何利用JBPM的泳道功能来优化工作流程,实现多任务的并行处理,提高工作效率,并且更好地理解BPMN模型在实际应用中的运用。这将对你的IT职业生涯尤其是在企业流程管理领域有着极大...

    jbpm jar java

    【jbpm jar java】——深入理解jbpm与Java的整合应用 jbpm,全称是JBoss Business Process Management,是一款开源的工作流管理系统,主要用于处理业务流程的建模、执行和监控。jbpm的设计目标是提供一个灵活且强大...

    JBPM4工作流应用开始指南.rar

    第一篇介绍工作流管理技术的概念、起源和发展历程,开源工作流选型,以及jBPM——这个迄今为止最成功的Java开源工作流项目的“前世今生”。此外,本篇还可以帮助读者快速上手jBPM4、使用jBPM4开发企业流程应用,包括...

    jbpm实战讲解.pdf

    - Task活动涉及任务分配、候选人选择和自定义任务处理器,是工作流中任务管理的核心部分。 **1.9 泳道的概念** - 泳道用于区分流程中的不同角色或部门,这部分详细阐述了泳道的定义和作用,有助于优化流程设计。...

    jbpm数据库表结构

    本文将深入探讨JBPM的核心组成部分之一——数据库表结构。 #### 二、核心表介绍 JBPM的核心表结构覆盖了从流程定义到执行过程中的各个关键环节,具体包括但不限于以下几类: 1. **流程定义相关的表** - **JBPM_...

    JBPM案例详解(三)

    每个步骤对应BPMN中的活动节点,如用户任务(User Task)或服务任务(Service Task),它们之间通过流程流(Sequence Flow)连接,形成完整的流程图。 为了实现这个流程,我们需要进行以下步骤: 1. **流程建模**:使用...

    专题资料(2021-2022年)Activiti5基于jBPM4的开源工作流系统10分钟入门指南.doc

    Activiti 是一个开源的工作流系统,它基于 jBPM4 技术,为企业的业务流程自动化提供了强大的支持。本10分钟入门指南旨在帮助初学者快速理解 Activiti 的基本概念和API接口,通过一个简单的业务流程示例进行讲解。 ...

    JBPM案例详解(一)

    在JBPM案例详解中,我们首先会接触到JBPM的核心概念,包括工作流定义(Workflow Definition)、任务(Task)、节点(Node)、流程实例(Process Instance)等。工作流定义是业务流程的蓝图,定义了流程中的各个步骤...

    根据jbpm4的.jpdl.xml流程定义文件,绘制出流程图

    本篇我们将聚焦于Jbpm4中的流程定义文件——jpdl.xml,以及如何根据该文件绘制出对应的流程图。 首先,我们要理解什么是JPDL(Jbpm Process Definition Language)。JPDL是一种基于XML的语言,用于描述Jbpm中的业务...

    JBPM.rar_jbpm

    4. **数据库存储(Database Persistence)**:JBPM使用持久化机制将流程实例、变量、任务等信息存储在数据库中,确保流程的可恢复性和审计追踪。 5. **事件服务(Event Service)**:处理流程中的事件触发,例如...

    JBPM实例讲解+源码+视图+流程

    ### JBPM工作流实例——报销申请详解 #### 一、JBPM简介 JBPM(Java Business Process Model)是一个开源的工作流引擎,它基于Java技术,主要用于实现业务流程管理(BPM)。JBPM允许开发者轻松地定义复杂的业务流程...

    一个简单的jbpm 请假流程

    6. **jbpm集成**:虽然描述中提到压缩包中没有JAR包,但通常jbpm的开发需要引入jbpm的相关库,包括jbpm-flow、jbpm-persistence、jbpm-human-task等。此外,jbpm还可以与其他技术如Spring、Hibernate等进行集成,以...

    jBPM4.4与ssh整合

    1. **工作流模型**:jBPM使用BPMN(Business Process Modeling Notation)标准进行流程建模,包括任务(Task)、事件(Event)、网关(Gateway)等元素,便于业务人员理解。 2. **流程实例**:在jBPM中,每个执行的...

Global site tag (gtag.js) - Google Analytics