2017-02-27 67 views
0

例如數量的動態計算,存在一個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來計算參與者在這些羣體?..

數目,我會的信息非常感謝。謝謝大家。

+1

是的,你可以在JavaScript中做數學運算。 或者您可以使用腳本任務。 – vikash

+0

感謝您的評論。我需要訪問組並通過使用JavaScript來計算參與者的數量。 –

+0

我認爲我需要使用Web腳本框架和REST架構... –

回答

3

你肯定可以使用JavaScript或Java API來獲取在一組的用戶數量。檢查這個頁面的JS人API例如:http://docs.alfresco.com/5.1/references/API-JS-getMembers.html

所以我想象一個腳本任務/執行監聽器之前,你的獨家網關,實現該邏輯應該是最簡單的方法來做到這一點,因爲它甚至不需要重新啓動服務器:

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

請注意,這是實現您指定內容的衆多可能方式之一。

+0

非常好!非常感謝你這樣詳盡的回答! –