Activiti7中的方法:
1.进行部署:√
repositoryService.createDeployment()//创建部署对象
.addClasspathResource("bpmn/leaveProcessIGateway.bpmn")//需要部署什么资源文件
.deploy();//进行部署
2.启动流程√
runtimeService.startProcessInstanceByKey("leaveProcessIGateway",params);
3.查询待办任务√
taskService.createTaskQuery().list();
4.执行任务√
taskService.complete(taskId);
5.认领任务√
taskService.claim(taskId,userId);
6.添加批注√
taskService.addComment(taskId,processInstanceId,"允许休假");
7.挂起流程定义
repositoryService.suspendProcessDefinitionByKey("leaveProcess",true,null);
8.激活流程定义
repositoryService.activateProcessDefinitionByKey("leaveProcess",true,null);
9.挂起流程实例
runtimeService.suspendProcessInstanceById(instanceId);
10.激活流程实例
runtimeService.activateProcessInstanceById(instanceId);
11.获取资源的文件流√
repositoryService.getResourceAsStream();
12.删除流程定义√
repositoryService.deleteDeployment(deploymentId,true);
13.查询流程定义√
repositoryService.createProcessDefinitionQuery().list();
14.查询流程实例√
runtimeService.createProcessInstanceQuery().list()
15.查询历史的实例√
historyService.createHistoricTaskInstanceQuery().list()
流程定义相关:
1.查询流程定义
2.删除流程定义
3.流程资源文件下载
流程实例相关
1.流程实例和流程定义的关系(类似==>类和对象的关系)
2.流程如何和业务进行绑定呢? 需要使用业务标识BusinessKey
启动流程的时候将业务标识绑定到流程实例中.
String businessKey = "8001";
//启动流程
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leaveProcess",businessKey);
在任务中取出流程实例ID,查询流程实例对象,通过流程实例对象找到业务标识.
3.流程定义的挂起和激活
4.流程实例的挂起和激活
任务分配负责人
1.固定分配,在流程图中写死.
2.使用UEL表达式
在流程图的节点的assignee属性设置占位符${assignee0}
启动的流程时候,设置流程变量.
Map<String,Object> params = new HashMap<>();
params.put("assignee0","熊长青");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leaveProcessVariable",params);
3.使用监听器的方式
写一个类实现TaskListener接口,在接口方法上设置对应的处理人
在流程图中将监听类的全限定名设置流程图中.
任务候选人
需要在流程图的Candidate User设置多个候选人.
查询的时候增加添加,通过候选人进行查询.
List<Task> taskList = taskService.createTaskQuery()
.processDefinitionKey("leaveProcessCandidate")
.taskCandidateUser(userId)//查询候选人
.list();
认领任务
完成任务
流程变量
除了可以在节点上使用UEL表达式,也可以在连线出写UEL表达式,通过流程变量控制流程走向.
启动的时候需要将流程变量设置进去.
1.如果流程图中设置流程变量,但是启动的时候没有传入,报错.
2.如果条件都不满足,也会报错
3.如果条件都满足,每条线都会执行.
网关
1.排他网关
流程只会走一条线,当多个条件都满足的情况下,只会走序号最小的那条线
2.并行网关
流程需要走多个线,多个节点都必须完成之后才能取到下一个节点.
在连线处添加条件不会进行判断.
3.包含网关
可以在里面有条件判断,走满足条件线.如果没有条件,给路径也会走.必须多个路径都执行完才能走到下一个节点.
多个条件都满足的情况,每条线都会走.