附錄\E.Workflow Expression格式說明

E.Workflow Expression格式說明

WorkFlow Activity設計中,部分的Activity元件可以設定一些條件判斷式,這些條件的運算式可決定流程的流動方向或者用來判斷是否成立等等,我們將這些Expression的規則定義如下,供大家參考:

 

A.字符串類型

字符串類型(包括日期類型)的欄位在WorkFlow的運算式可以寫成:『Column Name+Operator+ ”value,注意Valuse也可以是另一個欄位,此時Value請不要使用雙引號,下面介紹不同的Operator(運算元)的作用:

運算元

含義

說明

=

like查詢

ColumnName= ”value” 表示為『Column Namelike ‘value%’的意思,如:

Addresss=”台北市,代表地址為台北開頭

==

等於

Column Name== ”value” 表示為『Column Name』等於value

注意:當表達式表示為Column Name== ””時,代表欄位是否為空,如:

UserCode==”A03”,代表UserCode是否為”A03”

Grade==””,代表Grade為空時

Address1==Address2,代表Address1是否等於Address2

!=

不等於

Column Name!= ”value” 表示為『Column Name』不等於value的意思,注意!當表達式表示為Column Name!= ””時,代表欄位是否不為空白,如:

UserName!=””,代表UserName是否不為空白

Unit!=”,代表Unit是否不為的單位

>=

大於等於

如:

CreateDate>=”2007-01-01代表CreateDate是否大於等於20070101,注意日期的格式須遵照我們的格式

<=

小於等於

如:

OrderDate<=”2008-04-30代表OrderDate是否小於等於20080430

OrderDate<=CreateDate,代表OrderDate是否小於CreateDate

大於

如:

Grade>’A’Grade是否大於’A’

小於

如:

Style<’4’Style小於4’

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

 

簡易ANDOR的處理:

Expression支援簡易的 && (AND) || (OR)處理,如下:

OrderAmount>=3000 && Level>”3”

OrderDate>=”2008-06-01” || OrderAmount>=5000

 Server MethodValidate處理:

可以透過Server Method的方式來處理Validate,如下的格式:

ServerModuleDllName.ServerMethodName()

ServerModuleDllName代表Server端的DLL模組名稱。

ServerMethodName代表Server Method的名稱,注意需在ServiceManagerServiceCollection去設定此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;

       }

 

Top of Page