IBM y SAP implementan decisiones personalizadas de flujo de trabajo en Alloy 1.0

Con Alloy de IBM y SAP 1.0, los usuarios de negocios pueden acceder al software y a la información de SAP con gran facilidad desde su entorno IBM Lotus Notes, tanto de manera online como offline. Además de gestionar licencias, viajes e informes, Alloy también permite que los pasos de las decisiones personalizadas de flujo de trabajo, definidos en un proceso de negocios SAP, se coloquen en la bandeja de entrada de Lotus Notes del usuario. Este artículo explica cuáles son los pasos necesarios para implementar dichas decisiones personalizadas de flujo de trabajo, basándose en un ejemplo simple de un cliente.

Hardy Groeger, Certified Senior IT Architect, IBM Corporation

Hardy Groeger es Certified Senior IT Architect y trabaja como Services Solution Architect de IBM Software Services para Lotus en Europa, donde se concentra en la arquitectura y el desarrollo de aplicaciones basados en la cartera de productos Lotus. Desde que se unió a IBM en 2001, ocupó varios cargos en las áreas de desarrollo de productos y servicios. Antes de comenzar a trabajar para IBM, se desempeñaba como Gerente de Proyectos de Desarrollo para un socio de negocios alemán de Lotus y se especializaba en la integración de Lotus Domino y SAP R/3. Quienes deseen ponerse en contacto con Hardy, pueden escribirle a hardy.groeger@de.ibm.com.



05-06-2009 (Primera publicación 19-05-2009)

Si bien se mencionan los pasos necesarios dentro del sistema SAP ERP y SAP Netweaver, este artículo se concentra en la personalización necesaria dentro de Lotus Notes.

Escenario de muestra: Aprobación de la creación de un maestro de materiales simple

En vez de implementar un flujo de trabajo complejo, concentrémonos en los pasos clave y elijamos un escenario simple. Supongamos que el cliente necesita controlar la creación de un maestro de materiales (transacción MM01) en el servidor o la red de back-end de SAP ERP y, por lo tanto, desea crear un flujo de trabajo de negocios que active un paso de decisión cuando se cree cada maestro de materiales. El único propósito de este paso de decisión consiste en aprobar o rechazar el material nuevo. Además de los atributos estándar de un objeto de negocios material, se definen algunos atributos adicionales (como, por ejemplo, el peso y la unidad de peso) y se los envía al aprobador en Lotus Notes, como se puede observar en la figura 1.

Figura 1. Decisión personalizada de aprobación de material en la bandeja de entrada de Lotus Notes
Custom material approval decision in the Lotus Notes inbox

En base a la información provista sobre el material recién creado, el aprobador toma una decisión directamente dentro de la bandeja de entrada de Lotus Notes, y la aprobación o el rechazo correspondiente se llevan a cabo en SAP. Para poder implementar este escenario, es necesario realizar varios pasos dentro de SAP ERP y Netweaver y en Lotus Notes e IBM Lotus Domino.


Configuración del flujo de trabajo de aprobación en SAP

Como usted desea representar un material nuevo con atributos de datos adicionales, primero debe crear un subtipo de objeto de negocios nuevo en SAP ERP y los atributos adicionales. Para garantizar que su flujo de trabajo de aprobación personalizado se pueda activar cuando se creen instancias de este subtipo de objeto de negocios, usted también deberá establecer la vinculación con el evento correspondiente.

Además, usted debe crear el flujo de trabajo de aprobación de muestra usando SAP Workflow Builder. Podrá encontrar instrucciones detalladas paso a paso para la creación de elementos contenedores, atributos y la definición del flujo de trabajo y los pasos antes mencionados en esta entrada de blog en SAP Developer Network (SDN).

Con el objetivo de mantener la simplicidad, no se implementó la determinación de ningún agente complejo en este ejemplo. En cambio, el iniciador de la creación del material también es el aprobador. Queda claro que este enfoque no tiene sentido en el caso de los flujos de trabajo de aprobación de producción.

Ahora que ha definido el objeto de negocios y el flujo de trabajo, usted debe asegurarse de que la decisión de aprobación se enrute hacia Alloy y, por lo tanto, llegue a la bandeja de entrada de Lotus Notes del aprobador. Una vez más, en el caso de este ejercicio, no se implementará ningún escenario complejo que incluya la codificación o el modelado por parte de SAP. En cambio, usted potencia el manejo entrante / saliente estándar soportado a través de la personalización del patrón del flujo de trabajo en SAP Information Worker Implementation Guide.

