بنية الفلتر

توضّح هذه الصفحة البنية التي يجب استخدامها من أجل فلترة الحسابات.

البنية

يجب وضع جميع القيم بخلاف الأعداد الصحيحة بين علامتي اقتباس مزدوجتين ("). إلى فتعرف على القيم التي يقبلها حقل معين، فيمكنك مراجعة المرجع ذات صلة لهذا الحقل.

يمكنك استخدام 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
    : " = " | " != "
    ;