Desarrollo e implementación de las soluciones multi-tenant entregadas mediante el uso de middleware de IBM: Parte 6: Patrón proxy de mediación de servicio web para el ruteo de solicitudes de múltiples clientes usando WebSphere Business Services Fabric

En la Parte 1 de esta serie describimos la prestación de servicios a varios clientes y varios de los desafíos técnicos que deben enfrentar los proveedores de servicios al implementar las soluciones multi-tenant (de múltiples usuarios) brindados por la Web. En la parte 5, hemos presentado un enfoque de mediación para enfrentar este desafío y hemos presentado tres opciones para la implementación usando varios de los productos middleware de IBM. En este tutorial, describimos en forma detallada los pasos para la implementación de alguna de esas tres opciones, es decir, cómo utilizar WebSphere Business Services Fabric en el contexto de un ejemplo de un escenario de aplicaciones bancarias multi-tenant también presentado en la parte 5.

Indrajit Poddar, Software Architect, IBM

Indrajit PoddarIndrajit Poddar (IP) es miembro del equipo Strategy, Technology, Architecture, and Incubation del IBM Software Group Strategy, donde dirige varias PoCs de integración para la creación de servicios empresariales compuestos entregados en el modelo Software-as-a-Service (SaaS).



Devaprasad Nadgir, IBM Certified Senior IT Architect, IBM  

NadgirDevaprasad es Certified Senior IT Architect y trabaja fuera de India Software Lab, Bangalore. Actualmente trabaja en iniciativas de Service Registry and Federated SOA Governance en IBM Software Group. También se interesa por métodos arquitectónicos, computación en nube, virtualización y software como servicio. Consulte su blog, donde podrá encontrar algunas de sus percepciones y tendencias tecnológicas.



08-08-2011

Antes de comenzar

Sobre este tutorial

WebSphere Business Services Fabric (WBSF) ofrece la capacidad de seleccionar de manera dinámica puntos finales de servicios web basados en políticas empresariales. Las políticas empresariales son definidas utilizando afirmaciones sobre las propiedades de las solicitudes de servicio web. Las afirmaciones sobre propiedades similares también son asociadas con puntos finales de servicio web para describir las capacidades únicas de ese punto final. El artículo al que se hace referencia en la sección Recursos describe de manera más detallada la capacidad dinámica de selección del punto final. WBSF también ofrece la capacidad para extender su ontología principal para definir nuevas afirmaciones y propiedades del contexto del servicio en el que van a actuar las afirmaciones.

En este tutorial, demostraremos cómo aprovechar la capacidad dinámica de selección del punto final en WBSF para vincular las solicitudes de servicio del usuario de una empresa a los puntos finales específicos de la empresa. También le mostraremos cómo sacar provecho de la creación de conceptos de organizaciones y usuarios, y de las funciones del Subscriber Manager para ofrecer control de acceso específico de clientes a servicios multi-tenant. Finalmente, le mostraremos cómo rastrear las invocaciones para cada cliente a través de la creación en las funciones de Performance Manager.

Figura 1. Ensamblado dinámico de puntos finales de servicio empresarial específicos con políticas empresariales basadas en la afirmación de la ID DE CLIENTE
Ensamblado dinámico de puntos finales de servicio empresarial específicos con políticas empresariales basadas en la afirmación de la ID DE CLIENTE

En la parte 5, de esta serie se describe un escenario y un caso de uso con Sam Peters como administrador del proveedor del servicio para la aplicación bancaria multicliente Jivaro. En este tutorial mostraremos cómo Sam Peters puede utilizar WBSF para implementar un enfoque de mediación. En la Figura 1 se describen los componentes de la opción de implementación de WBSF. Sam Peters realizará los siguientes pasos principales en este enfoque de implementación:

  1. Definir un servicio empresarial compuesto con políticas de ruteo
  2. Incorporar organizaciones de clientes y usuarios a los servicios empresariales
  3. Controlar usos específicos del servicio por parte del cliente

Prerrequisitos

Sam Peters utilizará las siguientes herramientas de desarrollo de IBM para permitir la entrega de su solución de servicio web de verificación de crédito a múltiples empresas:

  • WebSphere Integration Developer (WID) v6.1
  • Rational Software Architect (RSA) v7.0.05
  • WebSphere Business Services Fabric Tool Pack (WBSF-TP) v6.1
  • WebSphere Business Services Fabric Modeling Tool – A plug-in for RSA v7 (WBSF-MT)
  • WebSphere Business Services Fabric Server – Foundation Pack – v6.1 (WBSF-FP)

Con el fin de implementar múltiples instancias del servicio web de verificación de crédito, es necesario contar con el siguiente software:

  • WebSphere Process Server v6.1
  • WebSphere Portal Server v6
  • Tivoli Directory Server v6.0

La siguiente configuración es un prerrequisito necesario (ver Recursos):

  • La implementación de servicios web para las empresas Expo y S&R se realiza en WebSphere Process Server. Los archivos ear para estos servicios se encuentran incluidos en la página de la presentación. (Expo_SandR_ThirdParty_Credit_Score_Implementation_20080429.zip)
  • El portlet del puntaje crediticio se despliega en un WebSphere Portal Server. El archivo ear para el portlet se incluye en la página de la presentación. (SaasCreditCheckPortlet31_14thmay.war)
  • El servidor del portal se configura con Websphere Member Manager y se integra con LDAP. Por favor consulte el Infocenter de WebSphere Portal Server si desea obtener más información: http://publib.boulder.ibm.com/infocenter/wpdoc/v6r0/index.jsp
  • LDAP se configura con la estructura de directorio multi-tenant para FirstBank N.A y Second Canada Bank. Los archivos LDIF se encuentran incluidos en la página de la presentación. (Tenant_Banks_LDAP_Structure.ldif)

