动态计算群组成员数量

Dynamic calculation of the number of groups members

比如有一个exclusivegateway和两个sequenceFlow.

<sequenceFlow id="flow1" sourceRef="exclusivegateway" targetRef="usertask1">
    <conditionExpression xsi:type="tFormalExpression">
        <![CDATA[${approveCount == N}]]>
    </conditionExpression>
</sequenceFlow>

<sequenceFlow id="flow2" sourceRef="exclusivegateway" targetRef="usertask2">
    <conditionExpression xsi:type="tFormalExpression">
        <![CDATA[${approveCount < N}]]>
    </conditionExpression>
</sequenceFlow>

根据条件,执行一个或另一个任务。

在业务流程中我想动态计算数字N。这个数字等于业务流程所有参与者的总和。 (比如我有两组,第一组有10个参与者,第二组有5个。那么N一定等于15)。

是否可以在Activiti中使用JavaScript来计算这些组的参与者人数?

您绝对可以使用 Java 脚本或 Java API 来获取几个组中的用户数。检查此页面以了解 JS 人员 API 例如:http://docs.alfresco.com/5.1/references/API-JS-getMembers.html

所以我设想在您的专属网关之前有一个脚本 task/execution 侦听器,实现该逻辑应该是最简单的方法,因为它甚至不需要重新启动服务器:

var membersG1 = people.getMembers("GROUP_MY_GROUP1_NAME");
var membersG2 = people.getMembers("GROUP_MY_GROUP2_NAME");
execution.setVariable("N", membersG1.length + membersG2.length);

请注意,这是实现您指定内容的众多可能方法之一。