Deprecated feature

Le client externe

La communication sortante s'effectue avec le client externe de chaque service.

Le client externe est lié soit à l'architecture de connecteurs JCA pour profiter du routage propre à HCL Commerce, soit à un bus de service d'entreprise (ESB) pour bénéficier de fonctions de routage et de médiation plus avancées. La liaison JCA est utilisée par défaut, car elle permet aux messages véhiculant des actions différentes d'être connectés à des points d'extrémité (endpoints) différents. Par exemple, un message de transfert de commande peut être envoyé à un système d'arrière-plan, tandis qu'un message d'approbation de commande peut être envoyé à un moteur de workflow.

Configuration du client externe

La configuration d'un client externe se trouve à l'emplacement suivant :

WC\xml\config\ServiceName.external
Par exemple, la configuration Placer le client externe se trouve sous le répertoire com.ibm.commerce.order.external.

Ce répertoire doit contenir un fichier wc-component-client.xml qui indique la méthode de liaison utilisée pour effectuer des requêtes externes.

Pour les clients externes, la liaison recommandée est JCAInvocationBinding, qui utilise le système de messagerie WC et l'adaptateur de service Web JCAHttp ou l'adaptateur de service Web JCAJMS pour envoyer des requêtes.

Utilisation d'un client externe

Les exemples d'étapes suivants décrivent l'utilisation d'un client externe :
  1. Ecrivez du code pour effectuer une requête à l'aide du client externe. Par exemple :
    
    // Create the project noun.
    ProjectType project = ProjectFactory.eINSTANCE.createProjectType();
    ProjectIdentifierType projectIdentifier = ProjectFactory.eINSTANCE.createProjectIdentifierType();
    projectIdentifier.setUniqueID("theProjectID");
    project.setProjectIdentifier(projectIdentifier);
    
    // Create the process action expression.
    String expression = ProjectFacadeConstants.XPATH_PROJECT + "1" + ProjectFacadeConstants.CLOSE_XPATH;
    List<ActionExpressionType> actionExpressions = new ArrayList();
    actionExpressions.add(ExternalProjectFacadeClient.createActionExpression("Transfer", SelectionCriteriaHelper.STR_XPATH_LANG, expression));
    
    // Create the process BOD.
    ProcessProjectType processProject = ProjectFactory.eINSTANCE.createProcessProjectType();
    ProcessProjectDataAreaType projectDataArea = ProjectFactory.eINSTANCE.createProcessProjectDataAreaType();
    
    // Populate the process verb.
    projectDataArea.setProcess(ExternalProjectFacadeClient.createProcessVerb(actionExpressions));
    
    // Populate the project noun.
    projectDataArea.getProject().add(project);
    
    // Send the external project request.
    ExternalProjectFacadeClient externalProjectClient = new ExternalProjectFacadeClient();
    AcknowledgeProjectType acknowledgeProcess = externalProjectClient.processProject(processProject);
    
  2. Configurez le client externe pour utiliser la liaison JCA. Par exemple :
    1. Créez un répertoire de configuration pour le client externe. Par exemple, \xml\config\com.mycompany.commerce.project.external.
    2. Créez un fichier wc-component-client.xml dans le répertoire configuré pour la liaison JCA. Par exemple :
      
      <_config:DevelopmentClientConfiguration 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-component-client.xsd">
      	<_config:invocationservice>
      	
      		<_config:invocationbinding
      				bindingImpl="com.ibm.commerce.foundation.internal.client.services.invocation.impl.JCAInvocationBindingImpl">
      		</_config:invocationbinding>
      		
      	</_config:invocationservice>	
      </_config:DevelopmentClientConfiguration>
      
  3. Configurez le transport et la destination dans le système de messagerie WC. Par exemple :
    1. Ajoutez un nouveau type de messages pour les requêtes de service externe (SQL).
      L'exemple suivant crée un type de messages com.mycompany.commerce.project.external :
      • Connexion à la base de données.
      • Exécutez la requête suivante :
        
        insert into msgtypes (msgtype_id, msgtdir, name, viewname, description) values (1010, 1, 'com.mycompany.commerce.project.external', ' ', 'External Project Service');
        
    2. Configurez le transport et la destination du nouveau type de messages.
      Remarque : L'adaptateur de service Web HTTP doit être activé.
      1. Ouvrez la console d'administration.
      2. Sélectionnez Configuration > Types de message.
      3. Cliquez sur Nouveau.
      4. Sélectionnez le nouveau type de messages. Par exemple, com.mycompany.commerce.project.external.

        Transport : WebServices(HTTP)

        Format d'unité : WebServices

      5. Cliquez sur Suivant.
      6. Ajoutez l'URL de destination, le nom d'utilisateur et le mot de passe si nécessaire.
      7. Cliquez sur Terminer.
  4. Voici un exemple de requête sortante de WC, à l'aide du fragment de code de l'étape 1 :
    
    <myprj:ProcessProject releaseID="9.0" versionID="7.0.0.0" 
     xmlns:_wcf="http://www.ibm.com/xmlns/prod/commerce/9/foundation" 
     xmlns:myprj="http://www.mycompany.com/xmlns/prod/commerce/9/project" 
     xmlns:oa="http://www.openapplications.org/oagis/9" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <oa:ApplicationArea xsi:type="_wcf:ApplicationAreaType">
        <oa:CreationDateTime>2009-10-23T20:07:15.156Z</oa:CreationDateTime>
        <oa:BODID>a8688c80-c00f-11de-b7b8-829b4ae20b43</oa:BODID>
        <_wcf:BusinessContext/>
      </oa:ApplicationArea>
      <myprj:DataArea>
        <oa:Process>
          <oa:ActionCriteria>
            <oa:ActionExpression actionCode="Transfer" expressionLanguage="_wcf:XPath">/Project[1]</oa:ActionExpression>
          </oa:ActionCriteria>
        </oa:Process>
        <myprj:Project>
          <myprj:ProjectIdentifier>
            <myprj:UniqueID>theProjectID</myprj:UniqueID>
          </myprj:ProjectIdentifier>
        </myprj:Project>
      </myprj:DataArea>
    </myprj:ProcessProject>