目前我有一個使用fork/join機制來創建並行流程的子流程。免得假設有兩個流程:A,B。每個流都將輸入變量作爲複雜對象CONTEXT。此外,每個流都會進行一些計算並更新CONTEXT裏面。作爲輸出,每個流程返回更新上下文。這裏的問題是在加入點,最後結果CONTEXT覆蓋了前一個。讓我們假設流動一個填充先完成與結果CONTEXT_1和流動乙將返回CONTEXT_2。所以最後的結果將是CONTEXT_2和流程A的所有更改都將丟失。如何合併Activiti中並行流的變量?
UPDATE: 從我的觀察,從超過程傳遞的變量(上下文)以子流程複製(CONTEXT「)和子進程結束後,通過變量(上下文的新價值」)將於原來的(上下文)。
在下面的例子中,我的意思是所有傳遞的變量都具有相同的名稱。
實施例:
- 超過程P1(變量:CONTEXT)調用子流程P2(變量由副本傳遞);
子流程P2(變量:CONTEXT」)創建兩個並行流(任務)甲,乙(變量由副本傳遞);
甲任務(變量:CONTEXT_1)變量的更新值,結束執行並返回變量;
3.1。 CONTEXT_1代替變量CONTEXT'因此P2只能看到這個新值,因爲這個變量的名字相同;
同時乙任務(變量:CONTEXT_2)仍在工作並在一段時間更新變量之後,結束執行並返回變量;
4.1。CONTEXT_2代替變量CONTEXT_1所以P2只能看到這個新值,因爲這個變量的名字相同;
- 子流程P2(變量:CONTEXT_2)完成執行,並返回新veriable到超過程。 結果 - >CONTEXT_1已丟失。
我的目標場景:
- 超過程P1(變量:CONTEXT)調用子過程P2(變量是通過複製傳遞);
子流程P2(變量:CONTEXT」)創建兩個並行流(任務)甲,乙(變量由副本傳遞);
甲任務(變量:CONTEXT_1)變量的更新值,結束執行並返回變量;
3.1。 CONTEXT_1和CONTEXT被合併成CONTEXT_M1,換句話說,只CONTEXT_1的新的變化將被應用到CONTEXT。
同時乙任務(變量:CONTEXT_2)仍在工作並在一段時間更新變量之後,結束執行並返回變量;
4.1。 CONTEXT_2和CONTEXT_M1合併爲CONTEXT_M2,換句話說,只有CONTEXT_2的新變化將被應用到CONTEXT_M1所以以前的更新將不會丟失;
- 子流程P2(變量:CONTEXT_M2)完成執行,並返回新veriable到超過程。 結果 - >CONTEXT_M2。所有更改都保存。
更新後,通過保持臨時變量的加入變量。你能上傳你的bpmn.xml以便更好地理解嗎? –