Actualizar informacion basada en XML en entidades

<< Clic para mostrar Tabla de Contenidos >>

Navegación:  Bizagi Studio > Asistente de Procesos > Reglas de Negocio > Ejemplos de reglas de negocio > XML Helper para interfaces >

Actualizar informacion basada en XML en entidades

Introducción

XML Helper hace parte del API de reglas de negocio de Bizagi, provee acceso a la información de sus procesos cuando trabaja con información estructurada XML, como se describe en XML Helper.

Esta sección muestra un ejemplo de cómo usar uno de los métodos de XML Helper, el método saveEntityAsString, que está orientado a consultar información de entidades sin tener que navegar por medio de XPath.

Esto implica que el uso de este método es óptimo cuando se trabaja con entidades paramétricas.

 

Ejemplo

En el siguiente proceso de ejemplo, se asume que tenemos una entidad paramétrica llamada Vendor.

Esta entidad tiene los siguientes registros y queremos agregar uno nuevo y actualizar uno existente.

 

xmlhelper_ex1_vendors

 

Esto quiere decir que adicionaremos a Samsung y actualizaremos el nombre de Cisco por Cisco Systems.

 

xmlhelper_ex3_vendors2

 

Para lograrlo, debemos ver la definición de la estructura XML de la entidad esperada, utilizando las definiciones de esquemas creadas en Bizagi Studio:

 

xmlhelper_ex1_schema

 

Para más información sobre predefinir esquemas, refiérase a Esquemas XML del modelo de datos.

 

note_pin

Se puede depender de la definición del esquema XSD para generar un XML con la información y asegurándose de que sea compatible utilizando servicios gratuitos en línea tal como http://xsd2xml.com/.

Sin embargo, hay que considerar que esto es sólo una porción de lo que se debe enviar dentro de la cadena de texto con la estructura XML.

 

xmlhelper_ex3_xml

 

Envuelva la porción del contenido XML de Vendor dentro del nodo <BizAgiWSParam> conteniendo al subelemento <Entities>:

<?xml version="1.0" encoding="utf-8"?><BizAgiWSParam><Entities>...</Entities></BizAgiWSParam>

 

Esto nos ayudará a segurar que se esté enviando una entrada compatible con la usada por el método web SOAP saveEntityAsString (Cuando se utiliza el API de web services de Bizagi).

Para mayor información sobre esta estructura y opciones de filtrado, refiérase a Guardar Entidades.

 

Dado que estaremos actualizando un registro en esta entidad, debemos asegurarnos que las definiciones de llaves de negocio están establecidas para esa entidad.

En otras palabras, habiendo definido en Bizagi Studio cuál o cuáles atributos hacen parte de una restricción única para cada uno de los registros.

En este ejemplo, los registros de la tabla Vendor son identificados únicamente por el atributo Code:

 

xmlhelper_ex3_bizkeys

 

Para que estos registros sean insertados y actualizados en la manera que se muestra en esta sección, recomendamos que se desmarque la casilla en la configuración de Bizagi Studio, que obliga el uso de llaves de negocio como cláusula en XMLs:

 

xmlhelper_bizkeyEnforce

 

Ahora, para poder guardar la información compatible XML de cierta entidad, se puede utilizar el método CEntityXmlHelper.saveEntityAsString.

Esto se puede hacer dentro de una expresión en una regla de negocio Bizagi:

 

xmlhelper_ex3_rule

 

El código de la expresión mostrada en la imagen es el siguiente:

var vendor_input = '<?xml version="1.0" encoding="utf-8"?><BizAgiWSParam><Entities><Vendor><Code>V006</Code>'
+ '<Name>Samsung</Name><VendorType>2</VendorType></Vendor><Vendor><Code>V005</Code><Name>Cisco Systems</Name>'
+ '</Vendor></Entities></BizAgiWSParam>';
var vendor_result = CEntityXmlHelper.saveEntityAsString(vendor_input);
CHelper.trace("my_trace",vendor_result);

 

Note que al ya existir un Vendor con Code V005 y que el atributo Code es la llave de negocio definida para la entidad, este registro será actualizado (sólo lo que se ha enviado, que es el atributo Name).

 

El método CEntityXmlHelper.getEntitiesAsString retornará una cadena de texto con estructura XML con la información de los IDs de los registros creados o actualizados, como se presenta a continuación para nuestro ejemplo:

 

xmlhelper_ex3_output

 

La respuesta mostrada en la imagen es esta:

<?xml version="1.0" encoding="utf-8"?>

<Entities>

 <Vendor>51</Vendor>

 <Vendor>52</Vendor>

</Entities>

 

note_pin

En el ejemplo, se hace uso de CHelper.trace de manera opcional, dado que nos ayuda a imprimir trazas personalizadas de los valores y las respuestas en la ejecución de las reglas.

Para más información sobre la opción de trazas, refiérase a Validar mi regla de negocio.