La personalización del patrón del flujo de trabajo se ocupa de la definición de una aplicación de flujo de trabajo, el paso de decisión que se presentará ante Alloy y la configuración específica para el procesamiento entrante y saliente. Desde una perspectiva de Lotus Domino, la ID de la aplicación y el tipo de elemento vinculado al groupware son las configuraciones más importantes desde el punto de vista de SAP. La ID de la aplicación se usa para buscar la configuración de la aplicación correspondiente en Alloy en Lotus Domino y el valor del tipo de elemento vinculado al groupware se usa para mapear el mensaje entrante hacia un formulario específico en Lotus Notes con el objetivo de presentar los datos. En este ejemplo, usted especifica la ID de la aplicación como ZMATCR y el tipo de elemento vinculado al groupware como MaterialMasterCreationWorkflow.ApproverTask. Podrá encontrar instrucciones detalladas paso a paso para la personalización del patrón del flujo de trabajo en SAP en esta entrada de blog en SDN.


Configuración y personalización de la aprobación en Lotus Notes y Lotus Domino

Ahora que ya se implementó su flujo de trabajo de creación de material en SAP, usted deberá configurar Alloy en Lotus Domino para que las solicitudes de aprobación entrantes se acepten y manejen de manera apropiada. El componente central de toda configuración relacionada con Alloy en Lotus Domino es la aplicación NDERP Web Service en el servidor Alloy Lotus Domino. Abra la base de datos, navegue hacia Applications (Aplicaciones) y haga clic sobre el botón New Application (Aplicación nueva) en la parte superior para crear un documento de configuración de aplicación. Cada decisión personalizada de flujo de trabajo debe estar representada por su propio documento de configuración de aplicación en la aplicación NDERP Web Service. En la figura 2 se observa un documento de configuración de muestra.

En el campo Application Properties (Propiedades de la aplicación), especifique Customized Decisions (Decisiones personalizadas) desde la lista desplegable de la aplicación. En el campo Application key (Clave de la aplicación), ingrese el mismo valor que especificó para la ID de la aplicación en la aplicación del flujo de trabajo en la red back-end de ERP (en este caso, ZMATCR). La ID de la aplicación se encarga de mapear una aplicación de flujo de trabajo en SAP hacia una aplicación Alloy configurada en Lotus Domino.

El valor ingresado en el campo Application Name (Nombre de la aplicación) se usa como la descripción necesaria para los elementos de trabajo de aprobación enviados a las bandejas de entrada de los usuarios y para la asignación de roles en la interfaz de usuario de administración de Alloy.

Hasta este momento, usted ha configurado el mapeo necesario entre la aplicación del flujo de trabajo que implementó en SAP y una aplicación Alloy correspondiente en Lotus Domino. Pero todavía falta la definición de cómo se deberían presentar los datos entrantes en Lotus Domino. Generalmente, los documentos se presentan usando formularios en Lotus Domino. Por lo tanto, usted debe especificar el tipo de mensaje entrante que se espera recibir y qué formulario se debería usar para presentarlo en el archivo de correo del usuario. Para esto, usted necesita el valor que especificó con anterioridad para el tipo de elemento vinculado al groupware en la red back-end de SAP ERP.

Figura 2. Configuración de la aplicación personalizada de flujo de trabajo en Lotus Domino
Custom workflow application configuration in Lotus Domino

Ingrese MaterialMasterCreationWorkflow.ApproverTask en el campo denominado Bound Item Type (Tipo de elemento vinculado) y coloque el siguiente nombre en el campo Form (Formulario): GenericCustomApprovalWorkflow. Usted puede crear este formulario oculto copiando el formulario de aprobación del flujo de trabajo predeterminado (ERPApprovalWorkflow), que se envía como parte de las extensiones de la plantilla de correo de Alloy y proporciona un proceso de renderización estándar para los mensajes de aprobación arbitraria. Asegúrese de crear una copia en vez de usar ERPApprovalWorkflow directamente. De este modo, podrá realizar cambios menores a este formulario mientras se preserva el formulario original y así se evitan posibles problemas al realizar las actualizaciones futuras de Alloy.

