TaskService:用于操作与任务相关的表,这些表包括主要的任务管理表和其它关联表
作为Flowable框架中常用的service对象,从名字可以看出对应的是act_ru_task表。其中可以操作六张表如:ACT_HI_TASKINST 、ACT_RU_IDENTITYLINK 、ACT_HI_IDENTITYLINK 、ACT_RU_VARIABLE 、ACT_HI_VARINST 表。
下面只详细介绍其中三个运行时的表
1.ACT_RU_TASK :运行时流程任务节点表,常用于查询人员或部门待办任务时使用。该表保存当前流程运行到达的任务节点,保存节点名称,节点的key值(BPMN中的节点ID值)等。这里要注意的是,每次流程办理之后,该数据对应的主键ID会变化。其中,当我们发起一个流程的时候,该表会对应生成一条数据,其中 PROC_INST_ID_ 字段就是当前流程的唯一标识,我称之为流程业务实例ID。 该ID在这次流程中会作为全局唯一标识,当流程结束后保存至历史任务表中。
2.ACT_RU_IDENTITYLINK :运行时身份关联表。用于查询参与者、候选者、候选组等信息。该表的TYPE_字段有 participant:当前任务的参与者,candidate:候选者,starter:流程发起人,assigne:处理人、委派人。该表中的TASK_ID有时候为空则表示当前流程节点还未分配候选任务,而已经分配的任务则有值。
3.ACT_RU_VARIABLE :运行时流程变量表(这个表是个好东西),该表存储一个流程中所有的相关信息变量。如流程发起的表单值、流程办理的审理信息之类都会存储到该表中。如果你的流程设定了监听器,可以把该监听器的某些数据存储在这个表中,或者从这个表中获取流程设定的值。如果你的BPMN中使用了占位符,在发起的时候表单key对应就可以直接替换。(如果想详细了解请看下篇)
RepositoryService:用于管理和操作流程定义(Process Definition)相关的信息,包括流程定义的部署、查询、删除等操作
1.ACT_RE_DEPLOYMENT :部署表,用于存储流程定义的部署信息。主要保存部署ID、部署类别、部署时间、部署名称。在部署时会将该流程的BPMN和流程图存储至act_ge_bytearray表中。
2.ACT_RE_PROCDEF: 流程定义表,存储流程定义的相关信息。如流程名称、流程的KEY、部署ID等,其中主键ID是流程的 KEY:版本号:UUID
3.ACT_GE_BYTEARRAY :字节数组表,该表用于存储流程定义文件、流程图等二进制文件
4.ACT_GE_PROPERTY:属性表,用于存储流程引擎的各种属性配置信息。切记,该表不要清理数据,否则你的项目无法启动。
RuntimeService:用于管理和操作流程的实例的主要对象,它提供了一系列的API来启动、查询、完成和删除流程实例以及管理流程变量等操作
看该对象的名字就能看出是用来操作ACT_RU表数据的,以下只粗略介绍其他两个ru表
ACT_RU_EXECUTION :执行表,存储流程实例和执行实例的运行时数据,记录运行时流程运行的各个分支信息,当没有子流程时,其数据和act_ru_task一样。
ACT_RU_JOB:运行时任务数据表,存储流程的定时任务信息
以下罗列一些常用的API方法
repositoryService.createProcessDefinitionQuery().latestVersion().active()
.orderByProcessDefinitionKey().asc()
createProcessDefinitionQuery():创建一个流程部署查询对象,类似MybatisPlus的Query
latestVersion():最薪版本
active():状态为激活
orderByProcessDefinitionKey():根据流程实例ID排序
asc():正序
deploymentId():根据部署ID查询
singleResult():返回查询数据
getBpmnModel(definitionId):根据流程定义ID查询该流程的BpmnModel对象
BpmnModel:可以理解为你画流程图的那个bpmn文件解析后的一个对象,本质就是bpmn文件
runtimeService
startProcessInstanceById(ProcessDefinitionId,Map):根据流程定义ID和流程变量启动流程
map就是往act_ru_variable表中存储的流程变量数据,用键值对的方式存储,
setVariable(processInstanceId,key,value):根据流程实例ID存储流程变量。
getVariable(processInstanceId,variableName ):流程执行实例ID和变量名获取变量
getVariables(executionId):获取流程所有变量。参数为流程业务实例ID
deleteProcessInstance(instanceId, deleteReason);删除流程实例,参数为流程实例ID,删除原因createChangeActivityStateBuilder():用于创建一个用于更改活动状态的构建器(builder)对象。这个构建器对象用于定义和执行对流程活动状态的改变操作。
processInstanceId(ProcessInstanceId
):根据流程实例ID
moveExecutionsToSingleActivityId(executionIds,endId)用于将指定的执行(executions)移动到单个活动(activity)的ID。endId:结束节点ID
TaskService
taskService.createTaskQuery().taskId(bo.getTaskId()).singleResult():创建Task查询对象,根据运行流程ID获取该运行流程对象
taskService.addComment(taskId,procInsId,type, comment); 向该流程添加评论,参数分别为:流程ID、流程实例ID、评论类型、评论内容
setAssignee(taskId,userId):设置处理人
complete(taskId,map,boolean flag):方法用于完成一个任务,使其进入下一个流程步骤 。参数分别为流程ID,流程变量,布尔值:用于指示是否仅在当前任务的本地范围内设置变量。如果设置为 true,变量将只在当前任务的范围内可见和使用;如果为 false,变量将在整个流程实例中可见和使用。