文章目录

  • 介绍
  • 一、RepositoryService
    • 1、Model(act_re_model)
    • 2、Deployment(act_re_deployment)
    • 3、ProcessDefinition(act_re_procdef)
    • 4、资源相关(act_ge_bytearray)
    • 5、其它
  • 二、RuntimeService
    • 1、ProcessInstance(act_ru_execution)
    • 2、其它
  • 三、TaskService
    • 1、Task(act_ru_task)
    • 2、完成任务
    • 3、批注(act_hi_comment)
    • 4、其它
  • 四、HistoryService
    • 1、HistoricActivityInstance(act_hi_actinst)
    • 2、HistoricTaskInstance(act_hi_taskinst)
    • 3、HistoricProcessInstance(act_hi_procinst)
  • 五、IdentityService
    • 1、其它

介绍

  • 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)voidrepositoryService.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_=sourceaddModelEditorSource(String modelId, byte[] bytes);//增加模型的图片资源,默认NAME_ = source-extraaddModelEditorSourceExtra(String modelId, byte[] bytes);

5、其它

//查询部署的流程的xmlInputStream repositoryService.getResourceAsStream(String deploymentId, String resourceName);

二、RuntimeService

1、ProcessInstance(act_ru_execution)

//查询1ProcessInstance 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_variablevoid 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);ProcessInstanceruntimeService.startProcessInstanceByKey(String processDefinitionKey,Map<String, Object> variables);ProcessInstanceruntimeService.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不指定则 默认=commentList<Comment> getTaskComments(String taskId, String type);List<Comment> getCommentsByType(String type);//完整的审核信息//String comment.getFullMessage();

4、其它

//设置流程变量,设置流程变量虽然会赋值taskId,但流程变量表中TASK_ID_仍是nulltaskService.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()//selectincludeTaskLocalVariables()includeProcessVariables()includeIdentityLinks()//where//流程实例idprocessInstanceId()//流程业务主键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()//流程实例idprocessInstanceId(String processInstanceId)processInstanceIds(Set<String> processInstanceIds)//流程业务主键processInstanceBusinessKey(String businessKey)//流程启动人idstartedBy(String startedBy)//给定用户参与的历史进程实例involvedUser(String userId)//给定日期启动之前、之后的历史流程startedBefore(Date date)startedAfter(Date date)//给定日期之前、之后结束的历史流程finishedBefore(Date date)finishedAfter(Date date)//order//流程结束时间orderByProcessInstanceEndTime()//流程开始时间orderByProcessInstanceStartTime()//流程历时orderByProcessInstanceDuration()asc()desc()//selectlongcount()List<HistoricProcessInstance>list()includeProcessVariables()//删除一个流程,会删除和流程历史相关的数据:act_hi_procinst、act_hi_actinst、act_hi_taskinst、act_hi_actinst、act_hi_varinstvoid deleteHistoricProcessInstance(String processInstanceId);

五、IdentityService

  • 管理组和用户的身份认证信息

1、其它

IdentityLinkType常量类