activiti第二天: 6. 接收任务活动(receiveTask)

项目: itcast0711 > cn.itcast.j_receiveTask

一. 关于接收任务receiveTask

  • receiveTask和之前userTask是有区别的.
  • 接收任务是一个简单任务,它会等待对应消息的到达。 当前,官方只实现了这个任务的java语义。当流程到达接收任务,流程状态会保存到数据库中,但是接收任务活动不属于任务, 即所有与任务相关的表并没有数据记录。
  • 在接收任务创建后,意味着流程会进入等待状态, 直到引擎接收了一个特定的消息, 这会触发流程穿过接收任务继续执行。

二. 设计流程图

  • receiveTask的配置很简单,只需要修改id和name即可, 因为不属于任务的一种, 所以没有办理人的设置.
    在这里插入图片描述

三. 接受任务活动(receiveTask)的简单流程执行实例

	/**启动流程实例(receiveTask)+设置流程变量+向后执行一步+获取流程变量*/
	@Test
	public void startProcessInstance(){
		//流程定义的key
		String processDefinitionKey = "receiveTask";
		ProcessInstance pi = processEngine.getRuntimeService()//与正在执行的流程实例和执行对象相关的Service
						.startProcessInstanceByKey(processDefinitionKey);//使用流程定义的key启动流程实例,key对应helloworld.bpmn文件中id的属性值,使用key值启动,默认是按照最新版本的流程定义启动
		System.out.println("流程实例ID:"+pi.getId());//流程实例ID    101
		System.out.println("流程定义ID:"+pi.getProcessDefinitionId());//流程定义ID   helloworld:1:4
		
		/**查询执行对象ID(这里是考虑到可能有并行分支的情况, 实际如果是顺序流程, 执行对象id和流程实例id相同)*/
		Execution execution1 = processEngine.getRuntimeService()//
						.createExecutionQuery()//创建执行对象查询
						.processInstanceId(pi.getId())//使用流程实例ID查询
						.activityId("receivetask1")//当前活动的id,对应receiveTask.bpmn文件中的活动节点id的属性值
						.singleResult();
		
		/**使用流程变量设置当日销售额,用来传递业务参数*/
		processEngine.getRuntimeService()//
						.setVariable(execution1.getId(), "汇总当日销售额", 21000);
		
		/**(发信号, 给定特定消息)向后执行一步,如果流程处于等待状态,使得流程继续执行*/
		processEngine.getRuntimeService()
						.signal(execution1.getId());
		
		/**查询执行对象ID(这里如果确定执行对象相同的话, 可以直接使用execution1)*/
		Execution execution2 = processEngine.getRuntimeService()//
						.createExecutionQuery()//创建执行对象查询
						.processInstanceId(pi.getId())//使用流程实例ID查询
						.activityId("receivetask2")//当前活动的id,对应receiveTask.bpmn文件中的活动节点id的属性值
						.singleResult();
		
		/**从流程变量中获取汇总当日销售额的值*/
		Integer value = (Integer)processEngine.getRuntimeService()//
						.getVariable(execution2.getId(), "汇总当日销售额");
		System.out.println("给老板发送短信:金额是:"+value);
		/**向后执行一步,如果流程处于等待状态,使得流程继续执行*/
		processEngine.getRuntimeService()
						.signal(execution2.getId());
		
	} 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值