Activiti系列八: 用户任务、组任务、监听器

1. 个人任务

1.1 流程图

 

1.2 分配个人任务方式一(直接指定办理人)

1:流程图中任务节点的配置

2:测试代码:

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//部署流程定义,启动流程实例
	@Test
	public void testTask() throws Exception {
		
		// 1 发布流程
		InputStream inputStreamBpmn = this.getClass().getResourceAsStream("taskProcess.bpmn");
		InputStream inputStreamPng = this.getClass().getResourceAsStream("taskProcess.png");
		processEngine.getRepositoryService()//
						.createDeployment()//
						.addInputStream("userTask.bpmn", inputStreamBpmn)//
						.addInputStream("userTask.png", inputStreamPng)//
						.deploy();
		
		// 2 启动流程
		//启动流程实例的同时,设置流程变量
		ProcessInstance pi = processEngine.getRuntimeService()//
							.startProcessInstanceByKey("taskProcess");
		System.out.println("pid:" + pi.getId());
	}
	
//查询我的个人任务列表
	@Test
	public void findMyTaskList(){
		String userId = "张三丰";
		List<Task> list = processEngine.getTaskService()//
		                .createTaskQuery()//
		                .taskAssignee(userId)//指定个人任务查询
		                .list();
		for(Task task:list ){
			System.out.println("id="+task.getId());
			System.out.println("name="+task.getName());
			System.out.println("assinee="+task.getAssignee());
			System.out.println("createTime="+task.getCreateTime());
			System.out.println("executionId="+task.getExecutionId());
			
		}
	}
	
//完成任务
	@Test
	public void completeTask(){
		String taskId = "3209";
		processEngine.getTaskService()//
					.complete(taskId);//
		System.out.println("完成任务");
	}

说明:

  1. 张三丰是个人任务的办理人

但是这样分配任务的办理人不够灵活,因为项目开发中任务的办理人不要放置XML文件中。

1.3 分配个人任务方式二(使用流程变量)

1:流程图中任务节点的配置

2:测试代码

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//部署流程定义,启动流程实例
	@Test
	public void testTask() throws Exception {
		
		// 1 发布流程
		InputStream inputStreamBpmn = this.getClass().getResourceAsStream("taskProcess.bpmn");
		InputStream inputStreamPng = this.getClass().getResourceAsStream("taskProcess.png");
		processEngine.getRepositoryService()//
						.createDeployment()//
						.addInputStream("userTask.bpmn", inputStreamBpmn)//
						.addInputStream("userTask.png", inputStreamPng)//
						.deploy();
		
	// 2 启动流程
	//启动流程实例的同时,设置流程变量
		Map<String, Object> variables = new HashMap<String, Object>();
		variables.put("userID", "张翠三");
		ProcessInstance pi = processEngine.getRuntimeService()//
							.startProcessInstanceByKey("taskProcess",variables);
		System.out.println("pid:" + pi.getId());
	}
	
	//查询我的个人任务列表
	@Test
	public void findMyTaskList(){
		String userId = "张翠三";
		List<Task> list = processEngine.getTaskService()//
		                .createTaskQuery()//
		                .taskAssignee(userId)//指定个人任务查询
		                .list();
		for(Task task:list ){
			System.out.println("id="+task.getId());
			System.out.println("name="+task.getName());
			System.out.println("assinee="+task.getAssignee());
			System.out.println("createTime="+task.getCreateTime());
			System.out.println("executionId="+task.getExecutionId());
			
		}
	}
	
	//完成任务
	@Test
	public void completeTask(){
		String taskId = "3209";
		processEngine.getTaskService()//
					.complete(taskId);//
		System.out.println("完成任务");
	}

说明:

  1. 张翠山是个人任务的办理人
  2. 在开发中,可以在页面中指定下一个任务的办理人,通过流程变量设置下一个任务的办理人

1.4 分配个人任务方式三(使用监听器类)

1:流程图中任务节点的配置

此时流程图的XML文件,如图:

2:TaskListenerImpl类,用来设置任务的办理人

public class TaskListenerImpl implements TaskListene
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御前两把刀刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值