(四)activiti7大服务service详解——1 RepositoryService

 

前言

Activiti 中每一个不同版本的业务流程的定义都需要使用一些定义文件,部署文件和支持数据 ( 例如 BPMN2.0 XML 文件,表单定义文件,流程定义图像文件等 ),这些文件都存储在 Activiti 内建的 Repository 中。Repository Service 提供了对 repository 的存取服务。

 


 

一、RepositoryService 是什么?

RepositoryService 是Acitiviti的仓库服务类。所谓的仓库指流程定义文档的两个文件:bpmn文件和流程图片。

二、使用步骤

1.产生方式

代码如下(示例):

RepositoryService repositoryService = processEngine.getRepositoryService();

2.产生DeploymentBuilder

DeploymentBuilder:定义流程部署相关参数



import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.DeploymentBuilder;
import org.junit.Before;
import org.junit.Test;

import java.io.InputStream;
import java.util.zip.ZipInputStream;

public class ActivitiRepTest {

    RepositoryService repositoryService;

    /**
     * 默认简化方式: 启动时会默认寻找classpath下面的activiti.cfg.xml文件
     */
    @Before
    public void initConfigWithDefault() {
        //创建流程引擎对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        repositoryService = processEngine.getRepositoryService();
    }

    /**
     * 部署流程 直接加载bpmn文件和图片文件
     */
    @Test
    public void deployActivitByPath() {
        //创建部署对象
        DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
        //加载流程的配置文件和图片
        deploymentBuilder.addClasspathResource("diagrams/test.bpmn")
                .addClasspathResource("diagrams/test.png")
                .name("部署的流程定义名称")
                .category("业务分类,可自行定义")
        ;
        deploymentBuilder.deploy();
    }

    /**
     * 部署流程  直接加载bpmn文件和流程图片的压缩文件
     */
    @Test
    public void deployActivitByFileZip() {
        //创建部署对象
        DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
        InputStream inputStream = this.getClass().getResourceAsStream("diagrams/test.zip");
        ZipInputStream zipInputStream = new ZipInputStream(inputStream);
        //加载流程的配置文件和图片
        deploymentBuilder.addZipInputStream(zipInputStream)
                .name("部署的流程定义名称")
                .category("业务分类,可自行定义")
        ;
        deploymentBuilder.deploy();
    }
}

 

3.部署流程

 

3.1代码实现



import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.DeploymentBuilder;
import org.junit.Before;
import org.junit.Test;

import java.io.InputStream;
import java.util.zip.ZipInputStream;

public class ActivitiRepTest {

    RepositoryService repositoryService;

    /**
     * 默认简化方式: 启动时会默认寻找classpath下面的activiti.cfg.xml文件
     */
    @Before
    public void initConfigWithDefault() {
        //创建流程引擎对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        repositoryService = processEngine.getRepositoryService();
    }

    /**
     * 部署流程 直接加载bpmn文件和图片文件
     */
    @Test
    public void deployActivitByPath() {
        //创建部署对象
        DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
        //加载流程的配置文件和图片
        deploymentBuilder.addClasspathResource("diagrams/test.bpmn")
                .addClasspathResource("diagrams/test.png")
                .name("部署的流程定义名称")
                .category("业务分类,可自行定义")
        ;
        deploymentBuilder.deploy();
    }

    /**
     * 部署流程  直接加载bpmn文件和流程图片的压缩文件
     */
    @Test
    public void deployActivitByFileZip() {
        //创建部署对象
        DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
        InputStream inputStream = this.getClass().getResourceAsStream("diagrams/test.zip");
        ZipInputStream zipInputStream = new ZipInputStream(inputStream);
        //加载流程的配置文件和图片
        deploymentBuilder.addZipInputStream(zipInputStream)
                .name("部署的流程定义名称")
                .category("业务分类,可自行定义")
        ;
        deploymentBuilder.deploy();
    }
}

3.2生成的表数据

select *  from  act_re_deployment; -- 工作流部署表
select *  from  act_ge_bytearray; -- 存储二进制相关文件
select *  from  act_re_procdef; -- 流程定义数据