Aunque no se los tiene en cuenta en nuestro ejemplo, es importante resaltar los últimos dos campos del formulario de aplicación: los campos denominados Status update form name (Nombre del formulario de actualización de estado) y Custom agent (Agente personalizado). El campo Status update form name (Nombre del formulario de actualización de estado) se puede usar para especificar un formulario personalizado que se usará cuando sea necesario presentar mensajes de actualización de estado para esta aplicación de flujo del trabajo en el archivo de correo del usuario. Esta opción permite la implementación de controles personalizados y crear la lógica para los mensajes de actualización de estado.

La configuración del campo Custom agent (Agente personalizado) es todavía más poderosa. Use esta configuración para controlar los elementos de datos dentro de los mensajes entrantes de manera programática. Estos se presentan por medio de los formularios de aprobación correspondientes a este flujo de trabajo. Tenga en cuenta que el uso del agente requiere que usted esté familiarizado con los contenidos y las reglas que existen para los datos de este tipo de elemento en el sistema SAP y que sepa cómo crear agentes en IBM Lotus Domino Designer. Un escenario común para el uso de agentes personalizados es la búsqueda de nombres, donde los usuarios de SAP pueden estar representados en un mensaje entrante por medio de sus ID de usuario de SAP. Estos agentes buscan sus Lotus Notes DN correspondientes u otros formatos de nombre de manera programática y los agregan al mensaje.

Ahora, guarde las modificaciones realizadas, cierre su aplicación nueva y espere a recibir la siguiente notificación: "The application was saved successfully" (La aplicación se guardó con éxito).

Recapitulemos. Hasta ahora, usted creó una nueva aplicación de flujo de trabajo en SAP, incluyendo un paso de decisión que apunta hacia el usuario, configuró Alloy en Lotus Domino para que acepte los mensajes de aprobación correspondientes a dicho flujo de trabajo, y especificó un formulario a crear que se usará para presentar estos mensajes. Ahora, no sólo necesita crear dicho formulario personalizado sino que, como especificó atributos adicionales para el contenedor del flujo de trabajo en SAP, también debe asegurarse de que el aprobador en Lotus Notes tenga acceso a estos elementos de datos adicionales. Es posible que ésta sea información necesaria para poder tomar la decisión de aprobación o de rechazo.

Como ya se definió con anterioridad, los mensajes de aprobación entrantes se presentan por medio de un formulario denominado GenericCustomApprovalWorkflow en Lotus Notes. Analicemos los pasos necesarios para crear este formulario. Como parte de la instalación de Alloy, usted fusionó los elementos de diseño del correo de Alloy en la plantilla de correo de su organización. Abra la plantilla maestra de correo que incluye los elementos de diseño de Alloy en Lotus Domino Designer y busque el formulario denominado ERPApprovalWorkflow con el objetivo de crear una copia de éste (por ejemplo, presionando Ctrl+C y, luego, Ctrl+V). Ver la figura 3.

Figura 3. Creación de una copia del formulario ERPApprovalWorkflow
Creating a copy of the (ERPApprovalWorkflow) form

Luego de pegar la copia, Lotus Domino Designer le pregunta si desea que todos los cambios futuros al formulario original se apliquen a dicha copia. Haga clic sobre No y cambie el nombre del formulario por GenericCustomApprovalWorkflow. Además, cambie el alias del formulario por GenericCustomApprovalWorkflow. Luego, abra el formulario en Lotus Domino Designer para observar sus contenidos con mayor detenimiento. Ver la figura 4.

Figura 4. Formulario GenericCustomApprovalWorkflow en Lotus Domino Designer
The (GenericCustomApprovalWorkflow) form in Lotus Domino Designer

Como se puede observar en la figura 4, el formulario GenericCustomApprovalWorkflow, que es una copia del formulario ERPApprovalWorkflow, es bastante simple. Incluye los botones de acción para aprobar o rechazar, un área de encabezados, un área de comentarios y un cuerpo. Para que este formulario pueda presentar información adicional sobre el material, usted deber personalizarlo usando Lotus Domino Designer.

