因爲缺乏對「用戶」數據類型結構的明肯定義,在設計InfoPath表達式時每每會耗用大量時間嘗試,並且不必定能獲得指望結果。下面對用戶數據類型的結構進行詳細解析。數據結構
>> 什麼是用戶數據類型spa
用戶數據類型即保存用戶信息的數據類型。直觀上,在InfoPaht「域」列表中它前面是兩個小人的圖片;點擊「域屬性」,其數據類型爲「UserType」;用戶數據類型缺省對應的控件類型爲「我的/組選擇器」。設計
>> 數據結構定義code
爲方便表述,下面用「UserType」表述用戶數據類型對應的類名。借用面嚮對象語言的表達方式,其成員及屬性結構以下:對象
UserType.Person
UserType.Person.DisplayName
UserType.Person.AccountId
UserType.Person.AccountType
>> 類及成員字符串取值blog
在InfoPath表達式中對域值作比較時,通常會首先將其轉換爲字符串,下面以一個示例說明其字符串化後的取值:圖片
UserType — 諸葛亮SHUGUO\liang.zhugeUser
UserType.Person — 諸葛亮SHUGUO\liang.zhugeUser
UserType.Person.DisplayName — 諸葛亮 UserType.Person.AccountId — SHUGUO\liang.zhuge
UserType.Person.AccountType — User
>> 如何應用字符串
對於用戶數據類型的一種應用場景是比較當前用戶是否等於某個用戶數據類型的字段值。獲取當前用戶對應的方法是:userName(),但其返回值形如「liang.zhuge」。因此,若直接拿用戶數據類型的域與userName比較,必定沒法達到預期結果。因此,對於這種狀況,可建立一個規則,並設計以下條件來實現:class
AccountId 包含 userName()