Metodos Utilitarios para Usar XML en Reglas de Negocio
De
<keywords content="keywords"> consultar, entidad, scope, XML, utilitarios, insertar, actualizar, esquema </keywords>
Aplica para las ediciones XPRESS y ENTERPRISE .NET |
Métodos de ayuda para usar XML en Reglas de Negocio
Introducción
A menudo es necesario trabajar con información de Bizagi en formato XML, tal vez para invocar una interface, generar un reporte o grabar datos de un XML a Bizagi.
Para hacer este código explícito se debe usar una regla de negocio. Bizagi provee en las reglas un conjunto de funciones de una clase ayudante para realizar este tipo de tareas de manera más ágil.
Los métodos pueden llamarse desde reglas, ofreciendo la funcionalidad deseada, usando la clase CEntityXmlHelper que contiene métodos para retornar XML (XmlDocument) o cadenas de caracteres (String).
Información inicial
Generalmente estos métodos reciben instancias de entidad como parámetros, entonces antes de emplear cualquier método, debe crearse la instancia de un objeto CEntity como se muestra a continuación:
var entity = CEntityManager.GetEntity("EntityName", id);
Para este uso y acercamiento, es también frecuente utilizar los esquemas de XML generados de las entidades Bizagi.
Métodos para Consultar la información de una Entidad o el Scope (si el proceso soporta scopes)
Consultando Entidades
entityToXml (Entidad CEntity)
Para obtener los valores de un registro específico que pertenece a una entidad en un objeto XmlDocument
entityToXml (Entidad CEntity, bool bIncludeNull)
Para obtener el XmlDocument de la entidad recibido como parámetro; si se especifica, éste incluye valores nulos (NULL) en el resultado.
entityToXml (CEntity entity, string sSchemaPath)
Para obtener el XmlDocument de la entidad recibida como parámetro con la estructura del esquema especificado. El segundo parámetro es el camino del esquema deseado (.xsd); este esquema define qué información será incluida o excluida de la respuesta XML.
entityToStringXml (CEntity entity, string SchemaContent)
Para obtener información de un registro que pertenece a una entidad, en una cadena. Sus parámetros son un objeto CEntity y una cadena con el esquema que define los datos requeridos como la respuesta.
entityToStringXmlwithPath (entidad CEntity, cadena sSchemaPath)
Para obtener la información de un registro que pertenece a una entidad, en una cadena. Sus parámetros son un objeto CEntity y una cadena con el camino de un documento XSD que define los datos requeridos como respuesta.
getEntities (XmlDocument xEntitiesInfo)
Este método se usa para obtener la información de una entidad como un documento XML (si retorna XmlDocument). En el parámetro XmlDocument la información de la entidad que será consultada es especificada, definiendo posibles filtros (este XML es similar al recibido el método getEntities de Bizagi en EntityManagerSOA).
getEntities (XmlDocument xEntitiesInfo, XmlDocument xSchema)
Este método se usa para obtener información de una entidad como un documento XML (si retorna XmlDocument). En el documento XML, éste recibe como primer parámetro la información de la entidad que será consultada, definiendo posible filtros (este
Este método es usado para obtener la información de una entidad como un documento XML (retorna XmlDocument). En el documento XML éste recibe como primer parámetro la información de la entidad que será consultada, definiendo posible filtros (este XML es similar al recibido el método getEntities de Bizagi en EntityManagerSOA). El segundo parámetro es un esquema que ayuda a ajustar la respuesta en un documento XML y de este modo simplifica la respuesta sólo a los datos deseados.
getEntitiesAsString (string sXmlEntitiesInfo, string sXmlSchema)
Éste tiene la misma función que el método anterior, pero retorna un XML en formato de cadena y los parámetros que recibe también son cadenas.
getEntitiesFromPathAsString (string sPathXMLEntities, string sPathXMLSchema)
La diferencia con el método anterior es que, en vez de recibir los contenidos del XML, éste recibe los caminos de los archivos que contienen el XML que especifica los filtros sobre las entidades y el esquema de la respuesta, respectivamente. La respuesta es un XML en formato cadena.
Consultando scopes
entityToStringXmlWithScopes (CAPIWorkItem Me, string sSchemaContent, string sXSLContent)
Para obtener una cadena XML con los datos cargados en el scope (no en las entidades). El primer parámetro es el objeto Me, el segundo es el contenido de esquema que define los datos que serán extraídos. Se debe considerar que, cuando se trabaja con scopes de una regla sin una entidad definida, un esquema (XSD) tiene que ser construido partiendo del nodo raíz con el nombre de la entidad de contexto o el PV, e ir bajando en las relaciones hasta alcanzar la entidad o entidades que se desean consultar. Sin embargo, esto no se requiere un XSD construido para el módulo Sistema-Interface de Bizagi Studio, porque el XPath se especifica dentro de la parametrización de interface, en el TaskEvent. El último parámetro es el contenido del XSL usado para transformar el resultado (basado en el XSD) y llegar al XML transformado. Si se requiere transformar la respuesta, el último parámetro puede ser nulo o una cadena vacía.
entityToStringXmlWithScopesByidCase (int idCase, string xsd, string xsl)
Como en el método anterior pero el primer parámetro es, en vez de Me, el idCase del caso del cual la información será obtenida. Es útil para consultar información en el scope desde un caso distinto al caso actual.
entityToStringXmlWithScopesXmlByidCase (int idCase, XmlDocument xsd, XmlDocument xsl)
Como en el método anterior pero el primer parámetro es, en vez de Me, el idCase del caso del cual la información será obtenida. Es útil para consultar información en el scope desde un caso distinto al caso actual.
Métodos para Insertar/(Actualizar Información en una Entidad o Scope (si el proceso soporta scopes)
Insertar/Actualizar en Entidades
fromXmlToEntity (string sEntityInfo)
Usando la información que recibe en el documento XML sEntityInfo, este método hace inserciones o actualizaciones en las entidades involucradas. El XML que recibe como parámetro está en formato de cadena y tiene la misma estructura que la presentada para el método saveEntity del servicio web EntityManagerSOA.asmx. La diferencia es que el elemento BizAgiWSParam no está presente. La respuesta es un CEntity de la entidad especificada en la raíz del XML introducido como parámetro. Habrán más métodos especializados introducidos, posteriormente, para insertar o actualizar datos en el scope.
fromXmlToEntityAsXml (XmlDocument xEntityInfo)
Lo mismo que el método anterior pero recibe un XmlDocument
Insertar/Actualizar en el Scope
fromXmlToEntityWithScopes (CAPIWorkItem Me, string sEntityInfo)
Actualiza información en el scope usando el XML dado como parámetro. El primer parámetro es el objeto Me. El segundo parámetro es el XML en formato de cadena. Los XML para insertar o actualizar estos casos tienen las mismas características de aquellos del método saveEntity. Sin embargo, cuando se trabaja con scopes, el XML debe ser construido partiendo de la entidad de contexto o el PV, o simplemente especificando en el nodo Entidades (Entities) todos los elementos que la entidad de contexto tiene, y desde ahí ir bajando en todas las entidades que serán actualizadas. A continuación se muestran algunos ejemplos:
XML con nombre de PV explícito
CreditRequestCC es el nombre de PV (o el nombre de la entidad de contexto si se está editando una grilla)
XML con nombre de PV implícito
Aquí el XML es similar, pero sin el nombre de PV. Para procesos que soportan scope, éste es el mismo así esté presente o no. Lo que es importante es la jerarquía de relaciones en el XML.
fromXmlToEntityWithScopesAsXml (CAPIWorkItem Me, XmlDocument xml)
Como el anterior pero el segundo parámetro es un objeto XmlDocument.
fromXmlToEntityWithScopes (CAPIWorkItem Me, string sEntityInfo, bool bIngnoreKeyOrBizKeyXmlAttribs)
Tiene la misma función como la descrita anteriormente, pero recibe un tercer parámetro booleano. El primero es Me, el segundo es el XML en formato de cadena y el tercer parámetro, cuando es Verdadero, ignora la llave o los atributos businessKey definidos en el XML y siempre inserta. Esto es útil cuando un caso diferente es obtenido (con el método entityToStringXmlWithScopes) y será insertado en el caso actual. Si las llaves y businessKeys no son ignoradas, entonces los datos del caso actual serán asociados al caso de donde la información fue extraída.
fromXmlToEntityWithScopesAsXml (CAPIWorkItem Me, XmlDocument xml, bool bIgnoreKeyOrBizKeyXmlAttribs)
Como antes pero el segundo parámetro recibe un XmlDocument en vez de recibir un XML con formato de cadena.
Métodos para Obtener el Esquema de una Entidad
getEntitySchema (string sEntityName)
Para obtener el esquema, como un XmlDocument, de la entidad cuyo nombre se recibe como parámetro. El esquema es generado usando los metadatos de la entidad.
getEntitySchemaAsEntity (CEntity entity)
Como el anterior pero en vez de recibi el nombre de la entidad, éste recibe un objeto CEntity de la entidad de la que se obtiene el esquema.
getEntitySchema (string sEntityName, string sSchemaName)
Obtiene un esquema de la entidad en formato XmlDocument. El primer parámetro es el nombre de la entidad. En Bizagi Studio, las entidades son también esquemas de repositorios por lo que el segundo parámetro indica el nombre del esquema deseado.
getEntitySchemaAsEntity (CEntity entity, string sSchemaName)
Como el anterior pero el primer parámetro es un objeto CEntity de la entidad de la cual el esquema será obtenido.
getEntitySchema (string sEntityName, bool bIncludeRelatedEntities, bool bIncludeFacts)
Para obtener, como un XmlDocument, el esquema de la entidad cuyo nombre es introducido como primer parámetro de este método. El esquema es generado usando los metadatos de la entidad; sin embargo, a diferencia del método getEntitySchema descrito inicialmente, el cual sólo recibe el nombre de la entidad, éste recibe dos parámetros booleanos adicionales. El primero para especificar si relaciones uno a uno son incluidas y el otro para especificar si relaciones uno a muchos y muchos a muchos deberían ser incluidas.
getEntitySchemaAsEntity (CEntity entity, bool bIncludeRelatedEntities, bool bIncludeFacts)
Lo mismo que el anterior pero el primer parámetro es un objeto CEntity.
Métodos para Transformar Documentos XML
transformXml (XmlDocument xml, XmlDocument xsl)
Para habilitar transformaciones usando XSLT 1.1, el primer parámetro es el documento XML que será transformado y el documento XSL. Retorna un documento XmlDocument transformado como resultado de aplicar el XSL.
transformXmlAsString (string xml, string xsl)
Tiene la misma función descrita arriba pero los parámetros XML y XSL son recibidos en formato de cadenas, y el XML resultante está también en formato de cadena.
transformXmlUsingPath (string sPathXml, string sPathXsl)
Similar a los métodos descritos antes. La diferencia está en que este método recibe el camino a los archivos XML y XSL en una cadena. El XML transformado es retornado como una cadena.
transformXmlUsingContent (string sXmlContent, string sPathXsl)
Este método también permite realizar transformaciones de XML. El primer parámetro recibido es el contenido del documento XML que será transformado y el segundo es el camino al archivo XSL usado para hacer la transformación. El nuevo resultado XML es retornado como una cadena.
Artículos Relacionados
- Creación de Esquemas Xml de entidades.
<comments />