Para simplificar la reutilización de su solución de decisión personalizada de flujo de trabajo, no debe insertar campos personalizados y crear la lógica directamente en este formulario. En cambio, usted puede potenciar un enfoque de subformulario computado. Este enfoque le permite usar GenericCustomApprovalWorkflow para aplicaciones arbitrarias de flujo de trabajo que requieren la presentación sólo de los datos adicionales relevantes para el flujo de trabajo, en vez de cualquier tipo de formulario complejo o lógica de negocios. Abra el formulario denominado GenericCustomApprovalWorkflow en Lotus Domino Designer, coloque el cursor debajo del campo del cuerpo y seleccione Create\Resource\Insert Subform (Crear \ Recurso \ Insertar subformulario) en el menú principal para abrir la ventana que le permite insertar un subformulario. En esta ventana, asegúrese de seleccionar Insert Subform (Insertar subformulario) basándose en la opción de fórmula, como se puede observar en la figura 5.

Figura 5. Ventana Insert Subform (Insertar subformulario)
Insert Subform window

Especifique BoundItemType como el valor predeterminado para el subformulario computado, como se puede observar en la figura 6. BoundItemType es un elemento de Lotus Notes que Alloy agrega automáticamente al documento de Lotus Notes cuando se procesa un mensaje entrante que proviene de SAP. Este elemento incluye el mismo valor que se especificó en el campo Bound Item Type (Tipo de elemento vinculado) en la configuración de la aplicación en la aplicación NDERP Web Service.

Figura 6. Subformulario computado en ERPApprovalWorkflow
Computed subform in (ERPApprovalWorkflow)

Usando este enfoque, usted puede implementar datos específicos que estén en subformularios independientes en vez de en el formulario genérico denominado GenericCustomApprovalWorkflow, donde cada subformulario se corresponde con un tipo de elemento vinculado (es decir, un tipo específico de mensaje de aprobación entrante). En este caso, usted sabe que el tipo de elemento vinculado esperado es MaterialMasterCreationWorkflow.ApproverTask. Por lo tanto, usted debe crear un subformulario con ese mismo nombre. Ingrese MaterialMasterCreationWorkflow.ApproverTask en el campo Name (Nombre) de la ventana New Subform (Subformulario nuevo), como se puede observar en la figura 7.

Figura 7. Creación de un subformulario nuevo
Create new subform

Los formularios y los subformularios en Lotus Notes están diseñados para presentar datos que están en un documento de Lotus Notes. En este caso, los datos generales relacionados con el flujo de trabajo ya se manejan en el formulario GenericCustomApprovalWorkflow y se supone que el subformulario nuevo sólo presenta la información que se modeló específicamente en el Workflow Container con el objetivo de representar su objeto de negocios del material. ¿Cómo puede acceder a los atributos que especificó en el contenedor de flujo de trabajo en SAP desde Lotus Notes?

De manera predeterminada, Alloy crea elementos de Lotus Notes para cada elemento definido en el correspondiente contenedor de flujo de trabajo en SAP. En este caso, se trata de los elementos para ZMaterialNumber, ZMaterialText, etc. Para evitar conflictos de nombres, Alloy agrega el prefijo WorkflowContainer00 a estos campos para que el valor del número de material se almacene en un elemento denominado WorkflowContainer00ZMaterialNumber. Todo lo que tiene que hacer es crear campos de formulario en el subformulario nuevo que hagan referencia a los elementos de Lotus Notes correspondientes creados por Alloy. En este caso, usted tiene que presentar una tabla que muestre toda la información relevante sobre el material nuevo desde SAP.

Use los controles comunes de Lotus Domino Designer para crear una tabla con dos columnas, una para un rótulo y otra para los campos con los valores de datos. Cree cada campo como un campo de texto computado, como se puede observar en la figura 8.

Figura 8. Propiedades de los campos para ZMaterialNumber
Field properties for ZMaterialNumber

Tenga en cuenta toda la información resaltada en la figura 9. Cada campo en la tabla se refiere al elemento del contendor de flujo de trabajo correspondiente usando el prefijo específico a Alloy. Probablemente se dé cuenta de que este formulario de muestra usa un conjunto de atributos de materiales adicionales levemente diferentes de los que figuran en la entrada de blog en SDN antes mencionada. Estos elementos adicionales se tendrían que agregar al subtipo del objeto de negocios y al contenedor de flujo de trabajo de SAP ERP.

Figura 9. Tabla para presentar información adicional del material
Table to render extended material information

Además de los campos del contenedor de flujo de trabajo, existe un campo más que aparece en la figura 10. El campo ZSenderName tiene la función de demostrar las capacidades de integración de IBM Lotus Sametime® que usted puede potenciar en sus soluciones Alloy (si hay un servidor Lotus Sametime disponible y se lo configuró de manera adecuada).

