Deprecated feature

Cliente externo

La comunicación de salida se lleva a cabo utilizando el cliente externo de cada servicio.

El cliente externo se enlaza con el enlace JCA para utilizar el direccionamiento de HCL Commerce o con un ESB para utilizar características de direccionamiento y mediación más avanzadas. El enlace JCA se utiliza de forma predeterminada, ya que permite conectar mensajes que tienen diferentes acciones con puntos finales distintos. Por ejemplo, un mensaje de transferencia de pedido puede enviarse a un sistema de fondo, mientras que un mensaje de aprobación de pedido puede enviarse a un motor de flujo de trabajo.

Configuración del cliente externo

Se ha encontrado una configuración de cliente externo en la siguiente ubicación:

WC\xml\config\ServiceName.external
Por ejemplo, la configuración del cliente del pedido externo se encuentra en el directorio com.ibm.commerce.order.external.

Este directorio debe contener un archivo wc-component-client.xml que indique el método de enlace utilizado para realizar solicitudes externas.

Para los clientes externos, el enlace recomendado es JCAInvocationBinding, que utiliza el sistema de mensajería WC y el adaptador de servicio web JCAHttp o el adaptador de servicio web JCAJMS para enviar solicitudes.

Usar un cliente externo

Los siguientes pasos de ejemplo describen cómo usar un cliente externo:
  1. Escriba el código para hacer una solicitud mediante el cliente externo. Por ejemplo:
    
    // 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. Configure el cliente externo para utilizar el enlace JCA. Por ejemplo:
    1. Cree un directorio de configuración para el cliente externo. Por ejemplo, \xml\config\com.mycompany.commerce.project.external.
    2. Cree un archivo wc-component-client.xml en el directorio configurado para el enlace JCA. Por ejemplo:
      
      <_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. Configure el transporte y el destino dentro del sistema de mensajería de WC. Por ejemplo:
    1. Añada un nuevo tipo de mensaje para las peticiones de servicio externas (SQL).
      El ejemplo siguiente crea un tipo de mensaje com.mycompany.commerce.project.external:
      • Conéctese a la base de datos.
      • Ejecute la siguiente consulta:
        
        insert into msgtypes (msgtype_id, msgtdir, name, viewname, description) values (1010, 1, 'com.mycompany.commerce.project.external', ' ', 'External Project Service');
        
    2. Configure el transporte y el destino del nuevo tipo de mensaje.
      Nota: El adaptador de servicio web HTTP debe estar habilitado.
      1. Abra la Consola de administración.
      2. SeleccioneConfiguración > Tipos de mensajes.
      3. Haga clic en Nuevo.
      4. Seleccione el nuevo tipo de mensaje: Por ejemplo, com.mycompany.commerce.project.external.

        Transporte: WebServices (HTTP)

        Formato de dispositivo: Servicios web

      5. Haga clic en Siguiente.
      6. Añada el URL de destino y el nombre de usuario y la contraseña si es necesario.
      7. Haga clic en Finalizar.
  4. A continuación, se muestra una solicitud de salida de ejemplo de WC, mediante el fragmento de código del paso 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>