Definición de un servicio empresarial compuesto con políticas de ruteo

Para crear políticas empresariales para reglas de ruteo específicas, Sam Peters extiende la ontología principal de WBSF para incorporar nuevo contenido basado en la afirmación denominada TenantIDAssertion. Él utiliza esta afirmación para diseñar un servicio empresarial compuesto para el Servicio de Puntaje Crediticio.

Instalación de WebSphere Business Services Fabric Modeling Tool de IBM en RSA

Sam Peters utiliza WebSphere Business Services Fabric Modeling Tool de IBM, conector para RSA v7 (de ahí que se la denomine herramienta de modelado) siguiendo los siguientes pasos:

  1. Controle que los siguientes prerrequisitos de dispositivos se encuentren instalados en RSA 7 antes de instalar la herramienta de modelado:
    1. UML Modeling
    2. Transformation Authoring
    3. WSDL and XSD Modeling and transformations
    4. UML-to-UML transformation and patterns
  2. Descargue e instale la herramienta de modelado desde el depósito Reusable Asset Specification (RAS) de developerWorks de IBM siguiendo las siguientes instrucciones:
    1. Abra un nuevo asistente en el RSA utilizando File > New > Other.
    2. Expanda RAS, RAS Repository Connection, haga clic en DeveloperWorks Repository, y luego haga clic en Next como se observa en la Figura 2.
Figura 2. Selección del depósito de DeveloperWorks
Selección del depósito de DeveloperWorks
  1. Haga clic en Finish en el próximo asistente. La URL para el depósito aparece como se observa en la Figura 3.
Figura 3. Detalles de la Conexión al depósito de developerWorks
Detalles de la Conexión al depósito de developerWorks
  1. Descargue WebSphere Business Services Fabric Modeling Tool de IBM a un depósito local e importe el dispositivo de este activo al RSA. El activo del RAS descargado se puede observar en la Figura 4.
Figura 4. Instalación de la Herramienta de Modelado desde un depósito local
Instalación de la Herramienta de Modelado desde un depósito local
  1. Reinicie el área de trabajo del RSA.
  2. Debería producirse una instalación exitosa en las siguientes Transformaciones de Fabric como se puede observar en la Figura 5. Haga clic en Modeling > Transform > New Configuration para visualizar el cuadro de diálogo de la nueva configuración de transformación.
Figura 5. Cuadro de diálogo de la nueva configuración que muestra las transformaciones del Glosario y de OWL
Cuadro de diálogo de la nueva configuración que muestra las transformaciones del Glosario y de OWL
  1. Los archivos OWL generados por la Herramienta de modelado Fabric deben ser codificados como archivos de texto UTF-8 para que WebSphere Business Services Fabric de IBM los considere importables. Para asegurar esto, cambie la codificación del archivo de texto del área de trabajo en Window > Preferences como se puede observar en la Figura 6.
Figura 6. Configuración de las preferencias de codificación para los archivos de texto OWL generados
Configuración de las preferencias de codificación para los archivos de texto OWL generados

Modelación de una nueva TenantIDAssertion

Sam Peters modela una TenantIDAssertion extendiendo las afirmaciones definidas en la ontología principal de WBSF siguiendo los siguientes pasos:

  1. Inicie RSA v7 instalado junto con WebSphere Business Services Fabric Modeling Tool de IBM.
  2. Haga clic en File > Import > Other > Project Interchange e importe el proyecto Fabric-Model-Stubs denominado fabric-core-stubs-project-interchange.zip. Este archivo zipeado se encuentra en la carpeta %FABRIC_TOOLPACK_INSTALL_FOLDER%/modeling/fabric-core .
  3. Haga clic en el proyecto Fabric-Model-Stubs y luego en OK como se puede observar en la Figura 7 presentada a continuación.
Figura 7. Importación de Fabric-Model-Stubs al área de trabajo del RSA
Importación de Fabric-Model-Stubs al área de trabajo del RSA
  1. Cree un nuevo proyecto UML denominado JivaroFabricExtensions.
  2. En este proyecto, cree un modelo UML denominado Fabric_Extensions y aplique el Perfil Ontológico Principal de Fabric como se observa en la Figura 8.
Figura 8. Solicitud del Perfil Ontológico Principal de Fabric para el modelo UML Fabric_Extensions
Solicitud del Perfil Ontológico Principal de Fabric para el modelo UML Fabric_Extensions
  1. Haga un clic con el botón derecho en > Import Model Library e importe XSD data types desde el grupo "Model Libraries" como se observa en la Figura 9.
Figura 9. Importación de la biblioteca del modelo XSD Data Types
Importación de la biblioteca del modelo XSD Data Types
  1. Agregue un nuevo paquete denominado JivaroFabricAssertions y el estereotipo fabricNamespace como se observa en la Figura 10.
Figura 10. Elección del estereotipo fabricNamespace para el paquete JivaroFabricAssertions
Elección del estereotipo fabricNamespace para el paquete JivaroFabricAssertions
  1. Para el estereotipo fabricNamespace, denominar al directorio jivaro-fabric-extensions y al URI como http://www.ibm.com/jivaro/schema/extensions tal como se muestra en la Figura 11.
