Activiti 7 三 新特性尝鲜

一 ProcessRuntime

这个是和SpringSecurity结合使用,如果项目中没有SpringSecurity那就使用原来的方法即可。该接口是用于对流程定义和定义流程实例的接口。

package com.activitiweb;

import org.activiti.api.model.shared.model.VariableInstance;
import org.activiti.api.process.model.ProcessInstance;
import org.activiti.api.process.model.builders.ProcessPayloadBuilder;
import org.activiti.api.process.runtime.ProcessRuntime;
import org.activiti.api.runtime.shared.query.Page;
import org.activiti.api.runtime.shared.query.Pageable;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
public class Part8_ProcessRuntime {

    @Autowired
    private ProcessRuntime processRuntime;

    @Autowired
    private SecurityUtil securityUtil;

    //获取流程实例
    @Test
    public void getProcessInstance() {
    	//先登录
        securityUtil.logInAs("bajie");
        //这个实例引用是 org.activiti.api.process.model包下的 切记
        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());
      }
    }

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

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

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

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

    //流程实例参数
    @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());
        }
    }
}

二 TaskRuntime

这个接口优化了任务方法,之前查询待办任务是一个方法,查询候选人任务又是另外一个方法。

package com.activitiweb;

import org.activiti.api.runtime.shared.query.Page;
import org.activiti.api.runtime.shared.query.Pageable;
import org.activiti.api.task.model.Task;
import org.activiti.api.task.model.builders.TaskPayloadBuilder;
import org.activiti.api.task.runtime.TaskRuntime;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
public class Part9_TaskRuntime {
    @Autowired
    private SecurityUtil securityUtil;

    @Autowired
    private TaskRuntime taskRuntime;

    //获取当前登录用户任务
    @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){
                //候选人为当前登录用户,null的时候需要前端拾取
                System.out.println("Assignee:待拾取任务");
            }else{
                System.out.println("Assignee:"+ tk.getAssignee());
            }
        }
    }

    //完成任务
    @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("任务执行完成");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Activiti是一个开源的工作流引擎,它提供了丰富的API来帮助开发人员设计和管理工作流程。Activiti 7是Activiti的最新版本,它提供了许多新的功能和改进,包括更好的性能和易用性。Activiti API可以用来管理工作流程定义、部署和执行,包括启动、查询和终止流程实例。此外,Activiti API还提供了对流程变量、任务和历史数据的管理功能。 ### 回答2: activiti7是一个开源的工作流引擎,它是activiti的升级版本。activiti7提供了一套强大的API,使得开发者可以方便地与工作流引擎进行交互。 activiti7的API可以用于各种工作流相关的操作,包括流程定义、流程实例、任务管理等。通过activiti7的API,开发者可以创建、部署和管理各种流程定义,定义流程的图形模型、表单等。同时,API还支持启动、暂停和终止流程实例,查询和处理任务,得到流程实例运行状态等。 使用activiti7的API还可以对流程进行管理,包括监听流程启动、流程完成等事件,触发相应的业务逻辑。此外,API还支持获取和设置流程变量,进行用户组和角色的管理,以及集成和扩展其他业务系统等。 activiti7的API遵循了RESTful架构,提供了一套统一的HTTP接口,使得开发者可以轻松地集成activiti7到自己的应用程序中。同时,activiti7还提供了一些Java类库和工具类,方便开发者进行各种操作。 总之,activiti7提供了一套简洁易用的API,使得开发者可以方便地使用工作流引擎,实现各种复杂的工作流业务。无论是开发者还是企业用户,都可以通过activiti7的API来提升工作效率和业务管理能力。 ### 回答3: Activiti7是一个开源的企业级工作流管理和自动化平台,它提供了一套强大的API,用于流程定义、任务管理、流程实例管理等操作。 首先,使用Activiti7的API可以定义流程,包括流程节点、流程变量和流程规则等。可以使用API中的类和方法创建和配置流程,将各个节点按照需要连接起来,并定义流程中的变量和规则。通过API的调用,可以实现灵活的流程定义,满足业务需求。 其次,Activiti7的API还提供了任务管理功能。通过API可以创建、分配和处理任务,可以将任务分配给特定的用户或组,并设置任务的截止日期和优先级等属性。API还提供了查询任务的方法,可以根据不同的条件查询任务列表,并对任务进行处理,如完成、取消或重新指派任务等。 另外,API还包括流程实例管理的功能。通过API可以启动流程实例,跟踪流程实例的状态,并对流程实例进行操作,如暂停、恢复或终止。API还提供了查询流程实例的方法,可以根据条件查询流程实例列表,并对流程实例进行管理和监控。 总结来说,Activiti7提供了一套功能丰富的API,可以方便地进行流程定义、任务管理和流程实例管理。通过使用这些API,可以实现灵活、高效的工作流管理和自动化,提升企业的业务流程效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值