Création d'un module de service HCL Commerce

Le module de service HCL Commerce contient toutes les ressources utilisées par un service HCL Commerce. Si vous prévoyez de fournir de nouveaux services HCL Commerce, vous devez créer un nouveau module de service, puis personnaliser et étendre les ressources qu'il crée.

Avant de commencer

Pourquoi et quand exécuter cette tâche

JET (Java Emitter Template) est utilisé pour générer le code de base du nouveau module de service à partir d'un fichier XML simple. En décrivant le module de service par le biais d'une syntaxe XML spécialisée, ces modules peuvent être générés. Vous pouvez lancer directement l'implémentation du module de service sans devoir consacrer des heures à sa mise en place et à sa configuration.

Que faire avant de créer un nouveau service :
  • Déterminez si un nouveau service est nécessaire ou si un service existant peut être étendu. Lorsque des informations personnalisées sont requises, il existe trois options :
    • Inclure des informations personnalisées dans la zone UserData d'un nom existant
    • Inclure des informations personnalisées comme une superposition d'un nom existant
    • Créer un service personnalisé
  • Déterminez le nom du service. Un service se compose d'une collection de noms connexes et des opérations qui peuvent être effectuées sur ces noms. Par exemple, le service Catalog se compose des noms Catalog, CatalogGroup et CatalogEntry et prend en charge la récupération, la création, la mise à jour et la suppression de ces noms.
  • Déterminez les noms de service. Pour plus d'informations, voir Noms.
  • Déterminez les opérations (verbes) pour chaque nom. Pour plus d'informations, voir Verbes.
  • Déterminez l'implémentation du service (SOI ou BOD). Pour en savoir plus sur les différences entre les deux implémentations, voir Modules de service SOI et BOD.

Procédure

