Cómo configurar Virtualización para entidades relacionadas

<< Click to Display Table of Contents >>

Navigation:  Bizagi Studio > ¿Cómo hacer? .... > Temas de integración >

Cómo configurar Virtualización para entidades relacionadas

Introducción

Como un requerimiento de negocio frecuente, un proceso puede necesitar acceder a cierta información que reside en un repositorio existente. Esto es, con el objetivo de presentar y utilizar esta información en Bizagi (como parte de información del negocio en el proceso).

Para este tipo de integración de datos, Bizagi presenta una funcionalidad llamada Virtualización, la cual es un mecanismo de integración a nivel de datos que permite que más de una tabla externa desde el repositorio existente, sean incluida en el modelo de datos del proceso de Bizagi para su uso de manera transparente.

 

El acceso a datos a la fuente externa de información se realiza por demanda desde la ejecución del proceso, sea para leer o escribir datos en ella.

A través de la Virtualización, más de una tabla externa (múltiples tablas) se pueden mapear en el modelo de datos de Bizagi, de manera que esta información haga parte de la solución Bizagi sin importar su origen.

 

Cuando se desea trabajar e incluir más de una tabla externa (es decir, se quiera virtualizar múltiples tablas), es común que estas tablas contengan una relación entre ellas (típicamente mediante llaves foráneas). Por lo tanto, para configurar apropiadamente este escenario, en Bizagi utilizamos el asistente de virtualización y unos pasos adicionales para incluir explícitamente el mapeo de los atributos que representan la relación en dichas entidades.

 

 

HT_VirtualizationRelatedEntities00_Overview

 

 

La siguiente sección ilustra cómo configurar las entidades relacionadas en cuanto al mapeo de la virtualización, de manera que Bizagi utilice la relación de la llave foránea para obtener automáticamente la información de los registros asociados (un "JOIN" en SQL).

 

Ejemplo

En esta sección presentaremos como ejemplo, un proceso en Bizagi el cual virtualiza 2 entidades desde un repositorio existente (una base de datos de ejemplo de un CRM en SQL Server). Las entidades a virtualizar corresponden a las tablas: Customer (Cliente) y Customer_Account (Cuentas del cliente), donde hay una relación 1 a muchos entre ellas.

 

 

HT_VirtualizationRelatedEntities01_External

 

 

Nuestro proceso en Bizagi se llama Product Request (Solicitud de productos), y permitirá al usuario final buscar un cliente existente o el registro de uno nuevo (por medio de un Join search dialog, o "Buscador Ventana"). Esto se realiza en la primera actividad del proceso que llamamos Register Request (Registrar solicitud).

 

 

HT_VirtualizationRelatedEntities02_Process

 

 

Cuando el usuario final seleccione un cliente existente, la información de las cuentas del mismo (y su información), será automáticamente presentada en Bizagi.

 

Para lograr lo anterior, describiremos el procedimiento que involucra: la configuración de la virtualización para las entidades, incluir sus atributos de relación, especificar el mapeo para estas relaciones, y definir la forma para nuestra actividad Register Request.

 

 

Procedimiento

Este procedimiento se realiza así:

 

1. Configurar la virtualización para el repositorio existente.

2. Incluir las relaciones de las entidades virtuales en el proceso.

3. Especificar el mapeo para las relaciones.

4. Definir la forma de mostrar la información de los registros múltiples.

 

La configuración que se muestra en este ejemplo implica dos pasos del Asistente para la virtualización y las opciones avanzadas de virtualización.

 

 

Configurar la virtualización para el repositorio existente

Primero utilizaremos el asistente de virtualización para crear las entidades virtuales en nuestro proyecto Bizagi a partir de las existentes en nuestra base de datos CRM.

 

Para realizarlo, vaya al paso 2 del asistente de Proceso Process llamado Modelo de datos (Data Model):

 

HT_VirtualizationRelatedEntities03_DataModelStep2

 

 

 

Seleccione virtualización para iniciar el asistente que permitirá configurar fácilmente la información relacionada a nuestra conexión al CRM:

 

HT_VirtualizationRelatedEntities04_LaunchWizard

 

 

 

Incluya la información para nombrar y definir nuestro CRM como un "sistema externo" (external system) en el proyecto Bizagi:

 

HT_VirtualizationRelated_10Step1

 

Especifique el detalle de la conexión para el proveedor de la conexión (Provider):

 

HT_VirtualizationRelated_10Step2

 

 

Bizagi presentará las tablas y vistas disponibles del CRM para su virtualización.

Seleccione (marque) las entidades a virtualizar y dé clic en Siguiente.

 

 

HT_VirtualizationRelated_10Step3

 

En el siguiente paso no se define un filtro, ya que no se necesita en nuestro ejemplo. Haga clic en Siguiente.

 

 

HT_VirtualizationRelated_10Step4

 

 

Bizagi creará las entidades correspondientes:

 

