工作流会签或签的实现(基于flowable6

工作流会签或签的实现(基于flowable6.8.0)

一、 任务分配和流程变量

 Flowable使用UEL进行表达式解析。UEL代表Unified Expression Language,是EE6规范的一部分.Flowable支持两种UEL表达式: UEL-value 和UEL-method。

1. 值表达式 Value expression: 解析为一个值。默认情况下,所有流程变量都可以使用。(若使用Spring)所有的Spring bean也可以用在表达式里。例如

1.流程实例相关变量:
${processInstanceId}: 当前流程实例的唯一标识符。
${processDefinitionId}: 当前流程实例所基于的流程定义的唯一标识符。
${businessKey}: 流程实例的业务键,用于关联外部系统的业务对象。
2.任务(Task)相关变量:
${taskId}: 当前任务的唯一标识符。
${taskDefinitionKey}: 任务的定义键(Task Definition Key),用于标识任务类型。
${executionId}: 当前任务所属的执行实例(Execution)的唯一标识符。
${task.name}: 当前任务的名称。
${task.description}: 当前任务的描述。
  1. 方法表达式

方法表达式 Method expression: 调用一个方法,可以带或不带参数。当调用不带参数的方法时,要确保在方法名后添加空括号(以避免与值表达式混淆)。传递的参数可以是字面值(literal value),也可以是表达式,它们会被自动解析。例如:

${printer.print()}
${myBean.addNewOrder('orderName')}
${myBean.doSomething(myVar, execution)}
${bpmnModelInstance.getModelElementsByType(UserTask.class)}: 获取流程定义中的所有UserTask元素。

myBean是Spring容器中的个Bean对象,表示调用的是bean的addNewOrder方法

二、 或签会签实现

​ 在flowable框架中,他会自行维护一些系统变量,这些变量是可以用值表达式直接调用的,例如以下三个值:


关键:结合上面可以得出结论:
  1. 在bpmn中有一个usertask完成表达式completionCondition

  2. 会签和或签都是usertask的多实例,当会签和或签时都会生成对应人数的实例

  3. 会签时的逻辑是需要所有人都进行审批,所以可以设置完成表达式为"${nrOfCompletedInstances >= nrOfInstances}"

  4. 或签时的逻辑是选定的人里只要有一个complete那就完成当前节点,所以可以设置完成表达式为$

  5. 这两个表达式可以后期用来判断当前这个task是会签的实例还是或签的实例,具体代码如下

<!-- 会签 -->
<bpmn2:completionCondition xsi:type=\"bpmn2:tFormalExpression\">${nrOfCompletedInstances &gt;= nrOfInstances}</bpmn2:completionCondition>\n   

<!-- 或签 -->
<bpmn2:completionCondition xsi:type=\"bpmn2:tFormalExpression\">${nrOfCompletedInstances &gt; 0}</bpmn2:completionCondition>
posted @ 2024-04-18 16:18  chief_y  阅读(137)  评论(0编辑  收藏  举报