启动Activiti流程实例以及办理任务(四)

1.当部署好一个流程之后,便可以启动流程实例了。

部署方法请参考博客:http://blog.csdn.net/qciwyy/article/details/48051699

2.启动流程实例 方式一:根据流程定义的id启动 方式二:根据流程定义的key启动(自动选择最新版本的流程定义启动流程实例)

@Test
	public void test8() {
		/*
		 * String processDefinitionId = "qjlc:9:1204"; ProcessInstance
		 * processInstance =
		 * processEngine.getRuntimeService().startProcessInstanceById
		 * (processDefinitionId ); System.out.println(processInstance.getId());
		 */

		String processDefinitionKey = "qjlc";
		ProcessInstance processInstance = processEngine.getRuntimeService()
				.startProcessInstanceByKey(processDefinitionKey);
		System.out.println(processInstance.getId());
	}
3.查询流程实例列表,查询act_ru_execution表

@Test
	public void test9(){
		//流程实例查询对象,查询act_ru_execution表
		ProcessInstanceQuery query = processEngine.getRuntimeService().createProcessInstanceQuery();
		query.processDefinitionKey("qjlc");
		query.orderByProcessInstanceId().desc();
		query.listPage(0, 2);
		List<ProcessInstance> list = query.list();
		for (ProcessInstance pi : list) {
			System.out.println(pi.getId() + " " + pi.getActivityId());
		}
	}
4.结束流程实例,操作的表act_ru_execution act_ru_task

@Test
	public void test10(){
		String processInstanceId = "1601";
		processEngine.getRuntimeService().deleteProcessInstance(processInstanceId , "我愿意");
	}
5.查询任务列表

@Test
	public void test11(){
		//任务查询对象,查询act_ru_task表
		TaskQuery query = processEngine.getTaskService().createTaskQuery();
		String assignee = "李四";
		query.taskAssignee(assignee);
		query.orderByTaskCreateTime().desc();
		List<Task> list = query.list();
		for (Task task : list) {
			System.out.println(task.getId());
		}
	}
6.办理任务

/**
	 * 办理任务
	 */
	@Test
	public void test12(){
		String taskId = "2902";
		processEngine.getTaskService().complete(taskId);
	}
7.直接将流程向下执行一步

/**
	 * 直接将流程向下执行一步
	 */
	@Test
	public void test13(){
		String executionId = "2701";//流程实例id
		processEngine.getRuntimeService().signal(executionId);
	}
8.查询最新版本的流程定义列表

/**
	 * 查询最新版本的流程定义列表
	 */
	@Test
	public void test14(){
		ProcessDefinitionQuery query = processEngine.getRepositoryService().createProcessDefinitionQuery();
		query.orderByProcessDefinitionVersion().asc();
		List<ProcessDefinition> list = query.list();
		Map<String, ProcessDefinition> map = new HashMap<String, ProcessDefinition>();
		for (ProcessDefinition pd : list) {
			map.put(pd.getKey(), pd);
		}
		ArrayList<ProcessDefinition> lastList = new ArrayList<>(map.values());
		for (ProcessDefinition processDefinition : lastList) {
			System.out.println(processDefinition.getName() + "  "+ processDefinition.getVersion() );
		}
	}


流程实例涉及的概念,及涉及到数据库表

Execution   执行对象

 按流程定义的规则执行一次的过程.

 对应的表:

 act_ru_execution: 正在执行的信息

 act_hi_procinst:已经执行完的历史流程实例信息

 act_hi_actinst:存放历史所有完成的活动

ProcessInstance 流程实例

 特指流程从开始到结束的那个最大的执行分支,一个执行的流程中,流程实例只有1个。

注意

   (1)如果是单例流程,执行对象ID就是流程实例ID

   (2)如果一个流程有分支和聚合,那么执行对象ID和流程实例ID就不相同

   (3)一个流程中,流程实例只有1个,执行对象可以存在多个。

Task 任务

 执行到某任务环节时生成的任务信息。

 对应的表:

 act_ru_task:正在执行的任务信息

 act_hi_taskinst:已经执行完的历史任务信息


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值