Definindo consultas complexas

As consultas complexas ajudam a restringir uma listagem detalhada que é obtida como saída de uma API. Para gerar a saída desejada, você pode passar consultas usando os operadores And ou Or no XML de entrada de uma API.

Por exemplo, você pode consultar a API getItemList com base na unidade de medida, no código do grupo de itens ou em qualquer parâmetro fornecido na definição da API, usando os operadores de consulta complexos, And ou Or.

As consultas complexas são suportadas para as APIs a seguir:
  • deletePricelistAssignmentList
  • deletePricingRuleAssignmentList
  • getAttributeAllowedValueList
  • getClassificationPurposeList
  • getCustomerContactList
  • getExceptionList
  • getInventoryReservationList
  • getItemList
  • getOrderLineList
  • getOrderList
  • getOrganizationList
  • getSearchIndexTriggerList
  • getShipmentList
  • getShipmentLineList

Para obter mais informações, consulte o Javadoc. Para obter mais informações sobre as colunas válidas do banco de dados, consulte Diagramas de relacionamento de entidades (ERDs).

Observação: somente as entidades de item, organização, pedido, linha de pedido, remessa e linha de remessa são compatíveis com a realização de consultas complexas. Os atributos para consulta complexa devem mapear diretamente para colunas de banco de dados válidas dessas entidades e devem estar dentro do mesmo elemento XML.

Exemplo: adição de consultas complexas na API getItemList

Considere o seguinte cenário para adicionar consultas complexas à API getItemList.

A API getItemList retorna uma lista de itens com base nos critérios de seleção especificados no XML de entrada, como atributos de item, aliases e categoria. Você pode criar consultas complexas no getItemList input XML, conforme mostrado no exemplo a seguir:
<Item OrganizationCode="ARGOS" ItemGroupCode="PROD" > 
  <PrimaryInformation KitCode="BUNDLE" KitCodeQryType="NE">
  </PrimaryInformation> 
    <ComplexQuery Operator="AND"> 
       <And> 
          <Or> 
            <Exp Name="ProductLine" Value="DO" QryType="EQ"/> 
            <Exp Name="ProductLine" Value="Expert" QryType="EQ"/>     
          </Or> 
        </And> 
    </ComplexQuery> 
</Item>

OrganizationCode e ItemGroupCode são os dois atributos do elemento <Item> e KitCode e KitCodeQryType são os atributos do elemento <PrimaryInformation> que são considerados neste exemplo. No entanto, você pode incluir qualquer um ou todos os atributos na getItemList . Todos os atributos na API são interpretados com um And implícito juntamente com o operador de consulta complexa.

Aplique as seguintes regras quando você incluir consultas complexas:

  • Você pode definir apenas um ComplexQuery em um único elemento. Por exemplo, você não pode ter dois operadores ComplexQuery em um elemento Item.
  • Não é possível incluir uma única consulta complexa em duas tabelas diferentes. Por exemplo, na API getShipmentList, você não pode usar ChainedFromOrderHeaderKey e ShipmentLineNo na mesma consulta, pois o primeiro pertence à tabela YFS_ORDER_LINE e o segundo é um atributo da tabela YFS_SHIPMENT_LINE.
  • O atributo sem valor não é considerado na consulta complexa, como Attribute="".
  • Para atributos anexados com QryType, especifique um valor de tipo de consulta a partir da tabela a seguir. Essa opção faz distinção entre maiúsculas e minúsculas.

Os valores dos atributos QryType variam de acordo com o tipo de dados do campo. A tabela a seguir lista os valores de tipo de consulta compatíveis que são usados pelas APIs de lista para cada tipo de dados.

Campo DataType Valores de Tipo de Consulta Suportados
Char/VarChar2
  • EQ - Igual a
  • FLIKE - Inicia com
  • LIKE - Contém
  • GT - Maior que
  • LT - Menor que
  • NE - Não igual a
  • VOID - Anular
  • NOTVOID - Não anular
Número
  • BETWEEN - Intervalo de valores
  • EQ - Igual a
  • GE - Maior ou igual a
  • GT - Maior que
  • LE - Menor ou igual a
  • LT - Menor que
  • NE - Não igual a
Data
  • DATERANGE - Intervalo de datas
  • EQ - Igual
  • GE - Maior ou igual a
  • GT - Maior que
  • LE - Menor ou igual a
  • LT - Menor que
  • NE - Não igual a
Data-Hora
  • BETWEEN - Intervalo de datas
  • EQ - Igual
  • GE - Maior ou igual a
  • GT - Maior que
  • LE - Menor ou igual a
  • LT - Menor que
  • NE - Não igual a
Nulo
  • ISNULL - Retornar registros que são nulos.
  • NOTNULL - Retornar registros que não são nulos.
Nota: esses dois tipos de consulta são usados quando a coluna ou atributo é configurado como Nullable no XML da entidade.
  • Só pode haver um elemento sob o ComplexQuery, ou seja, And ou Or.
  • Os elementos And ou Or podem ter um ou muitos elementos filhos, conforme necessário.
  • Os elementos And ou Or podem ter outros elementos de expressão And ou Or como elementos filhos.

Este exemplo pode ser interpretado como a expressão lógica a seguir:

( YFS_ITEM.ORGANIZATION_CODE =  'ARGOS'   ) AND ( YFS_ITEM.ITEM_GROUP_CODE =  'PROD'   ) 
AND ( YFS_ITEM.KIT_CODE <>  'BUNDLE'   ) AND  (  (   YFS_ITEM.PRODUCT_LINE =  'DO'   )  
OR  ( YFS_ITEM.PRODUCT_LINE =  'Expert'   )  )

Esses exemplos explicam como incluir consultas complexas para obter os resultados desejados de seu banco de dados usando as APIs mencionadas.