其中 act_re_procdef 表中的 RESOURCE_NAME_ 字段 = act_ge_bytearray中NAME_字段

 

 

4.删除流程定义

 

 

//删除流程定义
repositoryService.deleteDeployment(deploymentId);

5.查询流程定义

/**
     * 流程定义的查询(主要涉及表:act_re_procdef)
     * id: key:version:随机值
     * name: 对应流程文件process节点的name属性
     * key: 对应流程文件process节点的id属性
     * version: 发布时自动生成的,如果第一次发布的流程,version默认从1开始;  如果当前流程引擎中已经存在相同key的流程,则找到当前key的最高版本号,在最高版本号上加1
     */
    @Test
    public void queryProcessDefinition() {
        List<ProcessDefinition> processDefinitionList = repositoryService.createProcessDefinitionQuery()
                //添加查询条件
                //.processDefinitionName("流程定义的name")
                //.processDefinitionId("流程定义的id")
                //.processDefinitionKey("流程定义的key")
                //排序
                .orderByProcessDefinitionVersion().asc()
                //查询结果
                //.count() //返回结果集数量
                //.listPage(firstResult,  maxResults)//分页查询
                //.singleResult() //唯一结果
                .list();//总的结果集数量

        for(ProcessDefinition processDefinition:processDefinitionList){
            System.out.println("id:" +processDefinition.getId());
            System.out.println("name:" +processDefinition.getName());
            System.out.println("key:" +processDefinition.getKey());
            System.out.println("version:" +processDefinition.getVersion());
            System.out.println("resourceName:" +processDefinition.getDiagramResourceName());
        }

    }

 

 

 


总结

RepositoryService 核心就是流程文件的部署,删除,查询流程定义。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Activiti7是一个基于Spring Boot的开源工作流引擎,它提供了一系列的服务来支持工作流的实现。其中,大服务(Service)是Activiti7中的一种重要的服务类型,它承担了很多核心功能。下面我们来详细介绍一下Activiti7大服务的各种类型及其作用。 1. Identity Service Identity ServiceActiviti7中的一个重要服务,它提供了用户和组的管理功能。通过Identity Service,我们可以创建、删除、更新用户和组,以及查询用户和组的信息。在Activiti7中,用户和组是与任务和流程实例相关联的,因此Identity Service对于工作流的实现非常关键。 2. Runtime Service Runtime ServiceActiviti7中的另一个重要服务,它提供了流程实例的管理功能。通过Runtime Service,我们可以启动、暂停、恢复、删除流程实例,以及查询流程实例的状态。在Activiti7中,每个流程实例都有一个唯一的标识符,我们可以通过Runtime Service来管理这些流程实例。 3. Task Service Task ServiceActiviti7中的一个重要服务,它提供了任务的管理功能。通过Task Service,我们可以创建、完成、删除任务,以及查询任务的信息。在Activiti7中,任务是流程实例中的一个环节,它需要被分配给具体的用户或组去执行。 4. Form Service Form ServiceActiviti7中的一个服务,它提供了表单的管理功能。通过Form Service,我们可以查询、创建、更新和删除表单。在Activiti7中,表单是与任务和流程实例相关联的,它可以用来展示和收集用户输入的数据。 5. History Service History ServiceActiviti7中的一个服务,它提供了历史数据的管理功能。通过History Service,我们可以查询已经完成的流程实例、任务和变量的历史数据。在Activiti7中,历史数据包括流程实例的启动时间、结束时间,任务的创建时间、完成时间,以及变量的修改历史等信息。 6. Management Service Management ServiceActiviti7中的一个服务,它提供了管理功能。通过Management Service,我们可以查询Activiti7的配置信息,管理数据库表,以及执行一些系统级别的操作。在Activiti7中,Management Service需要有管理员权限才能使用。 总之,Activiti7大服务Activiti7引擎的核心组成部分,它提供了许多重要的功能,包括用户和组的管理、流程实例的管理、任务的管理、表单的管理、历史数据的管理以及管理功能等。这些服务使得Activiti7成为了一个功能强大、易于使用的工作流引擎。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青苔猿猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值