Activiti7学习记录:activiti7的新特性(TaskRuntime API和ProcessRuntime API)(三)

注意:与 ProcessRuntime API 交互,当前登录的用户需要具有“ACTIVITI_USER”角色。

一:TaskRuntime API

与activiti5和activiti6 taskAPI的区别:

        以前要查询待办任务是一个方法,查询候选人任务是另一个方法,activiti7现在将其封装成一个方法

需要两个注入:

@Autowired
private SecurityUtil securityUtil;

@Autowired
private TaskRuntime taskRuntime;

1:获取当前登录用户任务

taskRuntime.tasks

@Test
public void getTasks() {
    securityUtil.logInAs("wukong");
    Page<Task> tasks = taskRuntime.tasks(Pageable.of(0,100));
    List<Task> list=tasks.getContent();
    for(Task tk : list){
        System.out.println("-------------------");
        System.out.println("getId:"+ tk.getId());
        System.out.println("getName:"+ tk.getName());
        System.out.println("getStatus:"+ tk.getStatus());
        System.out.println("getCreatedDate:"+ tk.getCreatedDate());
        if(tk.getAssignee() == null){
            System.out.println("Assignee:待拾取任务");
        }else{
            System.out.println("Assignee:"+ tk.getAssignee());
        }

    }



}

2:完成任务

taskRuntime.tasks
taskRuntime.claim
taskRuntime.complete

@Test
public void completeTask() {
    securityUtil.logInAs("wukong");
    Task task = taskRuntime.task("db9c5f80-d3ae-11ea-99e8-dcfb4875e032");
    if(task.getAssignee() == null){
        taskRuntime.claim(TaskPayloadBuilder.claim()
        .withTaskId(task.getId())
        .build());
    }
    taskRuntime.complete(TaskPayloadBuilder
            .complete()
    .withTaskId(task.getId())
    .build());
    System.out.println("任务执行完成");
}

二:ProcessRuntime API

需要两个注入:

@Autowired
private ProcessRuntime processRuntime;

@Autowired
private SecurityUtil securityUtil;

1:查询流程实例

 processRuntime .processInstances(Pageable.of(0,100));


0:第几个;100:多少个
@Test
public void getProcessInstance() {
    securityUtil.logInAs("bajie");
    Page<ProcessInstance> processInstancePage = processRuntime
            .processInstances(Pageable.of(0,100));
    System.out.println("流程实例数量:"+processInstancePage.getTotalItems());
    List<ProcessInstance> list = processInstancePage.getContent();
    for(ProcessInstance pi : list){
        System.out.println("-----------------------");
        System.out.println("getId:" + pi.getId());
        System.out.println("getName:" + pi.getName());
        System.out.println("getStartDate:" + pi.getStartDate());
        System.out.println("getStatus:" + pi.getStatus());
        System.out.println("getProcessDefinitionId:" + pi.getProcessDefinitionId());
        System.out.println("getProcessDefinitionKey:" + pi.getProcessDefinitionKey());

    }
}

2:启动流程实例

processRuntime.start

@Test
public void startProcessInstance() {
    securityUtil.logInAs("bajie");
    ProcessInstance processInstance = processRuntime.start(ProcessPayloadBuilder
            .start()
            .withProcessDefinitionKey("myProcess_ProcessRuntime")
            .withName("第一个流程实例名称")
            .withVariable("","")//启动加参数
            .withBusinessKey("自定义bKey")
            .build()
    );
}
3:删除流程实例
processRuntime.delete

@Test
public void delProcessInstance() {
    securityUtil.logInAs("bajie");
    ProcessInstance processInstance = processRuntime.delete(ProcessPayloadBuilder
            .delete()
            .withProcessInstanceId("6fcecbdb-d3e0-11ea-a6c9-dcfb4875e032")
            .build()
    );
}

4:挂起流程实例
processRuntime.delete

@Test
public void suspendProcessInstance() {
    securityUtil.logInAs("bajie");
    ProcessInstance processInstance = processRuntime.suspend(ProcessPayloadBuilder
            .suspend()
            .withProcessInstanceId("1f2314cb-cefa-11ea-84aa-dcfb4875e032")
            .build()
    );
}

5:激活流程实例
processRuntime.delete

@Test
public void resumeProcessInstance() {
    securityUtil.logInAs("bajie");
    ProcessInstance processInstance = processRuntime.resume(ProcessPayloadBuilder
            .resume()
            .withProcessInstanceId("1f2314cb-cefa-11ea-84aa-dcfb4875e032")
            .build()
            );
}

6:获取流程实例参数
processRuntime.variables

@Test
public void getVariables() {
    securityUtil.logInAs("bajie");
    List<VariableInstance> list = processRuntime.variables(ProcessPayloadBuilder
            .variables()
            .withProcessInstanceId("2b2d3990-d3ca-11ea-ae96-dcfb4875e032")
            .build()
    );
    for(VariableInstance vi : list){
        System.out.println("-------------------");
        System.out.println("getName:" + vi.getName());
        System.out.println("getValue:" + vi.getValue());
        System.out.println("getTaskId:" + vi.getTaskId());
        System.out.println("getProcessInstanceId:" + vi.getProcessInstanceId());
    }
}

版权声明:本文为zhangrachel1原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。