Flowable的RepositoryService、RuntimeService、TaskService、HistoryService、IdentityService
介绍
- Flowable提供了很多API,注入这些Service即可直接使用
一、RepositoryService
- 部署、定义流程
1、Model(act_re_model)
//查询
ModelQuery repositoryService.createModelQuery();
//添加
repositoryService.saveModel(ModelEntityImpl model);
2、Deployment(act_re_deployment)
//查询
repositoryService.createDeploymentQuery();
//部署一个流程
Deployment deployment=repositoryService.createDeployment()
//一般定义成流程xml<process id
.key("leave")
//一般定义成流程xml<process name
.name("leave")
//流程分类0-bpmn
.category("0")
//需要部署的流程图
//根据流程图.xml部署,processes/leave.bpmn20.xml,会去resources下查找
.addClasspathResource(String resource)
//根据一个输入流部署:resourceName:资源名称
.addInputStream(String resourceName, InputStream inputStream)
.deploy();
//删除一个部署的流程,第二个参数=true表示允许级联删除 ,设置成false会导致数据库外键关联异常
//会删除和该部署流程启动的相关的表数据:(act_re_procdef、act_ge_bytearray)(act_ru_execution、act_ru_task、act_ru_actinst、act_ru_identitylink、act_ru_variable)(act_hi_procinst、act_hi_actinst、act_hi_taskinst、act_hi_actinst、act_hi_varinst)
void repositoryService.deleteDeployment(deploymentId, true);
3、ProcessDefinition(act_re_procdef)
ProcessDefinition repositoryService.createProcessDefinitionQuery()
//where
.deploymentId(String deploymentId)
.processDefinitionKey(String key)
//order
.orderByProcessDefinitionKey()
.asc()、.desc()
//limit
.listPage(int firstResult, int maxResults)
//select
//单个结果
.singleResult()
//集合
list()
//统计
count()
4、资源相关(act_ge_bytearray)
//增加模型的xml资源,默认NAME_=source
addModelEditorSource(String modelId, byte[] bytes);
//增加模型的图片资源,默认NAME_ = source-extra
addModelEditorSourceExtra(String modelId, byte[] bytes);
5、其它
//查询部署的流程的xml
InputStream repositoryService.getResourceAsStream(String deploymentId, String resourceName);
二、RuntimeService
1、ProcessInstance(act_ru_execution)
//查询
1、ProcessInstance runtimeService.createProcessInstanceQuery()
//where
//默认and连接;或 or()
//流程实例id
.processInstanceId(String processInstanceId)
//业务主键
.processInstanceBusinessKey(String businessKey)
//删除一个正在运行中的流程,deleteReason-删除原因
//删除数据的表:act_ru_execution、act_ru_task、act_ru_actinst、act_ru_identitylink、act_ru_variable
void runtimeService.deleteProcessInstance(String processInstanceId, String deleteReason);
//启动一个流程实例
//1、直接启动
//processDefinitionKey:根据已部署的流程act_re_procdef-key
//businessKey:业务主键,比如漏洞编号唯一,作为该流程的业务主键
/**
* 添加流程变量
* 当xml中条件表达式标签为 flowable:skipExpression="${reviewResult=='0'}"时,需添加全局流程变量variables.put("_ACTIVITI_SKIP_EXPRESSION_ENABLED",true)(启用跳过表达式)
* 当xml中条件表达式为 type="tFormalExpression"则不需要
*/
ProcessInstance runtimeService.startProcessInstanceByKey(String processDefinitionKey);
ProcessInstance runtimeService.startProcessInstanceByKey(String processDefinitionKey,Map<String, Object> variables);
ProcessInstance runtimeService.startProcessInstanceByKey(String processDefinitionKey,String businessKey,Map<String, Object> variables);
//2、启动时需要添加其它字段信息
runtimeService.createProcessInstanceBuilder()
//设置名称
.name("name")
//设置业务主键
.businessKey("kk")
添加流程变量
.variables(variables)
//根据已部署的流程act_re_procdef-key启动
.processDefinitionKey("leave")
.start();
2、其它
//设置流程变量
runtimeService.setVariable(String processInstanceId, String variableName, Object value);
runtimeService.setVariables(String processInstanceId, Map<String, ?> variables);
//环节跳转
//环节id:xml标签id,表中的ACT_ID_
//1、串行路线(跳转路线上没有并行网关)
runtimeService.createChangeActivityStateBuilder()
//流程实例id
.processInstanceId(String processInstanceId)
//currentActivityId-当前流程正在进行环节id;newActivityId-跳转的环节id
.moveActivityIdTo(String currentActivityId,String newActivityId)
.changeState();
三、TaskService
1、Task(act_ru_task)
//查询
Task taskService.createTaskQuery();
//where
//默认 and连接;或 or()
//任务id
.taskId(String taskId)
//流程实例id
.processInstanceId(String procInstdId)
//指定人员
.taskAssignee(String assignee)
//指定节点名称
.taskDefinitionKey(String key)
//select
//单个结果
.singleResult()
//集合
.list()
//统计
.count()
//查询结果中包含该任务的变量
.includeTaskLocalVariables()
//查询结果中包含用户身份信息
.includeIdentityLinks()
//查询结果中包含流程变量
.includeProcessVariables();
2、完成任务
//任务签收,任务分配给候选人员、候选组时需要签收,签收后,任务Task的Assignee就有值了
claim(String taskId, String userId);
//无需条件判断
taskService.complete(String taskId);
//需要表达式变量判断
taskService.complete(String taskId, Map<String, Object> variables);
3、批注(act_hi_comment)
- 有时完成一个任务需要设置审批信息如:审批结果、审批意见、审批时间
/**
* 添加
* type 默认 comment
* message==null会NullPointException;虽然添加时使用message,但完整的message会保存在FULL_MSG_
*/
Comment taskService.addComment(String taskId,String processInstance,String type,String message);
//查询
List<Comment> getTaskComments(String taskId);
//type不指定则 默认=comment
List<Comment> getTaskComments(String taskId, String type);
List<Comment> getCommentsByType(String type);
//完整的审核信息
//String comment.getFullMessage();
4、其它
//设置流程变量,设置流程变量虽然会赋值taskId,但流程变量表中TASK_ID_仍是null
taskService.setVariable(String taskId,String variableName,Object value);
taskService.setVariables(String taskId, Map<String,Object> variables);
//获取流程变量
Object getVariable(String taskId, String variableName);
T getVariable(String taskId, String variableName, Class<T> variableClass)
Map<String, Object> getVariables(String taskId, Collection<String> variableNames)
//设置任务变量
taskService.setVariableLocal(String taskId, String variableName, Object value);
taskService.setVariables(String taskId, Map<String,Object> variables);
//获取任务变量
Map<String, Object> getVariablesLocal(String taskId);
Map<String, Object> getVariablesLocal(String taskId, Collection<String> variableNames);
//流程变量
//act_ru_variable:正在执行的流程变量表
//流程变量名称相同则覆盖
//TASK_ID=null
//作用域为流程运行的整个时期
//任务变量
//act_hi_varinst:流程变量历史表
//不同任务之间可以设置相同名称变量
//TASK_ID=该任务id
//作用域为执行到该任务时期,该任务执行完变量消失
//签收:当任务分配给了某一组人员时,需要该组人员进行抢占,抢到了就将该任务给谁处理,其他人不能处理
void taskService.claim(String taskId, String userId);
//设置人员
taskService.setAssignee(String assignee);
//添加候选组
taskService.addCandidateGroup(String taskId, String groupId);
//删除候选组
taskService.deleteCandidateGroup(String taskId, String groupId);
//添加候选人
taskService.addCandidateUser(String taskId, String userId);
//删除候选人
taskService.deleteCandidateUser(String taskId, String userId);
四、HistoryService
- 流程相关历史数据
1、HistoricActivityInstance(act_hi_actinst)
//查询
historyService.createHistoricActivityInstanceQuery()
//order
//流程结束时间
.orderByHistoricActivityInstanceEndTime()
//流程开始时间
.orderByHistoricActivityInstanceStartTime()
.asc()、desc()
2、HistoricTaskInstance(act_hi_taskinst)
historyService.createHistoricTaskInstanceQuery()
//select
includeTaskLocalVariables()
includeProcessVariables()
includeIdentityLinks()
//where
//流程实例id
processInstanceId()
//流程业务主键
processInstanceBusinessKey(String businessKey)
processInstanceBusinessKeyLike()
processInstanceBusinessKeyLikeIgnoreCase()
//该任务所属的流程结束
processFinished()
//该任务所属的流程未结束
processUnfinished()
//流程中已完成的任务 end_time有值
finished()
//流程中未完成的任务 end_time没值
unfinished()
//order
//任务开始时间
orderByHistoricTaskInstanceStartTime()
//任务结束时间
orderByHistoricTaskInstanceEndTime()
asc()、desc()
3、HistoricProcessInstance(act_hi_procinst)
//查询
historyService.createHistoricProcessInstanceQuery()
//where,默认 and连接;或 or()
//流程已结束 end_time有值
finished()
//流程未结束 end_time没值
unfinished()
//流程实例id
processInstanceId(String processInstanceId)
processInstanceIds(Set<String> processInstanceIds)
//流程业务主键
processInstanceBusinessKey(String businessKey)
//流程启动人id
startedBy(String startedBy)
//给定用户参与的历史进程实例
involvedUser(String userId)
//给定日期启动之前、之后的历史流程
startedBefore(Date date)、startedAfter(Date date)
//给定日期之前、之后结束的历史流程
finishedBefore(Date date)、finishedAfter(Date date)
//order
//流程结束时间
orderByProcessInstanceEndTime()
//流程开始时间
orderByProcessInstanceStartTime()
//流程历时
orderByProcessInstanceDuration()
asc()、desc()
//select
long count()
List<HistoricProcessInstance> list()
includeProcessVariables()
//删除一个流程,会删除和流程历史相关的数据:act_hi_procinst、act_hi_actinst、act_hi_taskinst、act_hi_actinst、act_hi_varinst
void deleteHistoricProcessInstance(String processInstanceId);
五、IdentityService
- 管理组和用户的身份认证信息
1、其它
IdentityLinkType常量类
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfhajaj
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13