项目实践工作流之Activiti学习(十六)

2023-10-29 16:17:51 浏览数 (2)

5.3启动一个流程实例

流程定义部署在 activiti 后就可以通过工作流管理业务流程了,也就是说上边部署的请假申请流程可以使用了。

针对该流程,启动一个流程表示发起一个新的请假申请单,这就相当于 java 类与 java 对象的关系,类定义好后需要 new 创建一个对象使用,当然可以 new 多个对象。对于请假申请流程,张三发起一个请假申请单需要启动一个流程实例,请假申请单发起一个请假单也需要启动一个流程实例。

代码如下:

代码语言:javascript复制
// 启动一个流程实例
@Test
public void startProcessInstance() {
// 获取RunTimeService
RuntimeService runtimeService = 
processEngine.getRuntimeService();
// 根据流程定义key启动流程
ProcessInstance processInstance = runtimeService
.startProcessInstanceByKey("myholiday01");
System.out.println(" 流程定义 id : "   
processInstance.getProcessDefinitionId());
System.out.println("流程实例id:"   processInstance.getId());
System.out.println(" 当前活动 Id : "   
processInstance.getActivityId());
}

5.4任务查询

流程启动后,各各任务的负责人就可以查询自己当前需要处理的任务,查询出来的任务都是该用户的待办任务。

代码语言:javascript复制
// 查询当前个人待执行的任务
@Test
public void findPersonalTaskList() {
// 任务负责人
String assignee = "zhangsan";
// 创建TaskService
TaskService taskService = processEngine.getTaskService();
List<Task> list = taskService.createTaskQuery()//
.processDefinitionKey("myholiday01")//
.taskAssignee(assignee)//只查询该任务负责人的任务
.list();
for (Task task : list) {
System.out.println(" 流 程 实 例 id : "   
task.getProcessInstanceId());
System.out.println("任务id:"   task.getId());
System.out.println("任务负责人:"   task.getAssignee());
System.out.println("任务名称:"   task.getName());
}
}

5.5任务处理

任务负责人查询待办任务,选择任务进行处理,完成任务。

代码语言:javascript复制
// 完成任务
@Test
public void completTask() {
//任务id
String taskId = "8305";
// 创建TaskService
TaskService taskService = processEngine.getTaskService();
//完成任务
taskService.complete(taskId);
System.out.println("完成任务id=" taskId);
}

0 人点赞