activit6.0 + Springboot2.0 + idea2018.1.6 初步学习(二)基本入门代码+流程变量+用户任务(个人任务、组任务、角色任务)

这篇博客介绍了如何使用Activiti6.0、SpringBoot2.0和IDEA进行初步的流程管理工作,包括部署工作流、启动流程实例、查询个人任务以及设置和获取流程变量。详细解释了每个步骤涉及的数据库操作,并给出了代码示例。此外,还讨论了用户任务的分配方式,包括个人任务和组任务,并提到了工作流定义中的角色组配置。
摘要由CSDN通过智能技术生成

因公司要求,将自己核实,全部踩坑过得资料写成文档,索性当做博客发出来,给其他朋友灵感以及自己以后回忆。

Activiti的大致流程

  1. 使用bpmn生成流程定义图之后,
  2. 将会生成xml文件,
  3. activiti去读取xml,对数据库做操作(activiti会在数据库创建相关表)

 

  • 流程实例、任务的执行(基础)

以下列流程图为例:

 

  1. 创建工作流引擎

   ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

 

  1. 把工作流部署到工作流引擎上(即部署流程定义)

  下面的例子是获取仓库服务,从类路径下完成部署

@Test
public  void deploy() {
    //部署工作流
    //获取仓库服务
    RepositoryService repositoryService = processEngine.getRepositoryService();
    Deployment deploy = repositoryService.createDeployment()//创建一个部署的构建器
            .addClasspathResource("processes/MyTask2.bpmn")//从类路径中添加资源,一次只能添加一个资源
            .addClasspathResource("processes/MyTask2.png")//从类路径中添加资源,一次只能添加一个资源
            .name("任务二")//设置部署的名称
            .category("自动")//设置部署的类别
            .deploy();

    String deployId= deploy.getId();
    System.out.println("部署的id:"+deployId);
    System.out.println("部署的名称:"+deploy.getKey());
}

说明:

1) 先获取流程引擎对象:在创建时会自动加载classpath下的activiti.cfg.xml

2) 首先获得默认的流程引擎,通过流程引擎获取了一个RepositoryService对象(仓库对象)

3) 由仓库的服务对象产生一个部署对象配置对象,用来封装部署操作的相关配置。

4) 这是一个链式编程,在部署配置对象中设置显示名,上传流程定义规则文件

5) 向数据库表中存放流程定义的规则信息。

6) 这一步在数据库中将操作三张表:

Act_re_deployment(部署对象表):存放流程定义的显示名和部署时间,每部署一次增加一条记录 Act_re_procdef(流程定义表):存放流程定义的属性信息,部署每个新的流程定义都会在这张表中增加一条记录。
Act_ge_bytearray(资源文件表):存储流程定义相关的部署信息。即流程定义文档的存放地。每部署一次就会增加两条记录,一条是关于bpmn规则文件的,一条是图片的(如果部署时只指定了bpmn一个文件,activiti会在部署时解析bpmn文件内容自动生成流程图)。两个文件不是很大,都是以二进制形式存储在数据库中。

 

Ps: 部署工作流还有多种方法,比如将bpmn与png打包成zip文件,然后部署时以io流形式部署发布。

 

  1. 执行工作流(启动流程实例)

@Test
public void startProcess(){
    IdentityService identityService = processEngine.getIdentityService();//认证:保存组和用户信息

    //指定执行我们刚才部署的工作流程
    String processDefiKey="MyTask_2";
    //取运行时服sh务
    RuntimeService runtimeService = processEngine.getRuntimeService();
    //取得流程实例  我们此处是用流程定义的key 来执行流程,除此之外也可以用流程定义的id来执行
    ProcessInstance pi = runtimeService.startProcessInstanceByKey(processDefiKey);
    System.out.println("流程实例id:"+pi.getId());//流程实例id
    System.out.println("流程定义id:"+pi.getProcessDefinitionId());//输出流程定义的id
}

说明:
1) 操作数据库的act_ru_execution表,如果是用户任务节点,同时也会在act_ru_task添加一条记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值