Cú pháp bộ lọc

Trang này giải thích cú pháp bạn phải sử dụng để lọc tài khoản.

Cú pháp

Tất cả các giá trị không phải là số nguyên đều phải được đặt trong dấu ngoặc kép ("). Để tìm hiểu các giá trị mà một trường cụ thể chấp nhận, hãy xem tài liệu tham khảo cho trường đó.

Bạn có thể sử dụng AND để lọc nhiều trường trong cùng một cụm từ tìm kiếm. Bạn cũng có thể dùng AND để kết hợp nhiều bộ lọc relationship(...)service(...). Dưới đây là ví dụ kết hợp nhiều bộ lọc relationship(...)service(...):

(relationship(service(type = "ACCOUNT_MANAGEMENT") AND service(handshakeState = "PENDING"))) OR (accountName = "store" AND relationship(...))

Ví dụ này trả về các tài khoản sau:

  • Tất cả tài khoản có mối quan hệ quản lý tài khoản với một tài khoản khác và một mối quan hệ khác đang chờ chấp nhận.

  • Tất cả tài khoản có tên hiển thị "store", có mối liên hệ với các tài khoản khác.

Bạn không thể dùng AND để lọc nhiều giá trị trong cùng một trường. Ví dụ: bạn không thể sử dụng accountName = "*A*" AND accountName = "*B*".

Bạn có thể sử dụng OR để lọc 2 trường trong cùng một cụm từ tìm kiếm. Đặt tiêu chí lọc ở mỗi bên của toán tử OR bằng dấu ngoặc đơn. Ví dụ: (accountName = "storeA") OR (accountName = "storeB")

Bạn chỉ có thể sử dụng OR để kết hợp 2 trường. Ví dụ: bạn không thể sử dụng (accountName = "storeA") OR (accountName = "storeB") OR (accountName = "storeC").

Bạn không được phép sử dụng dấu ngoặc đơn ngoại trừ toán tử ANDOR, cũng như trong các lệnh gọi hàm, chẳng hạn như relationship(...)service(...).

Đối với các trường chuỗi như accountNameaccountIdAlias, bạn có thể lọc các giá trị chứa một từ hoặc chuỗi ký tự nhất định bằng cách đặt chuỗi đó trong dấu hoa thị (*). Ví dụ: accountName = "*foo*" trả về tất cả các tài khoản có accountName chứa foo, chẳng hạn như "storeFoo".

Bạn có thể lọc tìm các giá trị không chứa một trình tự nhất định bằng cách sử dụng !=*. Ví dụ: accountName != "*foo*" trả về tất cả các tài khoản có accountName không chứa foo.

Các khoảng trắng thừa sẽ bị bỏ qua. Ví dụ: foo AND bar giống với foo AND bar.

Thông số kỹ thuật

Các bộ lọc này tuân theo một tập hợp con thông số kỹ thuật bộ lọc AIPngữ pháp EBNF chính thức của bộ lọc đó:

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
    : " = " | " != "
    ;