Creación de una condición de XML avanzado nueva

Después de crear el archivo *.greex, puede definir una condición de XML avanzado o regla Greex.

Puede crear dos tipos de condiciones de XML avanzado:
  • Condición de XML avanzado normal
  • Condición de XML avanzado basada en tablas de decisiones.

Condición de XML avanzado normal

Después de crear el archivo *.greex, puede definir una condición de XML avanzado normal o regla Greex.

Nota: Asegúrese de que no añade ningún comentario en la condición de XML avanzado o regla Greex de cualquier tipo.

La condición de XML avanzado normal es útil en el caso de que se necesite definir varios criterios de condición para una condición de XML avanzado y cada uno de los criterios esté asociado con atributos diferentes. Estos criterios de condición múltiples se definen utilizando construcciones IF y ELSE anidadas. Por ejemplo, puede que desee crear una condición de XML avanzado normal para los criterios de condición siguientes:

If Ordertype="WEB" and OrderQty="100", then TaxExemptFlag="N". 
Else
   If OriginalTotalAmount="1000" and OrderLine>"5", then
      discount="10" TaxExemptFlag="Y".
   Else TaxExemptFlag="N".

En este caso, tenemos varios criterios de condición y cada uno tiene atributos diferentes asociados con él. El primer criterio de condición tiene asociados Ordertype, OrderQty y Discount. Mientras que el segundo criterio de condición tiene asociados OriginalTotalAmount, OrderLine y TaxExemptFlag.

Estos criterios de condición se definen en el archivo *.greex utilizando construcciones IF y ELSE anidadas. A continuación se muestra un ejemplo de un archivo *.greex para condiciones de XML avanzado:

<GreexRule desc="Determine Discount and Tax Exemption based on 
                 various attributes" 
         id="getDiscountTaxExempt" 
         name="Get Discount and Tax Exempt" 
         returnType="Xml" 
         type=""> 
<If> 
   <Condition name="isDiscount20?"> 
     <Group op="and"> 
       <Expression>fn:equals(@orderType, &quot;WEB&quot;)</Expression>       
       <Expression>fn:equals(@orderQty, &quot;100&quot;)</Expression> 
     </Group> 
   </Condition> 
   <Return> 
     <Value output="&lt;Order TaxExemptFlag=&quot;N&quot;/>"/> 
   </Return> 
</If> 
<Else> 
  <If> 
    <Condition name="TaxExempted?"> 
     <Group op="and"> 
       <Expression>fn:equals(@OriginalTotalAmount, &quot;1000&quot;)</Expression> 
       <Expression>fn:intGreater(@orderLine,&quot;5&quot;)</Expression> 
     </Group> 
    </Condition> 
    <Return> 
       <Value output="&lt;Order discount=&quot;10&quot;            
                      TaxExemptFlag=&quot;Y&quot;/>"/> 
    </Return> 
   </If> 
<Else> 
   <Return> 
     <Value output="&lt;Order discount=&quot;20&quot;  
                    TaxExemptFlag=&quot;N&quot;/>"/> 
   </Return> 
</Else> 
</Else> 
</GreexRule>

Condición de XML avanzado basada en tablas de decisiones

Después de crear el archivo *.greex, puede definir una condición de XML avanzado normal o regla Greex.

Nota: Asegúrese de que no añade ningún comentario en la condición de XML avanzado o regla Greex de cualquier tipo.

Las condiciones de XML avanzado basadas en tablas de decisiones son útiles en casos donde tenga que definir varios criterios de condición anidados para una condición de XML avanzado, pero cada criterio de condición tenga los mismos atributos asociados con él. En estos casos, puede escribir sólo una condición y tener una tabla de parámetros que funcione como una sentencia de conmutación. En la condición de XML avanzado basada en tablas de decisiones se pueden definir varios criterios de condición anidados en una sola construcción IF. Por lo tanto, no hay ninguna construcción ELSE en el caso de condiciones de XML avanzado basadas en tablas de decisiones. La construcción IF contiene una matriz de valores constantes en lugar de un valor constante como era el caso de las condiciones de XML avanzado normales. La construcción IF tiene una tabla de parámetros que funciona como sentencia de conmutación.

Por ejemplo, puede que desee crear una condición de XML avanzado basada en tablas de decisiones para los criterios de condición siguientes:
If Ordertype="WEB" and OrderLineQty="200", then Discount="5". 
Else 
   If Ordertype="STORE" and OrderLineQty="500", then  Discount="7" 
Else  
  If Ordertype="CALL" and OrderLineQty="250", then Discount="3". 
  Else 
   default="0"

La siguiente tabla de decisiones describe el caso anterior:

Tipo de pedido

Cantidad de línea de orden

Descuento

RED

200

5

Tienda

500

7

CALLCENTER

250

3

default 0

En este caso, tenemos varios criterios de condición, pero cada uno tiene los mismos atributos asociados con él. Todos los casos de condiciones tienen atributos Ordertype, OrderLineQty, y Discount asociados con ellos. Por lo tanto, esta condición de XML avanzado sólo tiene una construcción IF y contiene una matriz de valores constantes.

Nota: Para una regla Greex basada en una tabla de decisiones, es obligatorio proporcionar un valor de retorno predeterminado. Éste es el valor que se devuelve si no se cumple ninguna condición IF.

Estos criterios de condición se definen en el archivo *.greex utilizando construcciones IF. A continuación se muestra un ejemplo de un archivo *.greex para condiciones de XML avanzado basadas en tablas de decisiones:

<GreexRule desc="Determine Discount based on some attributes"
           id="getDiscount"
           name="Get Discount"
           returnType="String"
           type="DecisionTable">>
 <If>
   <Condition name="isDiscount5?">
     <Group op="and">
       <Expression>fn:equals(@orderType, 
                  &quot;WEB|STORE|CALLCENTER&quot;)</Expression>
       <Expression>fn:equals(@orderLineQty, &quot;200|500|250&quot;)</Expression>
     </Group>
   </Condition>
   <Return>
      <Value default="0" output="5|7|3"/>
    </Return>
 </If> 
</GreexRule>