Activiti工作流引擎——用户与组、部署管理

用户和组概述

  • 在工作流中最重要的参与者是人,流程中定义了何时需要人参与、何时由系统处理。
  • 用户和组是一个身份系统(或者模块)的基础,在Activiti中用户和组主要是应用于用户任务(userTask)。
  • 组是控制权限的一种方式,属于某个组的用户就拥有操作某些功能的权限,在activiti中,组可以分为两种类型,即assignment和security-role,前者为一种普通的岗位角色,是用户分配业务中的功能权限,后者是安全角色,可以从全局管理用户组织及整个流程的状态。

部署流程资源

使用流程引擎的目的是为了使用流程驱动业务的流转。要用流程驱动业务就必须为业务启动一个流程实例,启动一个流程实例必须定义一系列活动,这一系列的活动就组成了一个流程定义。

部署流程资源有很多方法,包括:classpath、inputStream、字符串、zip格式压缩包。

虽然部署方式不同,但都是通过RepositoryService的creatDeployment()方法在创建DeploymentBuilder对象后调用不同的方法部署资源。

classpath方式

package ActivitiTest;

import org.activiti.engine.RepositoryService;
import org.activiti.engine.impl.RepositoryServiceImpl;
import org.activiti.engine.repository.DeploymentBuilder;

/**
 * Created by yangenneng on 2017/1/22 13:05.
 * Abstract:
 */
public class IdentifySericeTest  {

    public static void main(String[] args) {

        //定义classpath
        String bpmnClassPath="resouce/aaa.bpmn";
        RepositoryService repositoryService=new RepositoryServiceImpl();

        //创建部署构建器
        DeploymentBuilder deploymentBuilder=repositoryService.createDeployment();

        //添加资源
        deploymentBuilder.addClasspathResource(bpmnClassPath);

        //执行部署
        deploymentBuilder.deploy();

    }

}

InputStream方式

package ActivitiTest;

import org.activiti.engine.RepositoryService;
import org.activiti.engine.impl.RepositoryServiceImpl;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

/**
 * Created by yangenneng on 2017/1/22 13:05.
 * Abstract:
 */
public class IdentifySericeTest  {

    public static void main(String[] args) throws FileNotFoundException {

        //定义classpath
        String bpmnClassPath="resouce/aaa.bpmn";
        RepositoryService repositoryService=new RepositoryServiceImpl();

       //读取classpath文件为一个输出流
        FileInputStream fileInputStream=new FileInputStream(bpmnClassPath);

        //部署
        repositoryService.createDeployment().addInputStream("aaa.bpmn",fileInputStream).deploy();


    }

}

字符串方式

package ActivitiTest;

import org.activiti.engine.RepositoryService;
import org.activiti.engine.impl.RepositoryServiceImpl;

import java.io.FileNotFoundException;

/**
 * Created by yangenneng on 2017/1/22 13:05.
 * Abstract:
 */
public class IdentifySericeTest  {

    public static void main(String[] args) throws FileNotFoundException {

        //定义classpath
        String bpmnValue=" <userTask activiti:exclusive=...............";
        RepositoryService repositoryService=new RepositoryServiceImpl();
        //部署
        repositoryService.createDeployment().addString("aaa.bpmn",bpmnValue).deploy();


    }

}

zip/bar压缩包格式

以上三种一次只能部署一个资源,除非执行多次repositoryService.createDeployment().addXXX("aaa.bpmn",XXX).deploy();方法,可以采用压缩包方式部署多个资源的压缩文件。

package ActivitiTest;

import org.activiti.engine.RepositoryService;
import org.activiti.engine.impl.RepositoryServiceImpl;
import org.activiti.engine.repository.Deployment;

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

/**
 * Created by yangenneng on 2017/1/22 13:05.
 * Abstract:
 */
public class IdentifySericeTest  {

    public  void main(String[] args) throws FileNotFoundException {

       //从classpath读取资源并将其部署到引擎中
        InputStream zipStream=this.getClass().getClassLoader().getResourceAsStream("deplotment.bar");
        RepositoryService repositoryService=new RepositoryServiceImpl();
        //部署
        repositoryService.createDeployment().addZipInputStream(new ZipInputStream(zipStream)).deploy();

        //统计已经部署的流程个数
        int count= (int) repositoryService.createProcessDefinitionQuery().count();

        //查询部署记录
        Deployment deployment=repositoryService.createDeploymentQuery().singleResult();


    }

}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Activiti 是一种开源的工作流引擎,用于实现和管理业务流程。封装一个 Activiti 工作流引擎的 Demo 可以帮助我们更好地理解和使用这个工具。下面我将介绍如何封装一个 Activiti 工作流引擎的 Demo。 首先,我们需要在项目引入 Activiti 的依赖,可以通过 Maven 或者手动导入 jar 包的方式。接下来,我们可以创建一个基于 Spring Boot 的应用程序。 在 Demo ,我们需要定义一些基本的流程定义和流程实例。流程定义是一个流程模板,描述了业务流程的结构和步骤;而流程实例是流程定义的一个具体执行过程。 为了创建流程定义,我们需要使用 Activiti 提供的 ProcessEngineConfigurator 类。该类可以帮助我们初始化和配置 Activiti 引擎。在配置文件,我们可以定义数据库连接信息、创建流程定义的方式以及其他相关配置。 在 Demo ,我们可以使用 BPMN (Business Process Model and Notation)来定义流程模型。BPMN 是一种标准化的图形化表示语言,可以帮助我们更好地理解和管理业务流程。我们可以使用 Activiti 提供的设计器来创建和编辑 BPMN 文件。 接下来,我们需要实现流程定义的部署和启动。部署是将流程定义存储在 Activiti 引擎的过程,启动是根据定义的流程模板创建一个流程实例。 我们可以使用 Activiti 提供的 RepositoryService 来进行部署操作。通过该服务,我们可以将 BPMN 文件部署到引擎,并且可以查询已经部署的流程定义。 通过调用 RuntimeService 的 startProcessInstanceByKey 方法,我们可以根据流程定义的 key(在部署时定义的)启动一个流程实例。 在流程实例启动后,我们可以使用 TaskService 进行任务分配和处理。可以通过查询特定用户的待办任务和已完成任务,完成任务的提交操作。 最后,我们可以使用 HistoryService 来查询已完成的流程实例和任务的历史记录。这可以帮助我们进行流程性能和效率的评估。 封装一个 Activiti 工作流引擎的 Demo,可以帮助我们更好地了解和使用这个工作流引擎。通过实际的示例,我们可以学习如何创建流程定义、部署和启动流程实例、处理任务以及查询历史记录等操作。这将帮助我们更好地管理和优化业务流程。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值