Créez une définition d'objet pour la nouvelle condition ou action afin de collecter les entrées effectuées depuis l'interface utilisateur du Centre de gestion. Lorsque les professionnels soumettent des données sur la nouvelle condition ou action dans une règle de tarification, la définition d'objet conserve ces données dans deux tables : PRELEMENT and PRELEMENTATTR.
Pourquoi et quand exécuter cette tâche
La définition d'objet d'un nouvel élément de règle de tarification est un fichier XML de définition contenant une définition qui utilise l'élément <FlowElementObjectDefinition>.
Procédure
-
Ouvrez HCL Commerce Developer et basculez vers la vue Explorateur d'entreprise.
-
Créez un répertoire pour héberger votre nouvelle définition d'objet d'élément de règle de tarification.
Vous pouvez stocker le fichier dans une structure de répertoire similaire à l'exemple suivant :
LOBTools\WebContent\WEB-INF\src\xml\your_company_name\price\objectDefinitions\priceRuleBuilder
-
Créez un fichier de définition pour la définition d'objet d'élément de règle de tarification. Attribuez un nom à ce fichier en respectant la syntaxe suivante :
pricerule_element_nameFlowElementObjectDefinition.xml; par exemple,
RegistrationTimeConditionFlowElementObjectDefinition.xml
-
Définissez la définition d'objet d'élément.
Le code XML ci-dessous est un exemple simple de définition d'objet pour un nouvel élément de condition. L'exemple est décomposé en quatre parties, chacune étant expliquée dans une étape après la table.
Exemple de définition d'objet
| 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>
|
-
En vous basant sur l'exemple de la section 1, spécifiez les attributs suivant pour la définition d'objet :
- definitionName
- Nom unique de cette définition d'élément de règle de tarification. Utilisez le nom de votre choix.
- displayName
- Texte d'affichage de l'élément de règle de tarification. Vous pouvez soit fournir une chaîne statique, soit une référence à une ressource dans votre regroupement de ressources personnalisé, comme illustré dans l'exemple de code.
- elemTemplateType
- Type d'élément de règle de tarification ; la valeur peut être Conditionou Action.
- objectType
- Nom de ce type d'objet de règle de tarification. Utilisez le nom de la définition de modèle d'élément de règle de tarification associée, lequel est stocké comme valeur IDENTIFIER dans la table PRELETEMPLATE. Lorsque vous ajoutez cette condition ou action à la palette Générateur de règle de tarification, vous devez spécifier cette valeur objectType dans le fichier priceRuleBuilder.xml.
- flowIcon
- Ressource image de l'élément de règle de tarification affiché dans la zone de travail Générateur de règle de tarification.
- headerIcon
- Ressource image de l'élément de règle de tarification affiché dans le coin supérieur gauche de la vue de propriétés de l'élément de règle de tarification.
- paletteIcon
- Ressource image de l'élément de règle de tarification affiché dans la palette Générateur de règle de tarification.
- lot
- Utilisez la valeur
cmc/price, qui indique que cette définition d'objet est destinée à un élément de règle de tarification.
- propertiesDefinitionName
- Facultatif : Nom de la définition à utiliser pour afficher la vue de propriétés de cet objet d'élément de règle de tarification. Si votre élément de règle de tarification requiert une saisie d'entrée par le professionnel, vous devez créer une définition de vue de propriétés personnalisée pour l'interface utilisateur (ce thème est couvert dans la procédure Création de la vue de propriétés de l'élément de règle de tarification). Vous pouvez soit affecter un nom à votre définition de vue de propriétés personnalisée dès à présent, soit mettre à jour cet attribut par la suite, une fois créée cette définition de vue.
- summaryClass
- Facultatif : Nom de la classe à utiliser pour afficher la vue de récapitulatif de l'objet d'élément de règle de tarification. Le texte du récapitulatif est affiché dans la zone de travail du Générateur de règle de tarification au-dessous de l'icône de l'élément de règle de tarification. Si votre élément de règle de tarification requiert ce texte, vous devez créer une classe de récapitulatif personnalisée (ce thème est couvert dans la procédure Création du récapitulatif de l'élément de règle de tarification). Vous pouvez soit affecter un nom à votre classe de récapitulatif personnalisée dès à présent, soit mettre à jour cet attribut par la suite, une fois créée cette classe de récapitulatif.
-
En vous basant sur l'exemple de la section 2, ajoutez les définitions de service enfant suivantes :
- prcFlowElementCreateService
- prcFlowElementUpdateService
Ces services sont utilisés lorsque les professionnels créent et mettent à jour des éléments de règle de tarification à l'aide du Générateur de règle de tarification et peuvent avoir besoin d'attributs et de définitions ServiceParam supplémentaires, en fonction des exigences de votre élément de règle de tarification.
Si vos paramètres font référence à d'autres paramètres de service, tels qu'une catégorie, vous avez besoin de définitions de paramètre de service telles que celles des exemples suivants :
<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>
-
En vous basant sur l'exemple de la section 3, définissez, le cas échéant, les propriétés de l'élément de règle de tarification.
Les éléments de règle de tarification plus complexes peuvent comporter plusieurs propriétés et objets enfants. Au minimum, déclarez des instances PropertyDefinition ou des définitions de propriété pour les variables que le professionnel doit fournir et qui sont définies dans la définition de modèle d'élément de règle de tarification. Votre élément de règle de tarification peut aussi requérir des instances des éléments suivants :
- ReferenceObjectDefinition
- ChildObjectDefinition
- nameValidator (voir les sous-classes de la classe Validator pour le composant Foundation)
Vous pouvez envisager d'utiliser la définition d'objet d'un élément de règle de tarification similaire existant comme référence pour votre nouvel élément de règle de tarification. Les fichiers de définition d'objet existants sont stockés à l'emplacement suivant :
LOBTools\WebContent\WEB-INF\src\xml\commerce\price\objectDefinitions\priceRuleBuilder
-
En vous basant éventuellement sur l'exemple de la section 4, ajoutez un élément
<Xml> avec l'attribut name défini sur template. Vous pouvez utiliser le modèle pour déclarer des valeurs par défaut pour les propriétés de l'élément de règle de tarification. L'élément <Xml> doit avoir un élément enfant <elemTemplateName>. La valeur de <elemTemplateName> doit correspondre à celle de la valeur dans la colonne IDENTIFIER de la table PRELETEMPLATE de cet élément de règle de tarification. Vous pouvez également utiliser ce modèle pour déclarer des objets enfants qui seront instanciés dans le nouvel objet d'élément de règle de tarification.
-
Enregistrez la définition du nouvel objet dans sa définition d'objet parent :
- Ouvrez le fichier dans le chemin d'accès suivant :
LOBTools\WebContent\WEB-INF\src\xml\commerce\price\objectDefinitions\priceRuleBuilder\FlowPathElementObjectDefinition.xml
- Dans cette définition, ajoutez votre nouvelle définition d'objet en tant qu'enfant en insérant une ligne unique similaire à l'exemple ci-après (voir l'avant-dernière ligne en caractères gras) :
<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>
- Ajoutez une dépendance au module
prc similaire à la dépendance PriceResources du fichier.
- Enregistrez et fermez le fichier.