用户和组概述
- 在工作流中最重要的参与者是人,流程中定义了何时需要人参与、何时由系统处理。
- 用户和组是一个身份系统(或者模块)的基础,在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();
}
}