Pour créer un nouveau module de service HCL Commerce :
  1. Démarrez HCL Commerce Developer.
  2. Créez le fichier de définition d'application de pattern afin de créer le code de base :
    1. Créez un fichier d'entrée de module de service.
      1. Cliquez avec le bouton droit de la souris sur le projet WebSphereCommerceServerExtensionsLogic et sélectionnez Nouveau > Autre > XML > XML et cliquez sur Suivant.

        Création de capture d'écran MyServiceModule.xml

      2. Cliquez sur Suivant.
      3. Sélectionnez Créer un fichier XML à partir d'un fichier de schéma XML et cliquez sur Suivant.

        Capture d'écran Sélectionnez Créer un fichier XML à partir d'un fichier de schéma XML

      4. Sélectionnez Sélectionner un fichier de l'espace de travail, sélectionnez WC > xml > config > xsd > wc-component-pattern.xsd et cliquez sur Suivant.

      5. Cliquez sur Terminer.
    2. Créez le fichier XML pour décrire le module de service HCL Commerce. Commencez par copier l'exemple XML suivant.
      
      <_pattern:commerceComponent xmlns:_pattern="http://www.ibm.com/xmlns/prod/commerce/foundation/pattern" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://www.ibm.com/xmlns/prod/commerce/foundation/pattern 
          ../../WC/xml/config/xsd/wc-component-patten.xsd "
          name="MyServiceModuleName" packagenameprefix="com.mycompany.commerce" company="MyCompany"
          namespace="http://www.mycompany.com/xmlns/prod/commerce/9/MyServiceModuleName" nlsprefix="myco" type="SOI/BOD">
        <_pattern:noun name="MyBusinessObject" get="true" process="true" change="true" sync="false" /> 
      </_pattern:commerceComponent> 
      

      Où My Company est le nom de votre entreprise.

      Ce fichier est utilisé pour créer les ressources de démarrage et la configuration d'un module de service. Dans ce fichier, les informations du sous-système et de l'entreprise sont requises. Sont également requis les noms qui doivent être inclus dans le sous-système, ainsi que les verbes pris en charge pour ce nom. Actuellement, HCL Commerce ne prend en charge que quatre verbes et le pattern ne s'adresse qu'à ces quatre verbes.
    3. Remplacez les valeurs suivantes sous commerceComponent par des valeurs appropriées pour votre implémentation :
      name=" MyServiceModule"
      Nom de votre nouveau module de service
      packagenameprefix="com.mycompany.commerce"
      Utilisé pour ajouter un préfixe au code du magasin de démarrage généré.
      Remarque : N'incluez pas le nom du composant dans ce préfixe.
      namespace=http://www.mycompany.com/xmlns/prod/commerce/myservicemodule
      Espace de noms à associer à votre composant. Cet espace de noms représente votre organisation.
      nlsprefix="mycompany"
      Préfixe de schéma XML à associer à l'espace de noms. Pour éviter une collision avec le préfixe HCL Commerce, n'utilisez pas de soulignement (_) comme premier caractère du préfixe de l'espace de noms.
      type="SOI/BOD"
      Spécifiez le type de module de service. Si vous spécifiez SOI, le pattern crée un module de service qui assure l'intégration orientée service dans vos commandes de contrôleur existantes, les beans d'accès et les EJB.

      Si vous spécifiez BOD, le pattern crée un module de service d'architecture orienté service qui utilise des commandes développées à l'aide du cadre de commande BOD. Ces commandes BOD agissent sur des objets de données structurés (SDO) et utilisent le Mediateur d'objets métier pour conserver et récupérer ces SDO.

    4. Remplacer les valeurs suivantes sous nom name="MyBusinessObject"
      Où : MyBusinessObject est le nom de votre nouveau nom.

      Les noms définissent le nom de chaque élément de données dans le modèle logique et l'affectent à un type de données. Ce type de données peut être un type de schéma XML primitif, tel que booléen, ou un type complexe. Un type complexe désigne une construction d'éléments de données tel que CurrencyType qui contient le prix (représenté par un type double) et la devise (représentée par une chaîne). Un nom peut contenir une ou plusieurs parties de nom (parfois dénommées éléments de nom). Une partie de nom est un type XML complexe, qui fait partie d'un nom et sur lequel il est possible d'agir indépendamment. Les parties de nom représentent les parties d'un nom logique. La division d'un nom en plusieurs parties simplifie le codage et réduit la portée des commandes et des médiateurs. Au lieu de traiter le nom dans son intégralité, le code se concentre sur le seul traitement de la partie de nom concernée. A l'arrivée d'une demande, celle-ci est décomposée en ses différentes parties et la commande appropriée à chacune est exécutée. Par exemple, le nom CatalogEntry contient une liste de descriptions. Une description de catalogEntry est considérée comme une partie de nom et traitée à l'aide de ChangeCatalogEntryDescriptionCmdImpl et de ChangeCatalogEntryDescriptionMediator.

      Pour chacun des verbes, Requête Get/Réponse Show, Requête Process/Réponse Acknowledge, Requête Change/Réponse Respond et Requête sync/Réponse ConfirmBOD, indiquez si vous souhaitez prendre en charge cette opération pour votre nom.
      Exemple :
      get="true"
      process="true"
      change="true"
      sync = "false"
      Remarque : Vous pouvez créer plusieurs éléments <noun> dans un module de service. Ne choisissez pas Get, Process, Change ni Sync comme nom de votre nom (ils sont réservés pour être utilisés en tant que verbes).
    5. Sauvegardez le fichier.
  3. Cliquez avec le bouton droit sur MyServiceModule.xml et sélectionnez Exécuter en tant que > Exécuter des configurations
  4. Sélectionnez Transformation JET et cliquez sur l'icône Nouveau.
  5. Dans la section Transformation :
    1. Sélectionnez l'ID suivant : com.ibm.commerce.toolkit.internal.pattern.componentprojects
    2. Cliquez sur OK.
  6. Une fois le pattern appliqué, vérifiez que les projets suivants sont créés :
    MyServiceModule-Client
    Contient le code Java de la bibliothèque client.
    MyServiceModule-DataObjects
    Contient les XSD, WSDL et SDO générés.
    MyServiceModule-Server
    Contient l'implémentation de façade de composant.
    MyServiceModule-UnitTests
    Un module pour le test d'unité de l'implémentation du client.
    MyServiceModuleServicesHTTPInterface
    Module Web utilisé pour activer les services Web sur HTTP pour le module de service.
    MyServiceModuleServicesJMSInterface
    Module EJB utilisé pour activer les services Web sur JMS pour le module de service.
    Remarque :
    • Vous pouvez ignorer les messages d'erreur de compilation. Les objets Java qui représentent le nom n'existent pas encore et sont générés à l'étape suivante. En outre, les projets nouvellement générés ne sont pas encore ajoutés à l'application HCL Commerce et ne peuvent pas résoudre les dépendances sur le code HCL Commerce.
    • Les messages d'information sous la forme suivante peuvent être ignorés :
      
      CHKJ2500I: change<<Noun>>(javax.xml.soap.SOAPElement) in method 
      javax.xml.soap.SOAPElement must be serializable at runtime (EJB 2.0: 7.10.5).
      
      C'est-à-dire, les objets SOAPElement peuvent être sérialisés.
    • Chaque projet généré contient également un préfixe, SOI ou BOD, selon le type sélectionné de votre implémentation. Par exemple, MyServiceModule-Client serait SOIMyServiceModule-Client ou BODMyServiceModule-Client.
      • Si vous spécifiez SOI, le pattern crée un module de service qui assure l'intégration orientée service dans vos commandes de contrôleur existantes, les beans d'accès et les EJB.
      • Si vous spécifiez BOD, le pattern crée un module de service d'architecture orienté service qui utilise des commandes développées à l'aide du cadre de commande BOD. Ces commandes BOD agissent sur des objets de données structurés (SDO) et utilisent le Mediateur d'objets métier pour conserver et récupérer ces SDO.
  7. Ajoutez les modules générés à l'application HCL Commerce.
  8. Etapes suivantes :
    1. Créez votre fichier SDO genmodel.
      Remarque : Terminer jusqu'à l'étape 3.g. N'effectuez pas l'étape 3.h et l'étape 3.i. Ces étapes sont redondantes et sont effectuées plus tard dans la page suivante.
    2. Générez du code à partir de votre fichier SDO genmodel.
      Remarque : L'étape 7 vous oblige à Définir les paramètres SDO par défaut, ce qui rétablit votre configuration issue de l'étape précédente. Par conséquent, une fois l'étape 7terminée, Définir les paramètres SDO par défaut, refaites l'étape pour vous assurer que l'EMF genmodel peut générer des objets compatibles.
    3. Créez la façade de composant pour un module de service SOI.
    4. Implémentation des commandes du service dans l'infrastructure de commandes BOD.
    5. Créez la bibliothèque client.