制定及測試成員資格查詢
本文將說明如何設計及測試成員查詢,確保系統能傳回正確的使用者。
事前準備
請先執行下列工作,再繼續瞭解本頁資訊:
參閱 Groups API 總覽。
請參閱動態群組總覽。
設計及測試查詢
會員查詢的格式為 target_field condition
,並以一般運算語言 (CEL) 運算式格式呈現。如要瞭解可用的 User
資源欄位,請參閱「動態群組的有效使用者屬性」。
查詢範例
以下範例說明如何使用 exists()
CEL 函式,檢查 user.addresses
欄位中的特定值:
user.addresses.exists(ad, ad.locality=='Sunnyvale')
exists()
巨集可用於建立清單類型欄位的會員查詢。
如要在單一清單項目中檢查多個值、(建築物) area
和 building_id
,請參考以下範例:
user.locations.exists(loc, loc.area=='Sunnyvale' && loc.building_id=='Building 1')
以下範例說明如何找出屬於特定機構單位的使用者:
- 特定機構單位下的所有直接使用者:
user.org_unit_id==orgUnitId('03ph8a2z1enx4lx')
- 特定機構單位下的所有直接和間接使用者:
user.org_units.exists(org_unit, org_unit.org_unit_id==orgUnitId('03ph8a2z1khexns'))
user.name.value.equalsIgnoreCase('jOhn DoE')`
查詢中的否定
您可以在會員查詢中使用 NOT !
運算子,排除具有特定屬性的使用者。例如:
所有不屬於特定機構單位的使用者:
!(user.org_unit_id==orgUnitId('03ph8a2z1enx4lx'))
所有不屬於
Marketing
機構的使用者:!user.organization.exists(org, org.title = "Marketing")
系統不支援 NOT !
運算子和 exists()
巨集的部分組合:
任何使用
exists()
巨集的 NOT!
查詢,並在其中使用 AND&&
運算子:!user.organization.exists(org, (org.title == "Cloud" && org.department == "Sales"))
任何使用
exists()
巨集的查詢,且其中含有 NOT!
運算子:user.organization.exists(org, (org.title == "Cloud" || !(org.department == "Sales")))
測試成員資格查詢
如要測試會員查詢,您可以使用簡易查詢建構工具。您可以使用下拉式選單和文字欄位輸入及測試查詢。確認會員查詢傳回正確結果後,您就可以使用 Groups API 建立對應的 CEL 查詢。
自訂使用者屬性
只要 user.custom_schemas
中已存在自訂結構定義,您就可以在動態群組查詢中使用自訂使用者屬性,但簡易查詢建構工具的下拉式選單不支援這些屬性。如要測試自訂使用者屬性的查詢,請直接在「輸入 CEL 查詢」文字方塊中,以 CEL 查詢格式輸入查詢。自訂結構定義範例如下所示:
{
"schemaName": "employmentData",
"fields": [
{
"fieldName": "EmployeeNumber",
"fieldType": "STRING",
"multiValued": "false"
},
{
"fieldName": "JobFamily",
"fieldType": "STRING",
"multiValued": "true"
}
]
}
單值欄位
user.custom_schemas.employmentData.EmployeeNumber == 'value'
多值欄位
user.custom_schemas.employmentData.JobFamily.exists(fld, fld == 'value')
後續步驟
測試成員資格查詢後,您可以在建立群組時使用這項查詢。詳情請參閱「建立動態群組」。