HT_VirtualizationRelated_10Step5

 

 

note_pin

Cuando el asistente de Virtualización y Replicación crea entidades y las mapea de manera asistida, se crearán los atributos de relación de manera automática si se han includo entidades relacionadas en este paso.

El asistente crea un atributo de referencia pero queda a su consideración si necesita definir una colección para manejar esta relación como 1-n (o dejarla por defecto como 1-1).

 

 

Cuando este proceso termine, haga clic en Finalizar (Finish).

 

HT_VirtualizationRelated_10Step6

 

Incluir los atributos para las relaciones de las entidades

Ahora procederemos a incluir la relación en nuestro modelo de datos Bizagi para representar y manejar la relación entre las tablas Customer y Customer_Account del CRM.

 

Habiendo completado el paso anterior, el modelo de datos del proceso Product Request mostrará las 2 entidades creadas para la virtualización: Customer y Customer_Accou (acortado de Customer_Account).

 

HT_VirtualizationRelatedEntities10_Relationship

 

 

 

Asegúrese que haya incluido un atributo de tipo referencia en la entidad de proceso (llamada "Product Request"), a la entidad Customer:

 

HT_VirtualizationRelatedEntities11_Relationship

 

 

De esta manera, definiremos que en nuestra entidad Product Request podremos tener un cliente nuevo o existente asociado al caso (a la solicitud).

 

Edite la entidad Customer para incluir explícitamente una relación 1-n hacia la entidad Customer_Accou.

 

HT_VirtualizationRelatedEntities12_Relationship

 

 

 

De esta forma, un cliente tendrá una o más cuentas (registros en Customer_Accou). Para esta definición, incluiremos un atributo de tipo colección:

 

HT_VirtualizationRelatedEntities13_Relationship

 

 

Bizagi incluirá los atributos para representar esta relación:

 

 

HT_VirtualizationRelatedEntities14_Relationship

 

 

note_pin

En el ejemplo anterior, el atributo Customer es el que se creó automáticamente por Bizagi al definir la relación 1-n (este atributo mantiene la relación en Bizagi desde la entidad Customer_Account).

 

Se recomienda entonces que se elimine el atributo idCustomer, dado que su información no haría parte de la relación en Bizagi (ya contemplada por el otro atributo).

Para eliminar este atributo cuya información ya estaría mapeada en Customer, puede hacerlo desde el diagrama de entidades o ir al módulo de entidades:

 

HT_VirtualizationRelatedEntities27_Delete

 

 

Especificar el mapeo para la relación

Una vez que nuestro modelo de datos en Bizagi contenga la información de la relación, necesitaremos incluir el mapeo para estos atributos.

 

Para realizarlo, vaya a la vista de Experto y seleccione el módulo de Sistemas (Systems).

 

Navegue en el nodo de Sistema (System) y Proveedor (Provider), nombrados en nuestra configuración de virtualización como: "MyCRM" y "MyProvider1", hasta encontrar el listado de las entidades virtuales (Customer y Customer_Accou).

 

Haga clic derecho sobre Customer_Accou y seleccione la opción de Adicionar atributo a la virtualización ("Add attribute to virtual"):

 

HT_VirtualizationRelatedEntities15_Systems

 

 

 

Incluya el atributo "Customer" de referencia que se creó para la relación en la entidad Customer_Accou, y defina su mapeo de acuerdo a la fuente de este campo en el CRM (es decir, digitar el nombre del campo).

 

HT_VirtualizationRelatedEntities16_Systems

 

 

Nótese que esta parte es clave en la configuración, principalmente porque es importante que se defina explícitamente en Bizagi el mapeo para el atributo de la relación donde está la llave foránea (la entidad n de la relación 1-n). Este mapeo debe ser a la llave de la entidad Customer.

 

 

HT_VirtualizationRelatedEntities17_Systems

 

 

note_pin

Nótese que el atributo Customer mantiene la referencia a la entidad relacionada en Bizagi, para propósitos internos, mientras que la columna de customerid contiene el mapeo exacto del id referente a la llave foránea en la fuente externa.

Esto significa que sin importar si la Virtualización se configuró por medio del asistente o no (también manualmente desde el módulo de sistema), el mapeo al final debe contener: el atributo de la relación de Bizagi en la entidad virtual que esté mapeado al atributo de la fuente.

 

Hemos ahora incluido el mapeo adicional para la relación en Bizagi, para definir qué columna determina la relación en la base de datos del CRM.

 

 

Definir la forma para mostrar información de registros múltiples

Por último vamos a incluir en nuestra Forma de Solicitud de Registro, los ámbitos de nuestras entidades para: permitir la selección de un cliente y mostrar las cuentas asociadas para ese cliente (que muestra la información de varios registros de la relación).

 

Para ello, vaya al Asistente de Procesos y seleccione el tercer paso (Definir formas):

 

