หน้านี้อธิบายไวยากรณ์ที่คุณต้องใช้เพื่อกรองบัญชี
ไวยากรณ์
ค่าทั้งหมดที่ไม่ใช่จำนวนเต็มจะต้องอยู่ในเครื่องหมายคำพูด 2 ขีด (") หากต้องการดูว่าช่องใดช่องหนึ่งยอมรับค่าใด โปรดดูเอกสารอ้างอิงของช่องนั้นๆ
คุณใช้ 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
: " = " | " != "
;