Figura 10. Campo de Lotus Notes para el nombre del solicitante
Lotus Notes field for requester name

Como parte de la definición de su flujo de trabajo, usted podría enviar información sobre el usuario (representada como las ID de usuario de SAP), además de otros datos de objetos de negocios, con el objetivo de mostrar el estado online de Lotus Sametime de estos usuarios en su formulario de aprobación. Como Lotus Notes requiere que haya campos habilitados para que Lotus Sametime tenga conocimiento del tipo Name (Nombre), es necesario buscar el valor que SAP transfirió y hacer una búsqueda del nombre Notes (Notas) de ese usuario de SAP. Un requisito para que Alloy funcione adecuadamente es que los nombres de los usuarios de SAP se agreguen a los documentos de personas de Lotus Domino para los usuarios de Alloy. Por lo tanto, se podría usar un agente LotusScript® simple para buscar el nombre de Lotus Notes correspondiente a la ID de un usuario de SAP en particular. Para mantener la simplicidad de este documento, no desarrollamos aquí este tipo de script, pero tenga en cuenta que se debería hacer referencia a dicho agente en el documento de la aplicación del flujo de trabajo en la aplicación NDERP Web Services.

Por último, en caso que no lo haya hecho, guarde las modificaciones realizadas y cierre su subformulario nuevo y el formulario GenericCustomApprovalWorkflow.


Configuración adicional de Alloy

¿Listo? Todavía no. Recapitulemos. Usted implementó su flujo de trabajo de back-end en SAP, configuró una aplicación correspondiente en Alloy en Lotus Domino e implementó un formulario o un subformulario personalizado para presentar sus datos adicionales desde los mensajes de aprobación entrantes. ¿Pero cómo harían SAP y Lotus Domino para determinar hacia quién enrutar dichos mensajes de aprobación?

Un principio de diseño en Alloy establece que toda lógica de negocios es propiedad y está a cargo de SAP y no de Lotus Domino. Por lo tanto, es necesario configurar los datos del rol correspondiente en SAP. Más específicamente, es necesario configurar los roles de la aplicación en SAP User Management Engine (UME), que es parte de la plataforma SAP Netweaver. Asegúrese de que esta configuración se pueda hacer sólo después de que se haya configurado la aplicación del flujo de trabajo en Alloy sobre Lotus Domino. Luego de que exista una entrada de la aplicación en la aplicación NDERP Web Service, Alloy sincroniza esta entrada con la administración de Alloy en Netweaver, y una entrada correspondiente aparece en la UI de administración de Alloy en Netweaver, a la que se puede acceder desde la URL predeterminada: http://<j2ee-engine>:<port>/alloy.

Se pueden encontrar instrucciones detalladas sobre cómo mapear los roles de la aplicación requeridos hacia los grupos de usuarios en UME en esta entrada de blog en SDN.

Aunque usted no lo crea, eso es todo. Ahora, usted debería poder probar su nueva aplicación personalizada de flujo de trabajo. Es importante probar la operación en su totalidad, es decir, desde el inicio del flujo de trabajo, pasando por el enrutamiento y el manejo del mensaje de aprobación en Lotus Domino, hasta el procesamiento de una decisión de aprobación en SAP.


Conclusión

En este artículo, describimos todos los pasos necesarios para implementar un escenario de decisión personalizada de flujo de trabajo en Alloy 1.0. Para concentrarnos en los aspectos clave, hemos aceptado diversas simplificaciones que, muy probablemente, no serían aplicables a soluciones de producción. Uno de estos ejemplos es la determinación del agente en el flujo de trabajo SAP de muestra. Otro ejemplo es que, en muchos casos, es posible que usted prefiera exponer los flujos de trabajo existentes a Alloy en vez de tener que modificarlos o crear nuevas definiciones de flujo de trabajo en SAP. En estos casos, se puede requerir que usted codifique un procesamiento personalizado entrante y saliente en la red de back-end de SAP ERP. Esta entrada de blog en SDN explica cómo hacer esto.

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=Lotus, WebSphere
ArticleID=407994
ArticleTitle=IBM y SAP implementan decisiones personalizadas de flujo de trabajo en Alloy 1.0
publish-date=06052009