制定及測試成員資格查詢

本文將說明如何設計及測試成員查詢,確保系統能傳回正確的使用者。

事前準備

請先執行下列工作,再繼續瞭解本頁資訊:

設計及測試查詢

會員查詢的格式為 target_field condition,並以一般運算語言 (CEL) 運算式格式呈現。如要瞭解可用的 User 資源欄位,請參閱「動態群組的有效使用者屬性」。

查詢範例

以下範例說明如何使用 exists() CEL 函式,檢查 user.addresses 欄位中的特定值:

user.addresses.exists(ad, ad.locality=='Sunnyvale')

exists() 巨集可用於建立清單類型欄位的會員查詢。

如要在單一清單項目中檢查多個值、(建築物) areabuilding_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')

後續步驟

測試成員資格查詢後,您可以在建立群組時使用這項查詢。詳情請參閱「建立動態群組」。