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=" ;
        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();


    }

}

你可能感兴趣的:(JavaEE专业技能)