Figura 11. Configuración de SDirectory y URI para el paquete JivaroFabricAssertions
Configuración de SDirectory y URI para el paquete JivaroFabricAssertions
  1. En el diagrama principal, arrastre y suelte la ContentBasedAssertion desde el modelo Fabric-core que se encuentra en Fabric-Model-Stubs.
    Nota: El modelo Fabric-core debe tener perfil de ontología WBSF y otros estereotipos. De no hallarse este perfil al momento de ejecución del RSA, importe estos perfiles al área de trabajo que se encuentra en la carpeta %FABRIC_TOOLPACK_INSTALL_FOLDER%/modeling/profiles.
  2. Cree un nuevo grupo denominado TenantIDAssertion y agregue una relación de generalización al ContentBasedAssertionClass. Para este grupo agregue los estereotipos fabricAssertion y owlClass.
  3. Agregue un atributo string al grupo TenantIDAssertion denominado id de cliente y seleccione los estereotipos fabricAssertedProperty, owl:DataProperty y owl:FunctionalProperty.
  4. Para el estereotipo fabricAssertedProperty, seleccione assertionPropertyComparator como “EqualsComparator” y controlWidget como 0-textbox. En la Figura 12 se pueden observar varias configuraciones de estereotipos para el grupo TenantIDAssertion .
Figura 12. TenantIDAssertion con configuraciones de estereotipo
TenantIDAssertion con configuraciones de estereotipo
  1. Cree una nueva transformación denominada JivaroOWLTransformations haciendo clic en Modeling > Transform > New Configuration. Seleccione la Transformación de OWL como se muestra en la Figura 13.
Figura 13. Creación de JivaroOWLTransformations
Creación de JivaroOWLTransformations
  1. Haga clic en Next y elija el modelo Fabric_Extensions como fuente y objetivo para esta trasformación. Haga clic en Finish.
  2. Al ejecutar esta transformación se creará un nuevo proyecto (si es que éste ya no ha sido creado) denominado FabricOWLProject junto con el archivo JivaroFabricAssertions.owl que puede importarse a Fabric utilizando la consola de administración. En la Figura 14 se pueden observar el proyecto y los archivos OWL que se han generado.
Figura 14. Transformación de OWL y de las extensiones Fabric generadas
Transformación de OWL y de las extensiones Fabric generadas
  1. Asegúrese de que el grupo TenantIDAssertion aparezca como grupo OWL en el archivo generado. En el Listado 1 se pueden observar las definiciones de grupos owls para TenantIDAssertion.
Listado 1. Definición de grupo owl en JivaroFabricAssertions.owl
<owl:Class rdf:about="#TenantIDAssertion">
     <rdfs:subClassOf>
        <owl:Class rdf:about=
                "http://www.webifysolutions.com/2005/10/catalog/assertion
                                #ContentBasedAssertion"/<
            </rdfs:subClassOf>
           <fabric-core:abstract rdf:datatype=
                "http://www.w3.org/2001/XMLSchema#string"<false</fabric-core:abstract>
            <fabric-core:assertionDuplicateAllowed rdf:datatype=
                "http://www.w3.org/2001/XMLSchema#string"
                    <false</fabric-core:assertionDuplicateAllowed>
            <fabric-core:assertionType rdf:datatype=
                "http://www.w3.org/2001/XMLSchema#string">Other</fabric-core:assertionType
</owl:Class>
  1. Guarde el archivo JivaroFabricAssertions.owl para importar las extensiones Fabric utilizando la consola de administración de Fabric.

Configuración del servidor de WBSF e importación de TenantIDAssertion

Sam Peters crea proyectos, espacios de nombres, organizaciones y entornos en el servidor de WBSF que son necesarios para lograr un servicio empresarial compuesto para el Servicio de Puntaje Crediticio. También importa TenantIDAssertion a WBSF realizando los siguientes pasos:

  1. Regístrese en la consola de administración de WBSF utilizando un ID y una palabra clave de usuario de administración.
  2. En el menú contextual haga clic en Subscriber Manager > Manage Subscribers > Create an Organization. Cree una organización denominada Jivaro SaaS Solution Provider y organizaciones de clientes denominadas bank1 y bank2 para representar a los clientes First Bank N.A y Second Canada Bank como se puede observar en la Figura 15.
Figura 15. Organizaciones bank1, bank2 y Jivaro SaaS Solution Provider
Organizaciones bank1, bank2 y Jivaro SaaS Solution Provider
  1. Al utilizar Governance Manager > Configure Environments > Create an Environment, se crea un entorno de producción y desarrollo para el hospedaje de servicios empresariales como se observa en la Figura 16.
Figura 16. Entornos de producción y desarrollo de Jivaro
Entornos de producción y desarrollo de Jivaro
  1. Al utilizar Governance Manager > Configure Projects > Create a Project, se crean los siguientes proyectos seleccionando a la Organización del Equipo como Jivaro SaaS Solution Provider.
Figura 1. Nombre del proyecto
Sl NoNombre del proyectoTipo de proyectoDescripción
1JivaroBusinessSolutionsServicio EmpresarialHospeda los servicios empresariales suministrados por Jivaro SaaS Solution Provider.
2JivaroOntologyPrjOntologíaContiene las extensiones ontológicas para los Servicios Empresariales de Jivaro.
  1. Cree el siguiente espacio de nombre utilizando Governance Manager > Configure Namespaces > Create a Namespace.
