在WorkFlow
Activity設計中,部分的Activity元件可以設定一些條件判斷式,這些條件的運算式可決定流程的流動方向或者用來判斷是否成立等等,我們將這些Expression的規則定義如下,供大家參考:
A.字符串類型
字符串類型(包括日期類型)的欄位在WorkFlow的運算式可以寫成:『Column Name』+『Operator』+ ”『value』”,注意Valuse也可以是另一個欄位,此時Value請不要使用雙引號,下面介紹不同的Operator(運算元)的作用:
運算元 |
含義 |
說明 |
= |
like查詢 |
ColumnName= ”value” 表示為『Column Name』like ‘value%’的意思,如: Addresss=”台北市”,代表地址為”台北”開頭 |
== |
等於 |
Column Name== ”value” 表示為『Column Name』等於value 注意:當表達式表示為Column Name== ””時,代表欄位是否為空,如: UserCode==”A Grade==””,代表Grade為空時 Address1==Address2,代表Address1是否等於Address2 |
!= |
不等於 |
Column Name!= ”value” 表示為『Column Name』不等於value的意思,注意!當表達式表示為Column Name!= ””時,代表欄位是否不為空白,如: UserName!=””,代表UserName是否不為空白 Unit!=”天”,代表Unit是否不為”天”的單位 |
>= |
大於等於 |
如: CreateDate>=” |
<= |
小於等於 |
如: OrderDate<=” OrderDate<=CreateDate,代表OrderDate是否小於CreateDate |
> |
大於 |
如: Grade>’A’,Grade是否大於’A’ |
< |
小於 |
如: Style<’ OrderDate<=CreateDate,代表OrderDate是否小於CreateDate |
B.數值類型
當在運算式中欄位類型為數值類型時,也是與字串相似的,差別的是將『value』前後的引號去除即可。表達方式為:『Column Name』+『Operator』+ 『value』,下面介紹不同的Operator(運算元)的作用:
運算元 |
含義 |
說明 |
= |
等於 |
Column Name= Value表示為『Column Name』是否等於Value,如: Term=3,代表Term是否等於3 |
>= |
大於等於 |
Column Name>=Value表示為『Column Name』是否大於等於Value,如: TotalAmt>=5000,代表TotalAmt是否等於5000 |
<= |
小於等於 |
Column Name<=Value表示為『Column Name』是否小於等於Value,如: UnitPrice<=10000,代表TotalAmt是否小於等於10000 |
> |
大於 |
如: Days>3,代表Days是否大於3天 |
< |
小於 |
如: OrderAmount<3000,代表OrderAmount是否小於3000 |
!= |
不等於 |
如: UnitPrice!=0,代表UnitPrice是否不等於0 |
簡易AND與OR的處理:
Expression支援簡易的 &&
(AND)與 || (OR)處理,如下:
OrderAmount>=3000
&& Level>”
OrderDate>=”
Server
Method的Validate處理:
可以透過Server
Method的方式來處理Validate,如下的格式:
ServerModuleDllName.ServerMethodName()
ServerModuleDllName代表Server端的DLL模組名稱。
ServerMethodName代表Server Method的名稱,注意需在ServiceManager的ServiceCollection去設定此ServerMethod,否則無法被呼叫。
範例如下:
在Expression這樣設定: SOrders.CheckServer()
public object[] CheckServer(object[] objParam)
{
object[] ret= new object[] {
0,0};
DataRow dr=(DataRow)
objParam[0]; //取得流程資料表的欄位明細
if ( Convert.ToInt16(dr["TotalAmt"]) >= 1000) //對TotalAmt做比較
{
ret[1] = true; // 成功傳回True (只能傳回True/False)
}
else
{
ret[1]
= false; // 否則傳回False
}
return ret;
}