附錄\F.Server端元件屬性\InfoCommand

InfoCommand

【功能說明】

用途:屬於Server端的元件,用於對資料庫進行資料存取,提供一個虛擬SQL Command元件,以此SQL命令來取得後端資料庫的資料並傳遞給Client端。如要對資料進行儲存操作,則須與UpdateComponent配合使用。

 

【元件屬性】

ID(名稱)(string)

元件名稱,用於識別該元件。

 

CommandText(SQL命令)(string

EEP Server需要用本屬性的SQL命令來直接對資料庫進行存取,一般皆為Select的語法,代理Client從資料庫來取得資料,並傳回給Client。此SQL語法也可以用Left Join語法關聯多個Table

  

CommandType(SQL命令類別)(enum)

SQL命令的類別,可選為:

TextSQL命令句,一般都是設定為Text,預設也是。

StoredProcedure:資料庫的儲存程序。

 

Database(EEP資料庫名稱)(string)

可指定一個對應的DB,一般InfoCommand的資料集是不必設定此屬性的,因為會於每個Client Login時告知EEP Server,並讓InfoCommand可以依Client所設定的Database來動態存取資料,這樣做的目的,是為了資料庫名稱可以獨立於系統外面,但如果有多公司多廠的資料須相互整合時,就必須指定特定的資料庫來達到同時存取多個資料庫資料的目的。

  

RuntimeDatabase(Runtime資料庫名稱)(string)

可指定一個對應的DB,此為Runtime時才使用的DB,設計與預覽則使用原本的DB

 

Keys(主鍵欄位)(KeyItem)

指相對SqlCommand所指定主檔的主鍵欄位,一般為PrimaryKey,可以設定多個。此用在當與UpdateComp元件配合時,在Update/Delete語法中所必須定義的Where Keyfield欄位。

 

SecColumns(安全控管欄位)(FieldAttrCollection)

用來設定infoCommand中撈取出的欄位,是否需要根據特定Users/Groups才能返回欄位值,或是欄位是否有將Encryption設為true,需要將欄位值透過EncryptionKey加密後返回前端。

特殊控制每個欄位的預設值或是否更改,可以設定下列屬性:

(1)Field(欄位名稱)(string):所要控制的欄位名稱。

(2)Users(用戶列表) (string):有權限瀏覽欄位內容的用戶。

(3)Groups(角色列表)(string) :有權限瀏覽欄位內容的群組。

(4)Encryption (是否加密)(bool) True 代表此欄位返回前端前要進行加密。

 

SecStyle(安全模式)(enum)

用來控制資料安全的模式,目前可用的模式為:

(1) None不啟動:本InfoCommand不作任何資料安全控管。

(2) User:所有歸屬該User的資料都可以存取,啟動此命令時系統會自動為你加上where 欄位=UserID,因此,此功能必須在InfoCommandTable上必須要有這個欄位來存放UserID

(3) Group:所有歸屬該使用者相對的群組資料都可以存取,啟動此命令時系統會自動為你加上 where 欄位 IN (User群組),此功能必須在InfoCommandTable上必須要有這個欄位來存放GroupID

(4)Role : 所有歸屬該使用者相對的角色資料都可以存取,啟動此命令時系統會自動為你加上 where 欄位 IN (User角色),此功能必須在InfoCommandTable上必須要有這個欄位來存放RoleID

(5)Org: 所有歸屬該使用者相對的角色資料,並於組織圖中,並取得其所有下屬角色資料都可以存取,啟動此命令時系統會自動為你加上 where 欄位 IN (User角色及其下屬角色清單),此功能必須在InfoCommandTable上必須要有這個欄位來存放RoleID

(6)FlowHistory: 所有參與過此筆流程單據簽核的用戶都可以存取,此功能僅會參考FlowFlag欄位,因此無須額外搭配SecFields

 

SecField (SecStyle參考欄位)(string)

用來定義SecStyle的參考欄位名稱,如果SecStyle=ByUser就是指建檔者userid的欄位名稱,如果SecStyle=ByGroup即指此資料的所屬部門(群組)的欄位名稱。

 

SecExcept(安全管制例外)(string)

可以定義一個或多個例外的用戶(User/群組(Group/角色(Role),此屬性要搭配SecStyle作使用,SecStyle=UserSecExcept要填UseridSecStyle=Group, SecExcept則填GroupID,如果是多個則以”,””;”隔開。

 

SiteField(分割欄位)(string)

 

SelectPaging(分頁讀取)(bool)

會針對資料表的Key值欄位排序來取得一個次序編號,並以這個編號作為分頁的依據來直接定位分段資料且將資料取出。

 

TrimStringData (去除字串空白)(bool)

針對資料中後方的空白做去除的動作

 

Descent (降冪排序)(bool)

依照設定的Keys值欄位對資料做降冪排序。

 

CacheData(緩存數據)(bool)

對於已加載的資料會緩存下來,不必每次重新撈取。

 

CacheTTL(緩存時間)(string)

以分為單位,預設24小時(1440)。時間到會自動清除緩存資料。

 

CacheSynchronize(緩存同步)(enum)

 

 

CacheVerifyField (緩存驗證欄位)(string)

 

 

 Parameters(參數) (InfoParameters)

用於Stored Procedure,包括以下屬性:

(1)Name(參數名)(System.String):參數名

(2)SqlType(類型) (Srvtools.InfoDbType):設定該參數在資料庫中對應的欄位類型。

(3)Value() (System.Object):獲取或設置該參數的值。

 

NonLogon(免登入)(bool)

此屬性是搭配免登入功能做使用,如果有使用免登入功能的頁面,該RWD表單所對應的Server端如果有用到InfoCommand組件的話,也須將NonLogon屬性設為True才能讓免登入的用戶存取數據。

 

EncryptionKey (加密密碼)(string)

此屬性用來存放加密資料所使用的密鑰。

 

【事件】

OnBeforeExecuteSQL(infocommand執行前): ExecuteSQL前所要執行的事件。

EX,替換前端查詢條件的欄位名稱:
public string 客戶資料表_onBeforeExecuteSQL(object sender, string sql, List<string> whereStrs)

{

 

    for (var i = 0; i < whereStrs.Count; i++) {

        whereStrs[i] =  whereStrs[i].Replace("M_SVS", "A.M_MA");  //M_SVS別名欄位換成實際的A.M_MA欄位

    }

    return sql;

}


 

Top of Page