HCL Commerce Enterprise

Definiciones de plantilla de elementos de regla de precio

Las condiciones y acciones que se utilizan en las reglas de precios se basan en plantillas. Las plantillas se denominan definiciones de plantilla de elementos de regla de precio. Si va a personalizar una condición o acción, debe entender la finalidad y estructura de estas definiciones de plantillas antes de modificar una plantilla existente o crear una nueva.

En la paleta Creador de reglas de precios, cada condición y acción que un usuario de empresa puede añadir a una regla de precio es un elemento de regla de precio. Las definiciones de plantilla de elementos de regla de precio definen el diseño de los elementos de la regla de precio. Cada elemento de regla de precio de la paleta se asocia a una definición de plantilla. Por ejemplo, el elemento Condición de catálogo se asocia a la plantilla del elemento catalogCondition.

Las definiciones de plantilla de elementos de regla de precio se crea en XML. Este XML se denomina XML de tiempo de ejecución y su objetivo es el siguiente:
  • Especificar el nombre exclusivo del elemento de la regla de precio.
  • Especificar el mandato de tarea para el elemento de regla de precio.
  • Especificar los parámetros de la plantilla de elemento de precios que se deben pasar al mandato de tarea, si es necesario:
    • Para un elemento de condición, los parámetros definen los criterios para la condición. Por ejemplo, una condición puede requerir que un cliente pertenezca al grupo de miembros Nivel A. Si se cumple la condición, el mandato de tarea devolverá true.
    • Para un elemento de acción, los parámetros definen qué hacer, por ejemplo, para obtener un precio de una lista de precios o aplicar un redondeo a un precio.

Almacenamiento de las definiciones de plantilla de elementos

Tabla: PRELETEMPLATE

El XML de tiempo de ejecución se almacena en la columna RUNTIMEXML.

Formato del XML de tiempo de ejecución de regla de precio

El XML de tiempo de ejecución debe utilizar este formato:

<FlowElementImplementation type="UNIQUE_NAME">
    <Implementation invocationType="TaskCommand">
        <Class name="TASK_COMMAND_CLASS_NAME">
                <Argument name="paramName1" value="PRICERULE_paramValue1"/>
                <Argument name="paramName2" value="paramValue2"/>
        </Class>
    </Implementation>
</FlowElementImplementation>

Parámetros del XML de tiempo de ejecución de la regla de precio

En la lista siguiente se describen los parámetros que pueden contener el XML de tiempo de ejecución (utilice el ejemplo anterior como referencia):

tipo
Es el nombre exclusivo de la plantilla de elemento de regla de precio para esta condición o acción.
invocationType
Este valor siempre es TaskCommand.

Para el elemento <Class>: Cada condición y acción tiene un mandato de tarea asociado. Debe ser una clase que implemente la interfaz com.ibm.commerce.price.rule.commands.element.PriceRuleElementCmd y amplíe la clase com.ibm.commerce.price.rule.commands.element.PriceRuleElementCmdImpl.

name
Es el nombre de la clase de mandato de tarea de elemento de regla de precio para este elemento de regla de precio. Si va a crear una nueva condición o acción, cualquiera que sea el nombre que especifique aquí debe coincidir con el nombre del mandato de tarea personalizado que cree para dar soporte al nuevo elemento de regla de precio. A continuación se proporciona un ejemplo:
com.your_company_name.commerce.price.rule.commands.element.CustomNewRegisteredConditionElementCmd

Para el elemento <Argument>: El XML de tiempo de ejecución puede tener ninguno o varios de estos parámetros de plantilla de elementos de regla de precio. Para cada elemento de condición o acción de una regla de precio, los servicios de fijación de precios pasan los parámetros al mandato de la tarea de elemento de regla de precio. El mandato de tarea recupera los parámetros utilizando el método getElementParameters y luego utiliza los parámetros para evaluar la condición o realizar la acción.

name
Es el nombre del parámetro que se debe pasar al mandato de tarea para su proceso a fin de que la condición o acción pueda realizar su trabajo.
valor
Es el valor del parámetro. Si el valor del parámetro proviene de la interfaz de usuario, el valor debe estar en el formato PRICERULE_paramName. Si el valor del parámetro proviene de un lugar distinto de la interfaz de usuario, el valor no necesita el prefijo PRICERULE_.

Ejemplo

A continuación se muestra un ejemplo del XML de ejecución para una condición personalizada. Esta condición verifica si un cliente se ha registrado en una fecha determinada, antes o después de dicha fecha:

<FlowElementImplementation type = "RegistrationTimeCondition">
    <Implementation invocationType = "TaskCommand">
        <Class name = "com.mycompany.commerce.price.rule.commands.element.RegistrationTimeConditionElementCmd">
            <Argument name = "registrationTime" value = "PRICERULE_registrationTime"/>
            <Argument name = "registrationTimeOperator" value = "PRICERULE_registrationTimeOperator"/>
        </Class>
    </Implementation>
</FlowElementImplementation>