Figura 2. Espacios de Nombres del Proyecto
Sl NoEspacio del NombreTipoURIProyecto
1JivaroSolutionsSCEsquemahttp://www.ibm.com/jivaro/businesssolutions/schema#JivaroBusinessSolutions
2JivaroSolutionsINInstanciahttp://www.ibm.com/jivaro/businesssolutions/schema-inst#JivaroBusinessSolutions
3JivaroSolutionsENInscripciónhttp://www.ibm.com/jivaro/businesssolutions/enrollment#JivaroBusinessSolutions
4ExtensionsSchemaEsquemahttp://www.ibm.com/jivaro/schema/extensions#JivaroOntologyPrj
  1. Haga clic en Governance Manager > Configure Projects > JivaroBusinessSolutions > Namespaces (etiqueta) > Import Namespaces.
  2. Seleccione JivaroOntologyPrj y haga clic en Import Namespaces como se observa en la Figura 17.
Figura 17. Importación del espacio de nombre del proyecto de extensión ontológica al proyecto JivaroBusinessSolutions
Importación del espacio de nombre del proyecto de extensión ontológica al proyecto JivaroBusinessSolutions

Esta importación hace que las extensiones ontológicas se encuentren disponibles para el proyecto de servicio empresarial JivaroBusinessSolutions.

  1. Importe el archivo OWL de extensión ontológica creado en JivaroOntologyPrj.
    a). Haga clic en Governance Manager > Import/Export > Export by Project (etiqueta).

    b). Elija JivaroOntologyPrj y ExtensionSchema tal como se observa en la Figura 18. Haga clic en Export To File.

    c). Esto crea un archivo zipeado en el sistema del archivo denominado JivaroOntologyPrj<yyyymmdd>-owl.zip. Reemplace el contenido de http_www.ibm.com_jivaro_schema_extensions.owl con el de JivaroFabricAssertions.owl. Vuelva a empaquetar los archivos en un archivo zipeado denominado JivaroOntologyPrj<yyyymmdd>-owl-withExtensions.zip usando una herramienta de zipeo. Por favor consulte la sección Descargas para encontrar información sobre este archivo zipeado.

    d). Importe JivaroOntologyPrj<yyyymmdd>-owl-withExtensions.zip al proyecto JivaroOntologyPrj. Una importación exitosa permitirá que TenantIDAssertion esté disponible para el proyecto de servicio empresarial de JivaroBusinessSolutions.
Figura 18. Importación del Archivo de Contenido JivaroOntologyPrj de Fabric
Importación del Archivo de Contenido JivaroOntologyPrj de Fabric

Creación de un Servicio Empresarial Compuesto de Puntaje Crediticio

Sam Peters ahora crea un Servicio empresarial compuesto de puntaje crediticio con un componente de ensamblado dinámico realizando los siguientes pasos:

  1. Cree un proyecto biblioteca denominado JivaroCreditCBA.lib y defina las interfaces necesarias para el servicio de puntaje crediticio. A fines explicativos, asumimos que las interfaces suministradas por los proveedores del servicio de la tercera parte son las mismas. Si fueran diferentes, se pueden agregar componentes de mapeo de interfaz para adaptar la interfaz del servicio de la tercera parte. La interfaz del puntaje crediticio denominada ICredistService incluye una operación denominada retrieveCustomerCreditScoreBySSN como puede apreciarse en la Figura 19.
Figura 19. Definición de la interfaz del servicio de puntaje crediticio
Definición de la interfaz del servicio de puntaje crediticio
  1. Cree un componente SCA de ensamblado dinámico, denominado CreditScoreService. Seleccione la interfaz ICreditService creada en el paso anterior.
Figura 20. Diagrama de ensamblado para el servicio empresarial compuesto de puntaje crediticio
Diagrama de ensamblado para el servicio empresarial compuesto de puntaje crediticio
  1. Cree un Proceso de Puntaje Crediticio de BPEL utilizando la interfaz de ICreditService como se puede observar en la Figura 21. Implemente esta interfaz para invocar el componente de ensamblado dinámico CreditScoreService creado en el paso anterior. Al realizar una solicitud mediante un proceso de BPEL al componente de ensamblado dinámico, Fabric aplica las políticas empresariales al servicio empresarial solicitado y rutea al punto final seleccionado de la solicitud. Nosotros utilizamos este dispositivo de Fabric para rutear la solicitud a los puntos finales de servicio web de las terceras partes Expo o S&R.
Figura 21. Proceso de Puntaje Crediticio de BPEL
Proceso de Puntaje Crediticio de BPEL
  1. Cree un componente Java denominado CreditScoreContextInjector para agregar propiedades al contexto de servicios web para que actúe TenantIDAssertion y para que el ensamblador dinámico de WBSF identifique el servicio y la organización adecuados para esta solicitud.

    Este componente exporta la interfaz del servicio web ICreditService, que se puede ver en la figura 24 con el retrieveCustomerCreditScoreBySSN de la operación. Este componente también invoca al proceso de BPEL CreditScore creado en el Paso 3.

    Las propiedades del contexto del servicio web de WBSF creado por este componente incluyen:
    a. ID del cliente,
    b. suscripción de ID y
    c. ID de Entorno WBSF.

    El siguiente fragmento de código muestra cómo se crea el objeto de datos del contexto.
Listado 2. Creación del objeto de datos del contexto
BOFactory boFactory = (BOFactory) ServiceManager.INSTANCE
	.locateService("com/ibm/websphere/bo/BOFactory");

DataObject newContext = boFactory.create
        ("http://www.webifysolutions.com/2006/01/prism-context",
    "ContextTypeExt");