HT_VirtualizationRelatedEntities21_Forms

 

 

Incluya el atributo Customer de su entidad de proceso en la forma de Solicitud de Registro.

De forma predeterminada, esto se representa como un control Search.

 

 

HT_VirtualizationRelatedEntities22_Forms

 

 

Para este control, establezca sus propiedades de búsqueda tales como: el atributo para mostrar, y la forma que se abre (defina una nueva seleccionando Nueva forma):

 

 
HT_VirtualizationRelatedEntities23_Forms

 

 

Para la nueva forma del control asegúrese de arrastrar y soltar algunos de los atributos de los clientes (como criterios de búsqueda), y también asegurarse de darle un nombre a la Forma.

Observe en este ejemplo, hemos incluido el nombre del cliente y los atributos de correo electrónico, y hemos llamado a nuestra forma MyCustomerSearchForm.

 

HT_VirtualizationRelatedEntities24_Forms

 

Guarde esta forma.

Incluya la colección Cuentas (Accounts) en la forma y edite las columnas que se muestran en la tabla:

 

 

HT_VirtualizationRelatedEntities25_Forms

 

 

Se incluyen los atributos Customer_Account: Número de cuenta, Fecha de creación y el Balance.

 

 

HT_VirtualizationRelatedEntities26_Forms

 

Guarde la forma.

De vuelta a la forma principal, asegúrese de que la tabla Cuentas se establece como de sólo lectura.

Esto significa, asegurando que la propiedad Edit esté en flaso y no se permita añadir, editar o eliminar registros.

 

En este punto, hemos terminado de configurar la virtualización para las entidades relacionadas.

Nuestras tablas externas de bases de datos CRM se usan de manera transparente en nuestro proceso de Solicitud de productos!

 

Ejecución

Ahora ejecute su proceso.

 

ComponentLibrary_Run

 

 

En el portal de trabajo puede crear un caso nuevo del proceso Product Request. En la primera actividad (Register Request) realice una búsqueda de un cliente existente:

 

HT_VirtualizationRelatedEntities24_Execution

 

 

Al seleccionarlo, sus cuentas asociadas se presentarán automáticamente en la tabla:

 

HT_VirtualizationRelatedEntities25_Execution

 

 

 

 

Consideraciones adicionales

Cuando se utiliza la virtualización para las entidades relacionadas, hay escenarios más sofisticados que son soportados por Bizagi.

Por ejemplo: tener llaves primarias compuestas en el origen, tener Entidades Paramétricas replicadas relacionadas con Entidades maestras virtualizadas, etc

 

Compound primary keys

Bizagi soporta la virtualización de entidades que tengan llaves primarias compuestas (es decir que en el repositorio existente, la tabla tenga más de una columna componiendo su llave primaria).

 

Para configurar este tipo de escenarios, en Bizagi solamente se requiere asegurar que los atributos mapeados en la virtualización de la llave primaria, estén incluidos en su totalidad como llave de negocio de la entidad virtual (business key).

 

Para revisar o modificar (incluir atributos) la definición de los atributos que hacen parte de la llave primaria de la fuente, haga clic derecho sobre la entidad virtual y seleccione sus propiedades (en el Módulo de Sistemas).

 

En nuestro ejemplo, únicamente el atributo número de cuenta (accountnumber) se definió como llave de negocio para la entidad Customer_Accou (sin llave compuesta). Usted puede editar o examinar este ajuste ubicando de la entidad específica en el módulo de Sistemas, y haciendo clic en sus Propiedades:

 

HT_VirtualizationRelatedEntities18_Compound

 

 

 

Para incluir más de un atributo como llave principal, seleccione los atributos adicionales que conforman la definición businessKey.

 

note_pin

De forma predeterminada, Bizagi leerá la definición de llave principal de la fuente (cuando se utiliza el Asistente de virtualización) e incluirá los atributos que componen la llave primaria compuesta.

 

Usando como ejemplo una tabla Customer_Products (productos de un cliente) de una fuente de datos externa, podríamos encontrar que su llave primaria es definida por tanto el atributo ProductId y el CustomerId:

 

HT_VirtualizationRelatedEntities19_Compound

 

 

 

Esto significa que en Bizagi, necesitaremos asegurar que para esa entidad, la llave de negocio (businessKey) incluya estos 2 atributos:

 

 

HT_VirtualizationRelatedEntities20_Compound

 

 

note_pin

Si se virtualiza a su vez una entidad adicional que referencia a esta llave compuesta (una relación foránea a la entidad Customer_Products), entonces se requiere mapear en el atributo de la relación, los N atributos que compongan la llave primaria compuesta.

Esto se hace con separación de coma y en el mismo orden exacto en que se definen en la fuente, de la manera: "atributo1, atributo2".

En el ejemplo anterior, esto significa mapear contra "customerid, productid" si la llave está definida en ese orden.

 

Compound_order