หน้านี้อธิบายไวยากรณ์ที่คุณต้องใช้เพื่อกรองบัญชี
ไวยากรณ์
ค่าทั้งหมดที่ไม่ใช่จำนวนเต็มต้องอยู่ในเครื่องหมายคำพูดคู่ (") ถึง ดูค่าใดที่ช่องหนึ่งๆ ยอมรับ โปรดดูส่วนอ้างอิง สำหรับช่องนั้น
คุณใช้ AND
เพื่อกรองช่องต่างๆ ในการค้นหาเดียวกันได้ นอกจากนี้คุณยัง
ใช้ AND
เพื่อรวมตัวกรอง relationship(...)
และ service(...)
หลายรายการ
นี่คือตัวอย่างที่รวม relationship(...)
และ service(...)
หลายรายการ
ตัวกรอง:
(relationship(service(type = "ACCOUNT_MANAGEMENT") AND service(handshakeState = "PENDING"))) OR (accountName = "store" AND relationship(...))
ตัวอย่างนี้แสดงบัญชีต่อไปนี้
บัญชีทั้งหมดที่มีความสัมพันธ์ในการจัดการบัญชีกับบัญชีอื่น และความสัมพันธ์เพิ่มเติมที่รอการยอมรับ
บัญชีทั้งหมดที่มีชื่อที่แสดง
"store"
ซึ่งมีความสัมพันธ์กับบัญชีอื่น
คุณใช้ AND
เพื่อกรองค่าหลายค่าในช่องเดียวกันไม่ได้ สำหรับ
เช่น คุณไม่สามารถใช้ accountName = "*A*" AND accountName = "*B*"
คุณใช้ OR
เพื่อกรองช่อง 2 ช่องในการค้นหาเดียวกันได้ ปิดฟิลเตอร์
เกณฑ์ในแต่ละด้านของโอเปอเรเตอร์ OR
ที่มีวงเล็บ ตัวอย่างเช่น
(accountName = "storeA") OR (accountName = "storeB")
คุณสามารถใช้ OR
เพื่อรวม 2 ช่องได้เท่านั้น ตัวอย่างเช่น คุณไม่สามารถใช้
(accountName = "storeA") OR (accountName = "storeB") OR (accountName =
"storeC")
ไม่อนุญาตให้ใส่เครื่องหมายวงเล็บนอกเหนือจากโอเปอเรเตอร์ AND
และ OR
และใน
การเรียกฟังก์ชัน เช่น relationship(...)
และ service(...)
สำหรับช่องสตริง เช่น accountName
และ accountIdAlias
คุณสามารถกรองหา
ที่มีคำหรือลำดับอักขระบางอย่างโดยปิดทับ
ตามลำดับเครื่องหมายดอกจัน (*
) เช่น accountName = "*foo*"
จะแสดงผลทั้งหมด
บัญชีที่มี accountName
ที่มี foo
เช่น "storeFoo"
คุณกรองค่าที่ไม่มีลำดับที่เฉพาะเจาะจงได้โดยใช้ !=
และ *
ตัวอย่างเช่น accountName != "*foo*"
จะแสดงผลบัญชีทั้งหมดที่มี
accountName
ที่ไม่มี foo
ระบบจะละเว้นการเว้นวรรคที่เกินมา ตัวอย่างเช่น foo AND bar
เหมือนกับ foo
AND bar
ข้อมูลจำเพาะ
ตัวกรองจะเป็นไปตามชุดย่อยของตัวกรอง AIP และ EBNF อย่างเป็นทางการ ไวยากรณ์:
filter
: accountFilterDisj
| accountFilterConj
;
accountFilterDisj
: "(" accountFilterConj " OR " accountFilterConj ")"
;
accountFilterConj
: accountFilter {" AND " accountFilter}
;
accountFilter
: displayNameFilter | relationshipFn
;
displayNameFilter
: "displayName" comparator value
;
relationshipFn
: "relationship(" relationshipConj ")"
;
relationshipConj
: relationshipFilter {" AND " relationshipFilter}
;
relationshipFilter
: "providerId = " numValue
| "callerHasAccessToProviderFilter()"
| "externalAccountId" comparator value
| "accountIdAlias" comparator value
| serviceFn
;
serviceFn
: "service(" serviceConj ")"
;
serviceConj
: serviceFilter {" AND " serviceFilter}
;
serviceFilter
: handshakeStateFilter
| typeFilter
;
handshakeStateFilter
: "handshakeState = " value
;
typeFilter
: "type = " value
;
comparator
: " = " | " != "
;