Este contexto se propaga a un grupo interior denominado ContextInjectInvoker que extiende al grupo com.ibm.websphere.fabric.da.context.InContextServiceInvoker. Este grupo actualiza la información del contexto necesaria e invoca el proceso CreditScore BPEL. A continuación se detallan los pasos para la extracción e inserción de la ID del cliente, la ID de subscripción y la ID del entorno en el objeto del contexto respectivamente.

  1. Agregue la propiedad de la ID del cliente al contexto del servicio web
    La propiedad de la ID del cliente se recupera mediante un módulo de herramientas denominado WebSphereEnvUtil. El valor de esta propiedad es extraído de las credenciales de seguridad para el usuario final que invoca el servicio web de Servicio Crediticio. Tenga en cuenta que en este escenario, las credenciales de seguridad para los usuarios autenticados son recuperadas de un registro principal de usuarios LDAP que contiene información de usuario para todos los clientes. Las credenciales de seguridad se pasan al módulo WebSphereEnvUtil como parte del contexto de seguridad. El registro de usuarios LDAP utiliza subárboles diferentes para cada organización de clientes. De este modo, el nombre de usuario LDAP altamente calificado incluye la información del cliente. Por ejemplo, el nombre de usuario único completamente calificado del usuario de First Bank N.A (bank1) Bob Nottingham es uid=bobnottingham,cn=users,dc=bank1,dc=com e incluye información sobre el cliente (bank1).

Este nombre único es recuperado utilizando los grupos de ayuda para la autenticación de seguridad de WebSphere Application Server, como se puede observar en el siguiente fragmento.

WSCredentialImpl wsCred = null;
Subject sujetWS = WSSubject.getRunAsSubject();
Set set = sujetWS.getPublicCredentials();
			
if (!set.isEmpty()) {
	wsCred = (WSCredentialImpl) set.iterator().next();
}

String uniqueName = wsCred.getRealmUniqueSecurityName();

La ID del cliente “bank1” es extraída de este nombre único completamente calificado y fijado en la variable “detail1” del objeto userDetailResp, como se puede observar en el siguiente fragmento de código.

BOFactory boFactory = (BOFactory) ServiceManager.INSTANCE
        .locateService("com/ibm/websphere/bo/BOFactory");

DataObject userDetailsResp = boFactory.create(
		"http://WebSphereEnvTest", "UserDetails");

