java中activiti框架中的排他網關使用方法,多條件判斷


當排他網關的判斷條件中出現多個條件時,需要注意,設置判斷條件時,可能遇到,流向相同的任務,而判斷條件的變量個數不同

那么,必須在后面的運行任務時,將所有的涉及到的變量都設置進任務中,只不過,如果這個任務沒有涉及到這個變量的話,將該變量的值設為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);
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM