003 流程实例

一 .概述

在前面我们部署完成了流程定义,工作流的核心就是创建流程实例,然后不断的推进流程,最终完成整个业务的进展.

二 .开启一个流程实例

		// 获取runtimeService对象
		RuntimeService runtimeService = ProcessEngines.getDefaultProcessEngine().getRuntimeService();
		// 我们一般都按照流程定义的key开启一个新的任务
		ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leave");
		System.out.println(processInstance.getId());

我们使用RunTimeService对象启动了一个流程实例,核心就是使用流程定义的key来启动一个流程实例,默认情况下就是启动最新版本的流程定义.

我们需要关心运行时流程表.

我们需要关系的字段有proc_inst_id,流程实例的id,另外关系的就是流程定义的id.

三 .查询当前执行的任务

		// 获取runtimeService对象
		TaskService taskService = ProcessEngines.getDefaultProcessEngine().getTaskService();
		// 创建正在执行的任务的查询对象
		List<Task> list = taskService.createTaskQuery().taskAssignee("张三").list();
		list.forEach(System.out::println);

在之前的流程图之中,我们制定了个人任务的办理人.

因此,我们可以指定张三进行个人任务的查询,在这里我们使用张三的用户完成个人任务的查询.

四 .办理个人任务

		TaskService taskService = ProcessEngines.getDefaultProcessEngine().getTaskService();
		// 创建正在执行的任务的查询对象
		taskService.complete("5004");

我们完成个人任务,就需要调用complete()方法进行,完成个人任务就需要使用任务的id完成.

在活动历史表之中的情况如下:

我们发现5003的定义之中的结束时间已经完成,在最后一条记录之中也进入了流程表之中,但是没有结束时间.

我们不断的重复上面的流程,最后整个流程就被完成了.此时运行时的流程定义就已经完成.

  

原文地址:https://www.cnblogs.com/trekxu/p/10381308.html