userDetailsResp.setString(detail1", tenantDomain.trim());

El objeto userDetailsResp es utilizado por el componente java CreditScoreContextInjector para recuperar los detalles de la ID del cliente. Los detalles de la ID del cliente se establecen en el contexto de los servicios web, como se observa en el siguiente fragmento de código.

private static final String TENANTID_ASSERTION = 
        "http://www.ibm.com/jivaro/schema/extensions#tenantID";
String tenantID = userDetails.getString("detail1");		
setSelectionProperty(TENANTID_ASSERTION, tenantID);

Tenga en cuenta que el valor del campo estático TENANTID_ASSERTION es el espacio de nombre utilizado para definir TenantIDAssertion en el archivo OWL creado en el paso 3.2.16.

  1. Agregue la propiedad de la ID de la suscripción al contexto del servicio web. Cada ID de suscripción es únic para un usuario, quien accede a un servicio empresarial a través de un canal con rol de usuario determinado. La ID de suscripción puede visualizarse utilizando la etiqueta “Subscriptions” en la consola de administración de WBSF como se puede observar a continuación en la Figura 22.
Figura 22. ID de Suscripción para el Servicio Empresarial de Puntaje Crediticio
ID de Suscripción para el Servicio Empresarial de Puntaje Crediticio

La ID de Subscripción de usuario se recupera a través del módulo de herramientas WebSphereEnvUtil utilizando el servicio web SubscriberManager API de WBSF como se puede observar en la el fragmento de código presentado a continuación. Entonces se analiza sintácticamente la searchResponse en busca de la ID de suscripción al servicio empresarial “CreditScoreBS”. La ID de suscripción recuperada se establece en el contexto como se observa en el fragmento de código presentado a continuación.

searchResponse = (DataObject) 
locateService_SubscriberManagerPartner().invoke
("findUserFromUserName", searchRequest);

setSelectionProperty
    ("http://www.webifysolutions.com/context/subscription",subscriptionID);
  1. Agregue la propiedad de la ID del entorno al contexto del servicio web La ID de entorno creada en el paso anterior, puede visualizarse utilizando la consola de administración de WBSF como se observa en la figura presentada a continuación.
Figura 23. ID de entorno para el entorno de producción de Jivaro
ID de entorno para el entorno de producción de Jivaro

La ID de entorno se recuperó de manera programática mediante el componente java CreditScoreContextInjector como se observa en el fragmento de código presentado a continuación.

String envParamStr = 
(String)locateService_IWebSphereUtilPartner().getWebSphereEnvVar
("FABRIC_ENVIRONMENT_PARAM");
setSelectionProperty("http://www.webifysolutions.com/2005/10/cata
log/governance#Environment", envParamStr);
  1. Configure Single Sign-On (SSO) entre el portlet de WebSphere Portal Server y el el servicio web de puntaje crediticio de WBSF mediante la propagación del token de WebSphere Lightweight Third Party Authentication (LTPA) . Los pasos para la configuración de SSO no se detallan en este artículo pero sí se describen brevemente a continuación en el documento de implementación de código de muestra adjunto a este artículo.
  2. Cambie los consumidores de servicio para enviar solicitudes de servicio web al servidor de WBSF que actúa como proxy de mediación, en lugar de los puntos finales de los servicios web Expo y S&R. El consumidor del servicio, que es el portlet de puntaje crediticio en este escenario, pasa a utilizar la siguiente dirección de punto final: http://fabricserver:9080/JivaroCreditCBA.modWeb/sca/ICreditServicesExport1

    Tenga en cuenta que, si las definiciones de la interfaz del servicio han sido modificadas, debe generarse un nuevo cliente de servicio web para modificar el portlet de puntaje crediticio para acceder al nuevo servicio.

Creación de una política empresarial para el ruteo de múltiples solicitudes de clientes

Sam Peters configura políticas empresariales utilizando la TenantIDAssertion definida en las secciones anteriores presentadas más arriba. Las políticas empresariales permiten a Sam Peters especificar las reglas de ruteo descriptas en el escenario bancario. La afirmación de la política puede expresarse en inglés como:

IF <tenantID=bank1> SELECT the Expo endpoint
AND
IF <tenantID=bank2> SELECT the S&R endpoint.

La ventaja del uso de las políticas empresariales como esta es que estas políticas pueden modificarse al momento de la ejecución sin modificar ningún código. Para especificar y cambiar estas políticas, él utiliza la herramienta Composition Studio de WSBF que puede instalarse en WID desde el requisito de software WBSF-TP.

  1. Pase a la perspectiva de servicio empresarial en WebSphere Integration Developer. Tenga en cuenta que todavía nos encontramos en el mismo área de trabajo creado en la sección anterior para el Servidor Empresarial Compuesto de Puntaje Crediticio.
  2. El uso de Window > Preferences, realiza la configuración del depósito de servicios empresariales para conectar al servidor Fabric como se puede observar en la Figura 24.
Figura 24. Configuración del Depósito de Servicios Empresariales
Configuración del Depósito de Servicios Empresariales
  1. Cree un nuevo proyecto en File > New > Project. Seleccione el Proyecto de Fabric como se puede observar en la Figura 25.
Figura 25. Creación de un nuevo proyecto de Fabric
Creación de un nuevo proyecto de Fabric
  1. Ingrese como Nombre del Proyecto JivaroBusinessSolutions y haga clic en Next. Haga clic en el botón Update Project para sincronizar todas las definiciones desde el servidor de Fabric. Una vez que se hayan duplicado, haga clic en Next.
  2. Seleccione JivaroBusinessSolutions como Proyecto de Fabric y haga clic en Finish como se observa en la Figura 26. Tenga en cuenta que el usuario definido en la sección de preferencias debería tener privilegios de administrador para la organización Jivaro SaaS Solution Provider en Fabric para ver el proyecto JivaroBusinessSolutions.
Figura 26. Creación del Proyecto JivaroBusinessSolutions de Fabric
Creación del Proyecto JivaroBusinessSolutions de Fabric
  1. Desde este proyecto en el Business Services Explorer, cree una serie de aplicaciones denominada CreditServicesAppSuite. Cree una aplicación denominada CreditScoreThirdParty en esta serie de aplicaciones.
  2. El próximo paso es crear un servicio empresarial denominado CreditScoreBS en la aplicación CreditScoreThirdParty. Haga clic con el botón derecho del mouse en Business Service y seleccione New > Business Service. Seleccione "process service" y haga clic en Next.
  3. Ingrese el nombre CreditScoreBS y elija la aplicación CreditScoreThirdParty como se observa en la Figura 27.
Figura 27. Creación de CreditScoreBS en Composition Studio
Creación de CreditScoreBS en Composition Studio
  1. Asocie el portal, los canales de los servicios web, el administrador y los roles empresariales del cliente para este servicio empresarial. Haga clic en Finish.
  2. El siguiente paso es la importación del módulo de WebSphere Integration Developer con el componente SCA de ensamblado dinámico de puntaje crediticio que creamos en la sección anterior. Haga clic con el botón derecho del mouse en Composite Service y seleccione New > Composite Service. Elija JivaroCreditCBA.mod y haga clic en Finish como se observa en la Figura 28.
Figura 28. Creación del Servicio compuesto de puntaje crediticio
Creación del Servicio compuesto de puntaje crediticio

Esta importación creará el servicio compuesto junto con las definiciones de interfaz en el proyecto JivaroBusinessSolutions de Fabric como se observa en la Figura 29.

Figura 29. El proyecto JivaroBusinessSolutions después de la importación del servicio compuesto
El proyecto JivaroBusinessSolutions después de la importación del servicio compuesto
  1. Abra CreditScoreBS y seleccione la interfaz de ICreditServices para cada canal definido para este servicio empresarial como se observa en la Figura 30.
Figura 30. Asociación de interfaces de ICreditServices para el servicio empresarial CreditScoreBS
Asociación de interfaces de ICreditServices para el servicio empresarial CreditScoreBS

El módulo Fabric Hub se selecciona cuando los servicios de la tercera parte son invocados utilizando las solicitudes SOAP de servicio web y no a través de un componente SCA. El uso de un componente SCA requeriría que el servicio de la tercera parte estuviera disponible al momento de la ejecución, lo cual puede no resultar viable.

Asegúrese de que no haya errores de validación en la etiqueta "Validations".

  1. El próximo paso es crear puntos finales para los servicios de puntaje crediticio para las dos partes proveedoras de servicios Expo y S&R. Haga clic con el botón derecho del mouse en el proyecto JivaroBusinessSolutions y elija New > Endpoint.
  2. Ingrese el nombre CreditServiceExpoEp para el servicio Expo y seleccione la dirección HTTP como se observa en la Figura 31.
Figura 31. Creación del punto final CreditServicesExpoEp
Creación del punto final CreditServicesExpoEp
  1. Seleccione la URL del proveedor de servicios para el servicio de puntaje crediticio y haga clic en Finish como se observa en la Figura 32
Figura 32. Dirección URL del punto final CreditServicesExpoEp
Dirección URL del punto final CreditServicesExpoEp
  1. Abra el punto final CreditServicesExpoEp utilizando el editor y seleccione la etiqueta “Assertions”. Agregue TenantIDAssertion como se observa en la Figura 33.
Figura 33. Agregado de TenantIDAssertion para CreditServicesExpoEp
Agregado de TenantIDAssertion para CreditServicesExpoEp
  1. Agregue el valor solicitado “bank1” como se observa en la Figura 34. Con este paso de configuración, Sam Peters puede conocer los requisitos de Betty Nord descriptos en los puntos 2 y 3 en el escenario bancario descripto más arriba. Esta configuración es necesaria para que el Ensamblador dinámico de WBSF seleccione el punto final basándose en las definiciones de las políticas para el servicio empresarial CreditScoreBS.
Figura 34. Valor de TenantIDAssertion
Valor de TenantIDAssertion
  1. Haga clic en la etiqueta "Interfaces" y seleccione la interfaz de ICreditServices.
  2. Haga clic en la etiqueta "Environments" y agregue el entorno de Jivaro-Production como se muestra en la Figura 35.
Figura 35. Configuración del entorno de Producción de Jivaro para CreditServicesExpoEp
Configuración del entorno de Producción de Jivaro para CreditServicesExpoEp
  1. De manera similar, cree el punto final CreditServicesSandREp para representar al proveedor de puntaje crediticio de nuestra segunda tercera parte En este caso, la propiedad de la ID de cliente en la TenantIDAssertion se especificará como "bank2", tal como se puede observar en al Figura 36. Realizando este paso de la configuración Sam Peters puede conocer los requisitos de Caren Sim descriptos en los puntos 2 y 3 del escenario bancario descripto más arriba.
Figura 36. Valor de TenantIDAssertion para CreditServicesSandREp
Valor de TenantIDAssertion para CreditServicesSandREp
  1. Cree una política empresarial para el servicio empresarial CreditScoreBS. Esta política empresarial se aplica al momento de la ejecución para seleccionar de manera dinámica el punto final adecuado (Expo o S&R) en base a la TenantIDAssertion. Para crear una política empresarial para la selección de Expo Credit Services, haga clic con el botón derecho de mouse en el proyecto JivaroBusinessSolutions de Fabric, seleccione New > Policy desde el menú del contexto. Ingrese el nombre ExpoCreditServicesSelectionPolicy y seleccione CreditScoreBS como objetivo, tal como se aprecia en la Figura 37.
  2. Haga clic en Next para continuar.
Figura 37. Creación de ExpoCreditServicesSelectionPolicy
Creación de ExpoCreditServicesSelectionPolicy
  1. Seleccione como el contexto de la política al servicio empresarial CreditScoreBS, como se observa en la Figura 38. La figura se basa en los objetos definidos en esta sección.
  2. Haga clic en Next para continuar.
Figura 38. Contexto para ExpoCreditServicesSelectionPolicy
Contexto para ExpoCreditServicesSelectionPolicy
  1. El contenido transmitido al ensamblador dinámico de Fabric en el contexto, puede compararse con la aplicación de un conjunto de políticas. Seleccione el contenido tenantID = bank1 como se observa en la Figura 39.
Figura 39. Contenido para ExpoCreditServicesSelectionPolicy
Contenido para ExpoCreditServicesSelectionPolicy
  1. Haga clic en Finish. Esto abre la política en la vista principal del Composition Studio.
  2. Seleccione el contrato para la política TenantIDAssertion como se muestra en la Figura 40.
  3. Guarde esta política y asegúrese de que no haya errores de validación en la etiqueta Validations.
Figura 40. Contrato para la política ExpoCreditServicesSelectionPolicy
Contrato para la política ExpoCreditServicesSelectionPolicy
  1. Siga los mismos pasos detallados anteriormente para crear una política denominada SandRCreditServicesSelectionPolicy. En este caso, el valor del contenido y del contrato será “bank2” como se observa en la Figura presentada a continuación.
Figura 41. Contrato para la política SandRCreditServicesSelectionPolicy
Contrato para la política SandRCreditServicesSelectionPolicy
  1. Ahora podemos simular las políticas que hemos creado para el servicio empresarial CreditScoreBS para asegurarnos de que al momento de la ejecución se seleccione el punto final correcto. Para crear una nueva simulación, Sam Peters hace clic con el botón derecho del mouse en el proyecto JivaroBusinessSolutions y selecciona New > Simulation. Ingrese como nombre de la simulación CreditServices-PolicySimulation. En la Figura 42 que presentamos a continuación se muestran más detalles sobre la creación de la simulación de esta política.
Figura 42. Selección del punto final dinámico de simulación
Selección del punto final dinámico de simulación
  1. Seleccione los valores de contexto obligatorios y opcionales para la simulación de la política tal como se muestra en la Figura 43. Estos valores se inyectan mediante el módulo SCA inyector de contexto mencionado anteriormente para cada invocación del servicio empresarial de puntaje crediticio. Haga clic en Run para iniciar la simulación.
Figura 43. Elección de los valores de contexto obligatorios y opcionales para la simulación de políticas
Elección de los valores de contexto obligatorios y opcionales para la simulación de políticas

El simulador de la política crea la política de selección, encuentra una lista de puntos finales posibles y finalmente selecciona un punto final basándose en la información de contexto suministrada. Podemos ver que para bank1, el simulador de política seleccionó el punto final Expo Credit Services, como se puede observar en la Figura 44.

Figura 44. Resultados de la simulación que muestran el punto final Expo seleccionado
Resultados de la simulación que muestran el punto final Expo seleccionado
  1. Cambie los valores proporcionados para esta simulación para verificar que el punto final del servicio crediticio de S&R sea seleccionado cuando el valor de la ID del cliente sea “bank2”.
  2. Al utilizar la etiqueta "Repository Changes" en Composition Studio, presente todas las configuraciones al Business Services Repository (BSR). Un usuario de Fabric con rol de administrador necesita aprobar estas configuraciones y publicarlas al BSR. La Figura 45 muestra los pasos para presentar y actualizar los cambios en los proyectos de Composition Studio.
Figura 45. Presentación y actualización de las configuraciones para el servicio empresarial de puntaje crediticio
Presentación y actualización de las configuraciones para el servicio empresarial de puntaje crediticio

Incorpore organizaciones de clientes y de usuarios a los servicios empresariales

Las organizaciones de clientes First Bank N.A (bank1) y Second Canada Bank (bank2) deben ser incorporadas al servicio empresarial de puntaje crediticio para autorizar a los usuarios de estas organizaciones a invocar el servicio empresarial. Para esto, Sam Peters realiza los siguientes pasos utilizando la consola de administración de WBSF.

  1. Regístrese en la consola de administración de Fabric utilizando la ID y la contraseña de usuario de administración.
  2. Haga clic en Governance Manager > Manage Enrollments.
  3. Seleccione las organizaciones bancarias de clientes creadas y CreditScoreBS como se observa en la Figura 46.
Figura 46. Incorporación de bank1 y bank2 para el Servicio empresarial de puntaje crediticio
Incorporación de bank1 y bank2 para el Servicio empresarial de puntaje crediticio
  1. Haga clic para incorporar las organizaciones
  2. Asegúrese de que estas organizaciones sean incorporadas al servicio empresarial CreditScoreBS usando Governance Manager > Manage Subscribers > bank1 > Enrollments (etiqueta) como se muestra en la Figura 47.
Figura 47. First Bank N.A incorporado al servicio empresarial de puntaje crediticio
First Bank N.A incorporado al servicio empresarial de puntaje crediticio
  1. Haga clic en las etiquetas de los usuarios. Agregue usuarios importantes y los roles de los mismos que necesitan acceso a este servicio empresarial. En la Figura 48 se puede ver un ejemplo de usuario con Bob Nottingham en el rol de un cliente que se incorpora a la organización bank1.
Figura 48. Incorporación de usuarios y sus roles al servicio empresarial de puntaje crediticio
Incorporación de usuarios y sus roles al servicio empresarial de puntaje crediticio
  1. Cuando los usuarios se suscriben a los servicios empresariales, les es asignada un ID único de suscripción según el servicio empresarial y el nombre de su rol. Este ID de suscripción debe ser presentado al ensamblador dinámico para validar que el nombre de usuario esté suscripto para acceder al servicio empresarial. En el paso anterior, hemos analizado cómo este ID de suscripción se agrega de forma programática mediante el componente CreditScoreContextInjector al contexto del servicio web de cada solicitud de servicio. Este ID de suscripción se utiliza también para generar métricas relacionadas con la operación y la performance mediante el WBSF Performance Manager.

Controle el uso del servicio específico del cliente

Sam Peters controla el uso del servicio web de puntaje crediticio por parte de cada cliente mediante el uso del administrador de performance de WBSF siguiendo los pasos señalados en esta sección. Esta información es capturada por WBSF utilizando la ID de suscripción insertada mediante el componente Context Injector.

El resumen de la invocación del servicio y los detalles de performance del mismo pueden controlarse utilizando Fabric Performance Manager. En la Figura que se presenta a continuación se muestra el uso del servicio para el puntaje crediticio por parte de los usuarios de First Bank N.A y Second Canada Bank.

Figura 49. Resumen del informe de uso del servicio realizado por Fabric Performance Manager
Resumen del informe de uso del servicio realizado por Fabric Performance Manager

Conclusión

Hemos demostrado cómo utilizar WebSphere Business Services Fabric (WBSF) para la implementación de un patrón de proxy de mediación para el ruteo de solicitudes de servicio web para múltiples clientes. Este patrón de diseño ofrece la ventaja de que se necesitan pocas modificaciones de código, o incluso ninguna a los servicios web existentes con el fin de permitir el servicio multi-tenant. Hemos creado políticas empresariales utilizando una afirmación de ontología definida y personalizada denominada TenantIDAssertion para el ruteo de solicitudes específicas de clientes. También hemos demostrado cómo utilizar WBSF para proporcionar funciones de mediación adicionales como la autorización (mediante la incorporación de usuarios a las organizaciones) y la medición (mediante el uso del administrador de performance de WBSF).


Descargas

DescripciónNombretamaño
Sample scripts for this articleWBSFSampleSourceV2.zip10KB
A related PDF (not of the article)1MediationUsingWBSFScriptv8.pdf50KB

Nota

  1. Mediation using WSBF presentation.

Recursos

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=SOA y servicios web , WebSphere
ArticleID=507416
ArticleTitle=Desarrollo e implementación de las soluciones multi-tenant entregadas mediante el uso de middleware de IBM: Parte 6: Patrón proxy de mediación de servicio web para el ruteo de solicitudes de múltiples clientes usando WebSphere Business Services Fabric
publish-date=08082011