Configuration du médiateur d'objet métier
Vous pouvez utiliser les données de configuration XML afin de configurer le médiateur d'objet métier. Ces données XML peuvent également être générées par l'assistant couche service de données.
Avant de commencer
Pourquoi et quand exécuter cette tâche
Le schéma (à la fois logique et physique) peut être étendu afin d'ajouter une table d'extension avec relation univoque ou relation un à plusieurs avec une table HCL Commerce existante. Ces données sont représentées sous forme de paires nom-valeur dans le modèle logique et associées à un objet existant du modèle dans la section UserData. Dans le modèle physique, ces données sont représentées sous forme de nouvelle table avec une clé externe vers la table de base.
Pour permettre des mises à jour, un client définit une nouvelle requête pour l'extraction de données à la fois des tablas par défaut et des tables personnalisées. Le fichier wc-business-object-mediator.xml doit être mis à jour afin de fournir au médiateur de changement approprié le nouveau profil d'accès personnalisé.
getNounPartXPaths pour renvoyer un tableau de données XPath qu'il traite. Etant donnée que la valeur XPath ne peut pas être modifiée tant que le médiateur sous-jacent n'est pas lui-même modifié, elle est définie dans le code XPath.Un exemple de définition de la valeur XPath figure ci-après :
Pour une action de modification <oa:ActionExpression actionCode="Change" expressionLanguage="_wcf:XPath">/Project[1]/Material[1]oa:ActionExpression actionCode="Change" expressionLanguage="_wcf:XPath">/Project[1]/Material[1]>, ajoutez la ligne <_config:part-mediator-implementation className="com.mycompany.commerce.project.facade.server.services.dataaccess.bom.mediator.ChangeProjectMaterialMediator" /> au fichier wc-business-object-mediator.xml.Ensuite, définissez le XPath private static final String[] XPATH = new String[] { "/Material[]" } ; dans le fichier ChangeProjectMaterialMediator.java .Notez que private static final String[] XPATH = new String[] { "/" } ; est présent dans le fichier ChangeProjectBasePartMediator.java.
- Il relie le nom logique (par exemple, CatalogEntryType) à votre type physique personnalisé (par exemple MyCompanyCatalogCatalogEntry).Ces mappages sont créés pour faciliter le flux de données personnalisées stockées dans la base de données vers le client du service. Les propriétés logiques sont exposées sous forme de paires nom-valeur dans l'élément UserData des objets métier.
- Il stipule au médiateur d'objet métier les méthodes appropriées à utiliser sur votre classe Java SDO physique (par exemple, MyCompanyCatalogCatalogEntry) afin d'ajouter des informations à l'élément données utilisateur dans le modèle logique (CatalogEntryType).
- Ce fichier configure également les médiateurs de lecture et de changement pour les objets métier et les parties d'objet métier.
Si vous étendez un nom HCL Commerce, utilisez ce fichier afin de modifier le mappage entre la classe utilisée pour stockage de l'objet logique et celle utilisée pour stockage de l'objet physique. En particulier, vous pouvez modifier la classe physique pour une classe physique personnalisée. Cette classe est celle contenant toutes les méthodes permettant d'accéder à vos nouvelles données. Par la suite, l'infrastructure DSL utilisera votre classe d'objet physique au lieu de la classe HCL Commerce par défaut.
Vous pouvez utiliser l'assistant couche service de données pour générer ce fichier et les mappages adéquats ou bien les générer manuellement.
Procédure
- Cliquez avec le bouton droit sur le dossier WC\config\com.ibm.commerce.myservicemodule-ext.
-
Si wc-business-object-mediator.xml n'existe pas encore dans ce répertoire, sélectionnez .
- Sélectionnez Créer un fichier XML sans aucune base.
- Cliquez sur Suivant.
- Nom du fichier : wc-business-object-mediator.xml.
- Cliquez sur Terminer.
Remarque : L'assistant couche service de données génère ce fichier lors de la personnalisation d'un module de service WebSphere Commerce existant. - Si wc-business-object-mediator.xml existe déjà, ouvrez ce fichier pour le modifier afin de configurer votre médiateur d'objet métier.
-
Utilisez ce fichier pour mapper l'élément logicalType avec votre élément physicalType et tous vos éléments physicalPropertyName avec l'élément logicalName correct. Ce fichier est créé et alimenté lorsque vous exécutez l'assistant couche service de données de sorte que vous aurez rarement à l'adapter.
L'exemple suivant mappe l'objet SDO physique MyCompanyCatalogCatalogEntry avec le nom CatalogEntryType et crée des relations pour les éléments WARRANTY et WARDESC :
<_config:BusinessObjectMediatorConfiguration xmlns:_config="http://www.ibm.com/xmlns/prod/commerce/foundation/config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com/xmlns/prod/commerce/foundation/config ../xsd/wc-business-object-mediator.xsd"> <_config:object logicalType="com.ibm.commerce.catalog.facade.datatypes.CatalogEntryType" physicalType="com.ibm.commerce.catalog.facade.server.entity.datatypes.CatalogEntry"> <_config:property-mapping logicalType="com.ibm.commerce.catalog.facade.datatypes.CatalogDescriptionType" physicalType="com.mycompany.commerce.catalog.facade.server.entity.datatypes.MyCompanyCatalogEntryDescription"> <_config:child-property-mapping relationshipName="XcareinstructionForCatentdesc"> <_config:userDataProperty logicalPropertyName="careinstruction" physicalPropertyName="careinstruction"/> </_config:child-property-mapping> </_config:property-mapping> </_config:object> <_config:object logicalType="com.ibm.commerce.catalog.facade.datatypes.CatalogEntryType" physicalType="com.mycompany.commerce.catalog.facade.server.entity.datatypes.MyCompanyCatalogEntry"> <_config:property-mapping logicalType="com.ibm.commerce.catalog.facade.datatypes.CatalogEntryType" physicalType="com.mycompany.commerce.catalog.facade.server.entity.datatypes.MyCompanyCatalogEntry"> <_config:child-property-mapping relationshipName="XwarrantyForCatentry"> <_config:userDataProperty logicalPropertyName="warterm" physicalPropertyName="warterm"/> <_config:userDataProperty logicalPropertyName="wartype" physicalPropertyName="wartype"/> </_config:child-property-mapping> </_config:property-mapping> </_config:object> </_config:BusinessObjectMediatorConfiguration>L'exemple XML suivant configure la couche de service de données pour :- Lier le logicalType
com.ibm.commerce.catalog.facade.datatypes.CatalogEntryTypeau physicalTypecom.ibm.commerce.catalog.facade.server.entity.datatypes.CatalogEntry - Lier l'attribut logique
wartermavec la propriété physiquewarterm. - Lier l'attribut logique
wartypeavec la propriété physiquewartype. - Lier l'attribut logique
careinstructionavec la propriété physiquecareinstruction. - Affecter la propriété physique
wartermà une paire nom-valeur dans l'élément UserData du BOD. - Affecter la propriété physique
wartypeà une paire nom-valeur dans l'élément UserData du BOD. - Créer une méthode nommée
getXwarrantyForCatentry()sur l'objet SDO physiqueMyCompanyCatalogEntry, laquelle renvoie l'objet SDO physique Xwarranty. Cet objet SDO physique Xwarranty comporte des méthodes pour l'extraction de WARERM et de WARTYPE.
Remarque : En vue d'utiliser la prise en charge automatique de UserData illustrée dans cette tâche et la relation entre la table de base et la table d'extension, chaque enregistrement de la table de base ne peut être mappé qu'à un seul enregistrement dans la table d'extension (relation de type N to 1, où N est supérieur à 1). - Lier le logicalType