Activiti7系列课程1-activiti7使用

摘要:本文使用的Activiti7具体版本是7.1.0.M1,springboot版本是2.1.5.RELEASE。本文重点讲解在activiti7中如何部署流程、启动流程实例,查询待办和完成任务。

项目搭建

首先,新建一个springboot项目,关于pom.xml文件内容如下

  
            org.activiti.dependencies
            activiti-dependencies
            7.1.0.M1
            pom
        

        
            org.activiti
            activiti-spring-boot-starter
            7.1.0.M1
        

SpringBoot启动类

springboot启动类代码如下:

/**
 * @author 分享牛
 */
@SpringBootApplication
public class ShareniuApplication {

    public static void main(String[] args) {
        SpringApplication.run(ShareniuApplication.class, args);
    }

}

数据源以及Activiti相关配置

数据源以及Activiti相关配置代码如下:

spring:
  activiti:
    db-history-used: true
    check-process-definitions: true # 自动部署验证设置:true-开启(默认)、false-关闭

  datasource:
    url: jdbc:mysql://localhost:3306/reanod_workflow?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC&nullCatalogMeansCurrent=true
    username: root
    password: 123
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource

 

流程绘制

activiti7目前使用的Bpmn-js设计器,但是目前还没有发布正式版。activiti7流程设计器可以使用eclipse或者idea插件即可。接下来绘制一个简单的请假流程。流程图如下:

Activiti7系列课程1-activiti7使用_第1张图片

上面的流程非常简单,请假天数大于3天,总经理审批;否则分享牛审批。

部署流程

部署流程直接使用RepositoryService即可,相关代码如下:

    @Test
    public void deploy() {

        //创建一个部署对象
        DeploymentBuilder deploymentBuilder = repositoryService.createDeployment().name("分享牛请假流程");
        Deployment deployment = null;
            InputStream in = this.getClass().getClassLoader().getResourceAsStream("processes/leave.bpmn20.xml");
            deployment = repositoryService.createDeployment()
                .name("请假流程")
                //指定zip格式的文件完成部署
                .addInputStream("shareniu.bpmn",in)
                .deploy();//完成部署
    }

流程文档部署完毕之后,

会涉及到如下几张表。

  1. ACT_RE_DEPLOYMENT(部署表)
  2. ACT_RE_PROCDEF(流程定义表)
  3. ACT_GE_BYTEARRAY(资源表)
  4. ACT_GE_PROPERTY(通用属性表)
  5. ACT_RU_IDENTITYLINK(运行权限表)

启动流程

启动流程实例使用RuntimeService类。相关代码如下:

    @Test
    public void start() {

        String processDefinitionKey ="leave";//每一个流程有对应的一个key这个是某一个流程内固定的写在bpmn内的
        HashMap variables=new HashMap<>();

        ProcessInstance instance = runtimeService
                .startProcessInstanceByKey(processDefinitionKey,variables);

        System.out.println("流程实例ID:"+instance.getId());
        System.out.println("流程定义ID:"+instance.getProcessDefinitionId());
    }
startProcessInstanceByKey需要的参数,对应ACT_RE_PROCDEF表key_列的值。

查询待办

查询待办任务使用TaskService,相关代码如下:

    /**查询当前人的个人任务*/
    @Test
    public void findTask(){
        List list = taskService.createTaskQuery()//创建任务查询对象
                .list();
        if(list!=null && list.size()>0){
            for(Task task:list){
                System.out.println("任务ID:"+task.getId());
                System.out.println("任务名称:"+task.getName());
                System.out.println("任务的创建时间:"+task.getCreateTime());
                System.out.println("任务的办理人:"+task.getAssignee());
                System.out.println("流程实例ID:"+task.getProcessInstanceId());
                System.out.println("执行对象ID:"+task.getExecutionId());
                System.out.println("流程定义ID:"+task.getProcessDefinitionId());
            }
        }
    }

上述代码执行完毕,会查询任务表ACT_RU_TASK。启动实例之后,实例直接运转到请假申请节点。接下来开始完成该任务。

完成用户任务

完成任务使用TaskService,相关代码如下:

  @Test
    public void completeTask(){
        Map map=new HashMap();
        map.put("day",4);
       taskService.complete("908d9a57-8da5-11e9-ba3f-7ab66d766be2",map);
    }

完成该任务之后,实例直接运转到了总经理审批节点,完成任务的时候如果没有传递day参数,会报错。继续查询待办-完成任务,直至实例结束即可。

遗留问题

1、虽然activiti7使用的bpmn-js设计器,目前版本经测试与camunda设计器部分属性和特性不兼容。

2、activiti7虽然保留了如下几个服务类,但是不建议开发人员直接使用。因为activiti7会随时删除以及干掉这几个类。

3、关于最新的开发流程,后续系列课程会详细讲。

博客相关资料获取

博客相关的资料以及代码获取可以直接添加qq:3152981878(请务必备注,activiti7学习)

你可能感兴趣的:(activiti7使用,activiti服务类,activiti使用,activiti工作流)