簡單設置eworkflow條件的方式

在eworkflow自定義工做流產品中,設置條件節點,是在節點的後續連線上設置的。每個處理節點(除結束節點外)都至少有一條連線鏈接到下一個節點,當有多條連線鏈接到其餘節點的時候,就須要在多出的連線上設置條件了。多出的每條連線上,均可以設置一個條件,條件返回true或false,true表明條件成立,當流程流轉到此時,條件返回true的,則會走此條連線到達下一個節點。條件設置能夠是一個表達式,返回true或false, 也能夠是一段自定義的函數,結尾返回true或false。 java

當流程流轉時,全部條件都不成立,則會走沒有設置條件的那條連線,即無條件結果連線,到達下一個節點。數據庫

當一個節點就一條連線鏈接到下一個節點,則爲無條件結果,每次執行完節點的處理後,無條件流轉到結果連線的下一個節點。c#

當一個節點有多條連線鏈接到多個後續節點,則就須要在多出的連線上設置條件,讓其中一條連線不設置條件,表明無條件結果連線。當流程流轉的時候,取條件連線上的條件判斷,返回true,則流轉到此連線的下一個節點。當全部條件都不知足了,則流轉到沒有設置條件的無條件結果連線下一個節點。jsp

有條件結果連線上面的條件設置,能夠是一個表達式,返回true或者false,也能夠是一個自定義的函數,通過一序列的邏輯判斷運算結果後,得出true或者false.函數

當條件爲一個表達式時,常常須要取節點上操做的業務表單中的數據來作判斷。orm

如費用報銷單,須要取報銷人填寫的金額來作判斷,報銷金額大於3000元的,須要總經理審覈,小於等於3000元的就部門經理審覈。blog

取業務表單中,用戶填寫的關鍵信息,須要在提交時,將這關鍵信息傳遞到流程中,流程在執行條件判斷的時候,就能取到這些值來作判斷。事件

在eworkflow中,咱們經常使用的方式是,在eform表單中,將須要送入流程中作條件判斷的字段,選擇爲 流程用。get

在eworkflow流程的節點中,設置節點辦理的eform表單,並設置前置事件,"將數據集中的字段信息保存到流程變量中"。input

這樣在設置條件的時候,經過嚮導引入,就能取到這些用於流程中的關鍵信息了。

導入條件: eworkflow for java版本的,條件表達式用java的語法;

 propertySet.getString("dept_audit").equals("0")

eworkflow for dotnet版本,條件表達式用c#的語法:

 propertySet.getString("dept_audit").Equals("0")或者propertySet.getString("dept_audit")=="0"

這樣作的結果是,將這些業務處理表單中的關鍵信息,經過前置函數 "將數據集中的字段信息保存到流程變量中"  做爲持久化變量保存到工做流系統中了。持久化變量只要存入了系統,就一直能取到結果,即便流程運行結束了,也會保存在系統中。

若是這些變量只須要一次使用,後續的節點不須要再獲取使用的話,能夠直接作臨時變量,即不設置節點的前置函數 「將數據集中的字段信息保存到流程變量中 」持久化這些變量,只將業務表單中的關鍵信息送到流程流轉中,用於調節判斷,判斷完成後,流轉結束了,變量的值也消失。即臨時變量,僅存在於流程的這一次流轉當中。

用臨時變量作eworkflow條件節點的表達式判斷 eworkflow for java版本,條件表達式用java語法:  字符型的  transientVars{"字段名"}.equals("值")  數字型的  Double.parseDouble(transientVars{"字段名"})>值  

eworkflow for dotnet版本,條件表達式用c#語法:  字符型的  transientVars["字段名"].ToString()=="值" 或transientVars["字段名"].ToString().Equals("值")  數字型的  Double.Parse(transientVars["字段名"].ToString())>值

 

利用臨時變量的方式,簡單方便,不須要設置前置函數"將數據集中的字段信息保存到流程變量中" 注:前置函數「將數據集中的字段信息保存到流程變量中」 這個函數的做用 就是將表單中送入流程中作使用的變量持久化到數據庫表中。

若是節點上不掛接eform自定義的表單,而是直接的jsp或aspx的話,則在準備送入流程中使用的關鍵變量時,就不用準備inputs中的 field_type的map了。

用臨時變量更方便,也不會將變量持久化到數據庫表中。

相關文章
相關標籤/搜索