توضّح هذه الصفحة البنية التي يجب استخدامها من أجل فلترة الحسابات.
البنية
يجب وضع جميع القيم باستثناء الأعداد الصحيحة بين علامتَي اقتباس مزدوجتَين ("). ولمعرفة القيم التي يقبلها حقل معيّن، يُرجى الاطّلاع على الوثائق المرجعية لذلك الحقل.
يمكنك استخدام 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
للفلترة بحثًا عن حقلين في طلب البحث نفسه. ضع معايير عامل التصفية على كل جانب من عوامل
OR
بين قوسين. مثلاً،
(accountName = "storeA") OR (accountName = "storeB")
.
لا يمكنك استخدام سوى OR
للجمع بين حقلين. على سبيل المثال، لا يمكنك استخدام
(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
: " = " | " != "
;