Configuration du mappeur de messages du composant membre

Le composant membre utilise l'infrastructure du mappeur de message pour déterminer quelle commande HCL Commerce appeler en fonction de la requête BOD. L'infrastructure du mappeur de messages fournit un moyen de mettre à plat les valeurs dans le nom du SDO en paires nom-valeur que la commande HCL Commerce peut traiter.

La configuration du mappeur de message se trouve dans le répertoire suivant :

Personne

  • workspace_dir/WC/xml/messaging/component-services/PersonBODMapping.xml

Organisation

  • workspace_dir/WC/xml/messaging/component-services/OrganizationBODMapping.xml

Si vous devez définir vos propres informations de mappage, utilisez le fichier suivant :

  • workspace_dir/WC/xml/messaging/component-services/component-services-user-template.xml

Flattener de message

Contrairement à la base de données, les noms n'utilisent pas d'abréviations. Par exemple, dans la base de données, le sexe est stocké sous forme d'un seul caractère : M (Masculin), F (Féminin) ou N (Non précisé). Dans le nom de personne, le sexe est un type d'énumération fixe, avec les valeurs suivantes : Masculin, Féminin, Non précisé. Si l'objet Données de service a un format long et que la commande HCL Commerce s'attend à une valeur courte, une classe de flattener de message est appelée pour faire la conversion entre les valeurs externes et internes. Ce flattener est également utilisé pour ajouter toutes les valeurs de paramètres manquantes requises par la commande. Par exemple, lorsque vous appelez MemberFacadeClient.updateAddressForOrganization(), la commande sous-jacente exige le paramètre addressId. Si celui-ci n'est pas fourni en tant qu'entrée à la méthode, la classe de flattener de message, ECSAXOrgAddressComponentMessageFlattener, dérive et ajoute le paramètre addressId aux requestProperties de la commande en fonction des paramètres distinguishedName et nickName.

Exemple

ECSAXUserRegistrationComponentMessageFlattener.java est appelé lors de la requête Process Person, avec l'action de Register (S'inscrire).


/**
* Processes parameter values that are going to be sent to a command
to ensure that they are in a format
* that the command can handle. 
* 
* 1. Converts parameters like addressType  from long form
(Shipping) to short form (S) 
* 2. Appends userId parameter if logonId is specified. 
* 3. Appends logonPasswordVerify parameter (with same value as
logonPassword) 
* if logonPasswordVerify value does not exist. 
* 4. Extracts custom member attributes and formats as follows:
* attributeName_storeName_action_number=value 
* 5. Converts boolean parameters to 1 or 0. 
*/ 

Le mappage entre les valeurs externes et internes (étape 1 de l'exemple précédent) est défini dans le workspace_dir/WC/xml/config/com.ibm.commerce.member/wc-component.xml comme illustré dans le fragment de code suivant.


<_wcf:valuemapping externalName="AddressType"
internalName="AddressType">
<!-- Maps to ADDRESS.ADDRESSTYPE in database -->
<_wcf:valuemap externalValue="Shipping" internalValue="S" />
<_wcf:valuemap externalValue="Billing" internalValue="B" />
<_wcf:valuemap externalValue="ShippingAndBilling"
internalValue="SB" />
</_wcf:valuemapping>

Les personnalisations apportées au mappage par défaut doivent être effectuées dans le fichier suivant :

workspace_dir/WC/xml/config/com.ibm.commerce.member-ext\wc-component.xml