HCL Commerce Enterprise

Crear la definición de objeto para el elemento de regla de precio

Cree una definición de objeto para la nueva condición o acción para recopilar la entrada de la interfaz de usuario del Centro de gestión. Cuando los usuarios de negocio cumplimentan datos acerca de la nueva condición o acción en una regla de precios, la definición del objeto mantiene los datos en dos tablas: PRELEMENT y PRELEMENTATTR.

Antes de empezar

Por qué y cuándo se efectúa esta tarea

La definición de objeto para un nuevo elemento de regla de precios es un archivo de definición XML que contiene una definición que utiliza el elemento <FlowElementObjectDefinition>.

Procedimiento

  1. Abra HCL Commerce Developer y cambie a la vista Explorador de empresa.
  2. Cree un directorio para almacenar la nueva definición de objeto de elemento de regla de precio.
    Puede almacenar el archivo en una estructura de directorios parecida a la del ejemplo siguiente:

    LOBTools\WebContent\WEB-INF\src\xml\your_company_name\price\objectDefinitions\priceRuleBuilder

  3. Cree un nuevo archivo de definición para la definición del objeto de elemento de regla de precio. Asigne un nombre al archivo utilizando esta sintaxis:

    pricerule_element_nameFlowElementObjectDefinition.xml; por ejemplo,

    RegistrationTimeConditionFlowElementObjectDefinition.xml

  4. Defina la definición del objeto del elemento.

    El siguiente código XML es un ejemplo simple de una definición de objeto para un nuevo elemento de condición. El ejemplo está dividido en cuatro partes, y cada parte se explica en un paso después de la tabla.

    Ejemplo de definición de objeto
    1
    <Definitions>
    
      <FlowElementObjectDefinition 
         definitionName = "prcRegistrationTimeConditionElementObject" 
         displayName = "${prcMyPriceResources.RegistrationTimeCondition_displayName}" 
         elemTemplateType="Condition" 
         objectType = "RegistrationTimeCondition"      
         flowIcon = "RegistrationTimeConditionElementIcon" 
         headerIcon = "RegistrationTimeConditionElementHeaderIcon" 
         paletteIcon = "RegistrationTimeConditionPaletteIcon" 
         package="cmc/price" 
         propertiesDefinitionName = "prcRegistrationTimeConditionElementProperties" 
         summaryClass = "prcRegistrationTimeConditionElementSummary">
    
    2
            <CreateService baseDefinitionName = "prcFlowElementCreateService">
                <ServiceParam name = "PROPERTY_registrationTime" propertyName = "registrationTime"/>
                <ServiceParam name = "PROPERTY_registrationTimeOperator" propertyName = "registrationTimeOperator" optional = "true"/>
            </CreateService>
            <UpdateService baseDefinitionName = "prcFlowElementUpdateService">
                <ServiceParam name = "PROPERTY_registrationTime" propertyName = "registrationTime"/>
                <ServiceParam name = "PROPERTY_registrationTimeOperator" propertyName = "registrationTimeOperator" optional = "true"/>
            </UpdateService>
    3
            <PropertyDefinition propertyName = "registrationTime" required = "true" type = "date"/>
            <PropertyDefinition propertyName = "registrationTimeOperator">
                <PropertyValue displayName = "${prcMyPriceResources.RegistrationTimeCondition_lessComparison}" value = "<"/>
                <PropertyValue displayName = "${prcMyPriceResources.RegistrationTimeCondition_greatComparison}" value = ">"/>
                <PropertyValue displayName = "${prcMyPriceResources.RegistrationTimeCondition_equalComparison}" value = "="/>
            </PropertyDefinition>
    4
            <Xml name = "template">
                <elemTemplateName>RegistrationTimeCondition</elemTemplateName>
                <registrationTimeOperator><</registrationTimeOperator>
            </Xml>
        </FlowElementObjectDefinition>
    </Definitions>
    1. Para la sección 1 del ejemplo, especifique los siguientes atributos para la definición de objeto:
      definitionName
      Nombre exclusivo para esta definición de elemento de regla de precio. Utilice el nombre que desee.
      displayName
      Texto de visualización para el elemento de regla de precio. Puede proporcionar una serie estática o puede proporcionar una referencia a un recurso de su paquete compuesto de recursos personalizado, tal como se muestra en el código de ejemplo.
      elemTemplateType
      Tipo de elemento de regla de precio; el valor puede ser Condición o Acción.
      objectType
      Nombre para este tipo de objeto de regla de precio. Utilice el mismo nombre que ha utilizado para la definición de plantilla de elementos de regla de precio asociada, que se almacena como valor IDENTIFIER en la tabla PRELETEMPLATE. Al añadir más adelante esta condición o acción al Creador de reglas de precios, debe especificar este valor de objectType en el archivo priceRuleBuilder.xml.
      flowIcon
      El recurso de imagen para el elemento de regla de precio que se visualiza en el área de trabajo del Creador de reglas de precios.
      headerIcon
      El recurso de imagen para el elemento de campaña que se visualiza en la esquina superior izquierda de la vista de propiedades del elemento de regla de precios.
      paletteIcon
      El recurso de imagen para el elemento de regla de precios que se visualiza en la paleta del Creador de reglas de precios.
      package
      Utilice el valor cmc/price, que indica que esta definición de objeto es para un elemento de regla de precios.
      propertiesDefinitionName
      Opcional: El nombre de la definición que se debe utilizar para visualizar la vista de propiedades de este objeto de elemento de regla de precios. Si su elemento de regla de precios requiere entrada de un usuario de negocio, debe crear una definición de vista de propiedades personalizada para la interfaz de usuario, lo que se describe en el procedimiento Crear la vista de propiedades para el elemento de regla de precio. Puede poner un nombre a su definición de vista de propiedades personalizada ahora o puede actualizar este atributo más adelante, después de que haya creado la definición de vista de propiedades personalizada.
      summaryClass
      Opcional: El nombre de la clase a utilizar para visualizar el resumen de este objeto de elemento de regla de precio. El texto de resumen se visualiza en el área de trabajo del Creador de reglas de precios, debajo del icono de elemento de regla de precio. Si su elemento de regla de precio requiere este texto de resumen, debe crear una clase de resumen personalizada, lo que se describe en el procedimiento Crear el resumen para el elemento de regla de precio. Puede poner un nombre a su clase de resumen personalizada ahora o puede actualizar este atributo más adelante, después de que haya creado la clase de resumen personalizada.
    2. Para la sección 2 del ejemplo, añada las siguientes definiciones de servicio hijo:
      • prcFlowElementCreateService
      • prcFlowElementUpdateService

      Estos servicios se utilizan cuando los usuarios de empresa crean y actualizan elementos de regla de precio utilizando el Creador de reglas de precios, y pueden requerir atributos y definiciones ServiceParam hijo adicionales, dependiendo de los requisitos del elemento de regla de precio.

      Si los parámetros hacen referencia a otros parámetros de servicio, como una categoría, necesita definiciones de parámetros de servicio como en los siguientes ejemplos:

      <CreateService baseDefinitionName="prcFlowElementCreateService">
          <ServiceParam
              name = "PROPERTY_categoryIdList"
              objectPath = "ChildCatalogGroup/CatalogGroupAlias"
              propertyName = "catgroupId"
              optional = "false"/>
      </CreateService>
      <UpdateService baseDefinitionName="prcFlowElementUpdateService">
          <ServiceParam
              name = "PROPERTY_categoryIdList"
              objectPath = "ChildCatalogGroup/CatalogGroupAlias"
              propertyName = "catgroupId"
              optional = "false"/>
      </UpdateService>
    3. Como por ejemplo en la sección 3, si es necesario, defina las propiedades del elemento de regla de precio.
      Los elementos de regla de precios más complejos pueden tener múltiples propiedades y objetos hijo. Como mínimo, declare instancias PropertyDefinition o definiciones de propiedad para cualquier variable que el usuario de empresa deba proporcionar y que esté definida en la definición de plantilla de elementos de reglas de precios. Es posible que el elemento de regla de precios también necesite instancias de:
      • ReferenceObjectDefinition
      • ChildObjectDefinition
      • nameValidador (consulte las subclases de la clase Validador para el componente base)

      Considere la posibilidad de utilizar la definición de objeto de un elemento de regla de precio similar existente como referencia para su nuevo elemento de regla de precio. Los archivos de definición de objeto existentes se almacenan aquí:

      LOBTools\WebContent\WEB-INF\src\xml\commerce\price\objectDefinitions\priceRuleBuilder

    4. Como por ejemplo en la sección 4, si es necesario, añada un elemento <Xml> con el atributo name establecido en template. Puede utilizar la plantilla para declarar valores predeterminados para las propiedades de elemento de regla de precio. El elemento <Xml> debe tener un elemento hijo <elemTemplateName>. El valor de <elemTemplateName> debe coincidir con el valor de la columna IDENTIFIER de la tabla PRELETEMPLATE para este elemento de regla de precio. También puede utilizar la plantilla para declarar objetos hijo que se creará dentro del objeto de elemento de regla de precio.
  5. Registre la nueva definición de objeto en su definición de objeto padre:
    1. Abra el archivo en la siguiente vía de acceso:

      LOBTools\WebContent\WEB-INF\src\xml\commerce\price\objectDefinitions\priceRuleBuilder\FlowPathElementObjectDefinition.xml

    2. En esta definición, añada una definición de objeto nueva como hijo insertando una línea parecida a la del siguiente ejemplo (consulte la penúltima línea en negrita):
      <ChildObjectDefinition definitionName="cmc/price/BaseFlowPathElementObject" displayName="Path" isBaseDefinition="true">	
      	<Xml name="template">
      		<elemTemplateName>path</elemTemplateName>
      	</Xml>	
      	<FlowElementObjectDefinition baseDefinitionName="cmc/price/PriceListElementObject" package="cmc/price"/>
      	<FlowElementObjectDefinition baseDefinitionName="cmc/price/CalculatePriceElementObject" package="cmc/price"/>
      	<FlowElementObjectDefinition baseDefinitionName="cmc/price/ExternalPriceRuleElementObject" package="cmc/price"/>
      	<FlowElementObjectDefinition baseDefinitionName="cmc/price/CatalogConditionElementObject" package="cmc/price"/>
      	<FlowElementObjectDefinition baseDefinitionName="cmc/price/SimpleBranchElementObject" package="cmc/price"/>
      	<FlowElementObjectDefinition baseDefinitionName="cmc/price/CompareConditionElementObject" package="cmc/price"/>
      	<FlowElementObjectDefinition baseDefinitionName="cmc/price/NestedPriceRuleElementObject" package="cmc/price"/>
      	<FlowElementObjectDefinition baseDefinitionName="cmc/price/MyCustomConditionElementObject" package="cmc/price"/>
      </ChildObjectDefinition>
    3. Añada una dependencia al módulo prc similar a la dependencia PriceResources del archivo.
    4. Guarde y cierre el archivo.