當排他網關的判斷條件中出現多個條件時,需要注意,設置判斷條件時,可能遇到,流向相同的任務,而判斷條件的變量個數不同
那么,必須在后面的運行任務時,將所有的涉及到的變量都設置進任務中,只不過,如果這個任務沒有涉及到這個變量的話,將該變量的值設為null
當准備滿足任務B的條件時,排他網關的判斷條件必須滿足#{((a==1 || a==3 ) && b==1)||(c==1 && b==3)}
可以看見,有兩種情況會讓工作流到B,但這兩種情況設計的變量不同,第一種兩種變量a和b,第二種則為變量b和c。
當我們在執行任務,並向任務重設置變量值時,比如設置b和c的值
variables.put("b", 3); variables.put("c", 1);
執行這個任務會出現錯誤:
org.activiti.engine.ActivitiException: Unknown property used in expression: #{((a==1 || a==3 ) && b==1)||(c==1 && b==3)} at
當將三個變量都設置,並且將無需賦值的變量的值設為null,便可以解決這個問題。
public void test3(){ String taskId="5308"; Map<String, Object> variables=new HashMap<>(); //variables.put("Xmtype",1); //variables.put("Branch",0551); //variables.put("amt",25000); variables.put("a", null); variables.put("b", 3); variables.put("c", 1); pe.getTaskService().complete(taskId, variables);
}