Llaves de Negocio Predefinidas
De
<keywords content="keywords">
llaves, negocio, llaves de negocio, código, codigo, codigos, códigos, unique, constraint, business key, businessKey, unique constraint </keywords>
Contenido |
Usando llaves de negocio en Bizagi
Introducción
En invocaciones de la capa SOA de Bizagi (p.e. para crear casos, actualizar información en Bizagi, avanzar una actividad), a menudo es útil referenciar ciertos campos de entidades que sirven como una llave de negocio (para identificar de manera única los registros).
Las llaves de negocio en Bizagi se pueden utilizar de 2 maneras: con una predefinición en el modelo de datos desde el ambiente de Desarrollo, o con una referencia explícita (uso de "businessKey") al momento de enviar el XML al método de la capa SOA de Bizagi.
Predefinición de llaves de negocio
Con este enfoque, en una etapa de definición del modelo de datos y en el ambiente de Desarrollo, podemos predefinir para nuestras entidades cuál será el campo (o los campos) que serán llave de negocio (identificadores únicos para los registros).
De esta manera podemos construir XML más sencillos a la hora de invocar los métodos de la capa SOA (ya sea para actualizar o insertar datos). Adicionalmente este enforque nos permite utilizar llaves compuestas en entidades o incluso hacer consultas de entidades relacionadas con entidades que a su vez tienen sus propias llaves de negocio.
La predefinición de llaves de negocio es una buena práctica para el modelo de datos de Bizagi, dado que además permite que Bizagi ejecute de manera automática las validaciones de unicidad de registros para la integridad de la información.
Definición
Para explícitamente definir las llaves de negocio desde Bizagi Studio, vamos a la vista de módulos en el módulo de Entidades.
Una vez allí, ubicamos la entidad a la cual deseamos definirle su llave de negocio, hacemos clic derecho y seleccionamos Advanced properties.
En la ventana con el nombre "[Nombre de la entidad] propiedades avanzadas", que en nuestro caso específico se llama Clients Advanced Properties, pasamos a la pestaña Bussines Key en donde encontraremos una caja de chequeo la cual seleccionamos para habilitar la lista de atributos de la cual seleccionamos los atributos que serán Llaves de negocio.
En este ejemplo TypeOfID IdNumber estan seleccionadas.
Utilización
Al tener predefinidas las llaves de negocio de una entidad, cuando enviemos información a través de un XML a Bizagi, no hará falta incluir el atributo "businessKey" para indicar que Bizagi debe buscar un registro existente y no insertar uno nuevo.
Ejemplo
En el siguiente ejemplo, partimos de que hemos hecho la definición de las llaves de negocio en la entidad Cliente (que son TypeOfID y IdNumber), y vamos a actualizar los datos de un cliente en respuesta a una solicitud X hecha a un sistema externo.
Si el cliente no existe, entonces necesitamos que se cree el nuevo cliente con la información suministrada por el sistema externo.
Partimos desde las relaciones de la entidad de aplicación, hasta la entidad que deseamos actualizar. Este XML Bizagi lo lee y entiende automaticamente que deberá actualizar un Cliente cuyo TypeOfID es 01 y IdNumber es 11223344, si el registro existe lo actualiza, de otro modo lo creará como nuevo.
Es importante tener en cuenta que los datos de entidades relacionadas que han sido definidas como llaves de negocio deben existir como máximo una vez en dicha entidad u obtendremos un error.
En nuestro caso por ejemplo el atributo TypeOfID, relaciona a Cliente con IdentificationType, por lo que se da por entendido que el Codigo = 01 EXISTE en IdentificacionType.
Alternativas (uso de "businessKey")
Si no se predefinen las llaves de negocio, existe la alternativa de enviar dicha información y referencia en el XML de invocación, a través del atributo "businessKey".
Necesidad del uso de llaves de negocio
Las llaves de negocio en las entidades surgen de la necesidad de trabajar con llaves propias del negocio tales como códigos, números de serie, números de identificación (y no con las llaves surrogadas o 'ids' propios de Bizagi).
De esta manera suministramos más información a Bizagi de los datos que inicialmente maneja, dándole mayor control sobre la información de negocio.
Ejemplo
Si en el ejemplo que estamos trabajando tuviéramos que buscar nuestro cliente solo por IdNumber podríamos haber utilizado el siguiente XML:
Para los efectos deseados de actualización o inserción, la llave de negocio con su valor debe estar especificada en el atributo businessKey (para filtrar y encontrar el registro).
Debe ser especificado como nodo hijo del nodo Cliente en caso de inserción. De lo contrario en una búsqueda a futuro podría duplicarse el registro.
Para tener en cuenta (Relaciones Uno a Muchos)
Para predefinir llaves de negocio en una relación uno a uno es una situación muy común, sin embargo para las relaciones de uno a muchos, éste concepto no aplica propiamente.
Si un registro en una relación uno a muchos es necesitado, luego se recomienda usar llaves de negocio y especificar el atributo businessKey en el XML con el filtro deseado.
Por ejemplo, businessKey="IdNumber = '1223334444'".
Si en adición un filtro por tipo de identificación se requiere pero el Id es desconocido, Bizagi puede resolver la expresiónbusinessKey="IdNumber = '1223334444' y TypeOfID.Code = '01'".
Artículos Relacionados
- Mayor información sobre la Capa SOA de Bizagi.
- Vea un ejemplo e información del Campo buscador ventana mediante el cual se validan los registros nuevos de acuerdo a la predefinición de las llaves de negocio.
<comments />