You are on page 1of 17

Instituto Superior Politcnico Jos Antonio Echeverra

Facultad de Ingeniera Informtica










Mejoras a la capa SOA de BizAgi









Informe de Prctica Profesional de 3er Ao, Ingeniera Informtica








Autor(es): Vctor Martnez Fundora

Alejandro Martnez OFarril





Tutor(es): Juan Carlos Grass
CITI Grupo BPM
jgrass@ceis.cujae.edu.cu





Ciudad de La Habana, Cuba
Julio, 2011




Resumen

El tema de nuestro trabajo es mejoras que se le realizaron a la capa de SOA de BizAgi
suite. Estas mejoras consistieron en la confeccin de funcionalidades adicionales en la capa
SOA de BizAgi especficas para distintos procesos de negocio.

La necesidad de nuestro trabajo est basada en que ciertos procesos de negocio
modelados en BizAgi junto con otras aplicaciones creadas en nuestro grupo de trabajo
necesitan usar ciertas funcionalidades que la capa SOA de BizAgi no ofreca por s sola, de
ah la necesidad de implementar mediante nuevos servicios las nuevas funcionalidades
usando las viejas que ya ofreca la capa.

En concreto los objetivos nuestro objetivo es usar las mejoras implementadas sobre esta
capa para dar solucin a requerimientos de procesos de negocio implementados en BizAgi
mediante los servicios web.

Los resultados ms relevantes fueron:

Obtencin de documentacin de la capa SOA que brinda la Suite BPM BizAgi.
Ampliacin de la SOA que brinda la Suite BPM BizAgi, permitiendo su integracin con otros
sistemas como el portal de la organizacin y otros procesos de negocio modelados en
nuestro grupo de trabajo.










Introduccin

Este trabajo se realiza en una institucin llamada Centro de Investigacin de
Tecnologas Integradas ( CITI ), en el grupo de investigacin de BPM (Business
Process Management), se necesitaba mejorar la Capa SOA de BizAgi para una
mejor integracin de los servicios que esta ofrece con las necesidades de nuestro
grupo de trabajo.

El problema a resolver estaba dado puesto que BizAgi no presenta una solucin para
darle respuesta a la solicitud de un usuario de conocer distintos datos almacenados
en una Entidad de BizAgi, adems poderle mostrar a un usuario desde otra
aplicacin los procesos de BizAgi que este puede iniciar.

Nuestro trabajo ser utilizado inmediatamente se terminen las aplicaciones, y los
procesos de BizAgi que van a consumir nuestro servicios. Con la elaboracin de
nuestros servicios se le da cumplimiento a la necesidad de tener implementado los
mtodos y funciones que la dan soporte a las aplicaciones, y procesos de BizAgi en
los que se trabaja actualmente en nuestro grupo.
Los antecedentes de nuestro trabajo son el trabajo con la tecnologa de .NET
Framework, el uso de la Capa SOA de BizAgi antes de las mejoras. La tecnologa de
los servicios web mediante WCF(Windows Comunication Fundation).

Se revisaron varias bibliografas a las cuales se les hace referencia a continuacin:

Professional LINQ - Scott Klein

[KATRIB, 2008] Katrib, Miguel; del Valle, Mario; Paneque, Leonardo;
Fresneda, Romn; Fuentes, Thaizel; Sierra, Iskander; Hernndez, Yamil;


Som, Guillermo. Visual Studio 2008. Desafa todos los retos. Capitn San
Luis, Ciudad de La Habana, 2008.

www.wiki.BizAgi.com

Los aportes prcticos de este trabajo consisten en que gracias al trabajo realizado se
ha logrado obtener un conocimiento considerable sobre las tecnologas con las que
se realiz nuestro trabajo como son el lenguaje C# y el trabajo con este en el .NET
Framework 4.0 nos posibilito el aprendizaje del lenguaje de consultas LINQ muy
prctico para consultas de todo tipo, se obtuvo tambin un conocimiento de la
tecnologa de ficheros XML se afianzo el conocimiento sobre la Suite de BizAgi y
sobre todo de obtuvieron nuevos conocimientos sobre el trabajo con SOA

Nuestro objeto de estudio principal es la Capa de SOA de BizAgi. Afianzado con el
objetivo general de analizar y mejorar la capa SOA de BizAgi, complementado con
los objetivos especficos Crear un servicio web que integrado con el servicio
EntityManagerSoa y con el servicio WorkflowEngineSoa que posee la capa SOA de
BizAgi le brinde soporte a un determinado proceso de BizAgi modelado en nuestro
grupo de trabajo y al portal del CITI.

Las tareas principales desarrolladas para cumplir los objetivos fue analizar los
mtodos que poseen los servicios EntityManagerSoa y WorkFlowEngineSoa para
determinar su factibilidad para darle solucin a la problemtica planteada.

Se estudi la factibilidad de los servicios web a la hora de integrase con los procesos
de negocio modelados en BizAgi as como de su posibilidad de integracin con el
portal del CITI.



Estudio de la tecnologa de consultas LINQ para ser usada con el fin de acceder a la
informacin almacenada en distintas tecnologas (Bases de Datos y Archivos XML)

Para la implementacin de la nueva funcionalidad del mtodo asociado al servicio
WorkflowEngineSoa se tuvo que hacer un estudio profundo de la base de datos en la
que se apoya la suite de BizAgi para reconocer las relaciones existentes en esta y
poder usarlas para nuestra solucin.

La tarea final para cumplir los objetivos fue la de implementar la solucin propuesta.

En cuanto al estudio de herramientas, lenguajes y tecnologas a utilizar en la
actualidad existen numerosas opciones para desarrollar servicios web, y para la
integracin con bases de datos as como para realizar la ingeniera de software.

Nosotros nos decantamos por el uso del .NET Framework y su IDE Microsoft Visual
Estudio 2010 para el desarrollo y montaje de los servicios web porque son los
utilizados en nuestro grupo de trabajo, adems para explorar distintas tecnologas
de trabajo.

Para el manejo de las bases de datos se us SQL Server 2005 porque es el gestor
de base de datos que trae BizAgi y ya viene integrado a esta suite de trabajo.
Para la integracin con las bases de datos y recopilacin de datos mediante las
consultas se us la tecnologa de consultas LINQ debido a su facilidad de uso e
integracin con cualquier tipo de dato. Esta tecnologa se us tambin para el
manejo de los ficheros XML con los que se trabaja.






Captulo 1
Capa SOA de BizAgi

Servicio EntityManagerSoa:


Funcin Descripcin
getEntitySchema Este mtodo del servicio solicita por
parmetro el nombre de la entidad para
obtener el esquema de esta en XML junto
con las entidades relacionadas y las tuplas
que posea esta entidad
getEntitySchemaStr Este mtodo retorna los mismos datos que
el anterior pero en este caso como una
cadena(string)
getEntities Este mtodo es de los ms importantes del
servicio pues retorna un documento XML
con todas las tuplas que cumplan lo
especificado en un documento XML que
este mtodo debe recibir por parmetro
este documento debe poseer una
estructura determinada.
getEntityUsingShema Este mtodo debe recibir como parmetro
un documento XML con la informacin
solicitada a la entidad adems de un
esquema para obtener el XML de salida en
el formato proporcionado por el esquema.
saveEntity Este mtodo se puede usar de dos formas
para insertar datos en una entidad o para
actualizar datos presentes los parmetros
son un XML de entrada con formato
predeterminado para la insercin solo irn
en este XML los datos de un nuevo registro
que se deseen insertar, para actualizar un
registro el XML debe contener el id del
registro a actualizar as como los nuevos
datos este mtodo retorna un XML simple
con el id de la entidad modificada.
GetListOfParameterFromDate

Este es uno de los mtodos implementados
por nosotros este mtodo usa la funcin de
getEntities para obtener los registros de la
entidad especificada en los parmetros de
entrada y de esta seleccionar una lista de
ocurrencias en la entidad de un parmetro


especificado por el usuario estos datos
sern obtenidos en un rango de fecha
especificado tambin por el usuario. En
este mtodo se hace la recopilacin de
datos mediante consultas LINQ.
EspecifiedParameterDataList

Este mtodo implementado por nosotros
tambin proporciona una lista de objetos
(Dynamic Data) construidos a partir de
datos solicitados por el usuario que son la
entidad de la que necesita obtener los
datos una lista de parmetros(deben ser
nombres exactos de las propiedades de la
entidad en la base de datos) de la cual
posee una estructura predeterminada que
es la siguiente dos parmetros que son
datos de la entidad que usted desea un
tercero que es el nombre del campo que se
asocie con la fecha en la BD as como un
rango de fecha si se desea obtener
registros de un solo da poner la misma
fecha. Se usa tambin el mtodo getEntities
para obtener los datos sin procesar de la
entidad. En este mtodo se hace la
recopilacin de datos mediante consultas
LINQ.


Servicio WorkflowEngineSoa:

Funcin Descripcin
getProcesByUser Esta es la funcin implementada por
nosotros para adaptar lo que ofrece este
servicio a nuestras necesidades puesto que
este servicio no ofreca ninguna solucin a
la problemtica planteada con las funciones
que este trae por defecto. Esta
funcionalidad se dise para que un
usuario del portal del CITI solo pueda ver al
entrar los procesos de BizAgi que l pueda
usar y no informacin innecesaria, de
procesos a los que l no puede acceder.
Solo se debe pasar por parmetro el
nombre del usuario y se recibe la lista de
procesos a los que l tiene acceso
createCase Este mtodo permite la creacin de casos


para un caso determinado. Adems,
estableciendo los valores para los atributos
de la entidad tambin es posible con este
mtodo para el que los valores requeridos
deben ser puestos en el documento XML
que recibe el mtodo. El nodo <Case> es
repetido en el documento XML tantas veces
como sea requerido cuando hay muchos
casos para crear. El mtodo recibe y
retorna un documento XML.
createCaseAsString Este mtodo funciona de modo similar al
mtodo CreateCases; sin embargo, este
mtodo recibe el documento XML como
una cadena en vez de recibir el formato de
documento XML. De manera similar, el
mtodo retorna una cadena que contiene el
documento XML con la informacin del
nuevo caso referido.
performActivity Este mtodo recibe como parmetro un
documento XML con la informacin
requerida por el servicio Web para avanzar
en la actividad especificada; la actividad es
avanzada de acuerdo al valor especificado
para las entidades involucradas. Este
mtodo retorna un documento XML con la
informacin de las actividades donde el
caso se encuentre luego de avanzar en la
actividad.













Captulo 2.
Extensin de la capa SOA de BizAgi

Actores del sistema
Nombre del actor Descripcin
Sistema
Consumidor del
Servicio
Este ser el sistema que consuma el servicio
Capa SOA de
BizAgi(Sistema
Externo)
Este sistema brinda soporte al caso de uso Recoger
Informacin de la Entidad

Diagrama de Casos de Uso del Sistema.




Descripcin resumida de los casos de uso.


Nombre del caso
de uso
Obtener Lista de Parmetro dado Fecha
Actores Sistema Consumidor del Servicio.
Resumen Este caso de uso se inicia cuando el consumidor de


servicio incluye en su programa una referencia a la
funcin del servicio
EspecifiedParameterDataList internamente este gestiona
los datos y termina cuando el programa consumidor
recibe la respuesta deseada, donde l se le introduce una
serie de datos separados por coma donde van a
corresponder con los datos que se desean obtener
dndolos a conocer al recibir la respuesta del servicio.
Las excepciones que pueden ocurrir son que alguno de
los datos solicitados no exista o que se halla especificado
mal alguno de los parmetros de entrada de la funcin.
Posee una relacin con el caso de uso Recoger
Informacin de la Entidad este mediante el uso de
funciones de la capa SOA de BizAgi le proporciona los
datos de la entidad a este caso de uso.
Precondiciones Se debe contar con una conexin estable al servidor de
bases de datos adems de asegurarse que la informacin
solicitada est disponible. El programa consumidor debe
haber incluido una referencia al servicio en su cdigo de
ejecucin.
Pos condiciones El programa consumidor debe haber recibido una
correcta respuesta dada la informacin solicitada al
servicio, pudindola analizar y procesar para su uso.
Requisitos
especiales
Para este proceso hay que tener en cuenta la seguridad
puesto que el uso de este servicio est restringido al
personal con las credenciales de seguridad apropiadas
para el uso del servidor central del grupo de trabajo.


Nombre del caso
de uso
Obtener Registro Especifico dado Fecha
Actores Sistema Consumidor del Servicio.
Resumen
Este caso de uso se inicia cuando el consumidor de
servicio incluye en su programa una referencia a la
funcin del servicio GetListOfParameterFromDate
internamente este gestiona los datos y termina cuando el
programa consumidor recibe la respuesta deseada. Las
excepciones que pueden ocurrir son que alguno de los
datos solicitados no exista o que se halla especificado
mal alguno de los parmetros de entrada de la funcin.
Posee una relacin con el caso de uso Recoger
Informacin de la Entidad este mediante el uso de
funciones de la capa SOA de BizAgi le proporciona los


datos de la entidad a este caso de uso.
Precondiciones Se debe contar con una conexin estable al servidor de
bases de datos adems de asegurarse que la informacin
solicitada est disponible. El programa consumidor debe
haber incluido una referencia al servicio en su cdigo de
ejecucin.
Pos condiciones El programa consumidor debe haber recibido una
correcta respuesta dada la informacin solicitada al
servicio, pudindola analizar y procesar para su uso.
Requisitos
especiales
Para este proceso hay que tener en cuenta la seguridad
puesto que el uso de este servicio est restringido al
personal con las credenciales de seguridad apropiadas
para el uso del servidor central del grupo de trabajo.


Nombre del caso
de uso
Recoger Informacin de la Entidad
Actores Sistema Consumidor del Servicio.
Resumen Este caso de uso se inicia cuando el consumidor de
servicio incluye en su programa una referencia a las
funciones del servicio GetListOfParameterFromDate y
EspecifiedParameterDataList, y a la vez haciendo uso de
la funcin getEntities, devolviendo las entidades de
acuerdo a las condiciones dispuestas a travs de las
consultas realizadas. Internamente este gestiona los
datos y termina cuando el programa consumidor recibe la
respuesta deseada. Las excepciones que pueden ocurrir
son que alguno de los datos solicitados no exista o que
se halla especificado mal alguno de los parmetros de
entrada de la funcin. Posee una relacin con el caso de
uso Recoger Informacin de la Entidad este mediante el
uso de funciones de la capa SOA de BizAgi le
proporciona los datos de la entidad a este caso de uso.
Precondiciones Se debe contar con una conexin estable al servidor de
bases de datos adems de asegurarse que la informacin
solicitada est disponible. El programa consumidor debe
haber incluido una referencia al servicio en su cdigo de
ejecucin.
Pos condiciones El programa consumidor debe haber recibido una
correcta respuesta dada la informacin solicitada al
servicio, pudindola analizar y procesar para su uso.
Requisitos Para este proceso hay que tener en cuenta la seguridad


especiales puesto que el uso de este servicio est restringido al
personal con las credenciales de seguridad apropiadas
para el uso del servidor central del grupo de trabajo.


Nombre del caso
de uso
Obtener los Procesos que puede iniciar un Usuario
Actores Sistema Consumidor del Servicio.
Resumen Este caso de uso se inicia cuando el consumidor de
servicio incluye en su programa una referencia a las
funciones del servicio getProcesByUser internamente
este gestiona los datos haciendo uso de las consultas
LINQ a SQL sobre la base de datos de BizAgi para
obtener los procesos de los que un usuario puede iniciar
casos en el portal y termina cuando el programa
consumidor recibe la respuesta deseada.
Precondiciones Se debe contar con una conexin estable al servidor de
bases de datos adems de asegurarse que la informacin
solicitada est disponible. El programa consumidor debe
haber incluido una referencia al servicio en su cdigo de
ejecucin.
Pos condiciones El programa consumidor debe haber recibido una
correcta respuesta dada la informacin solicitada al
servicio, pudindola analizar y procesar para su uso.
Requisitos
especiales
Para este proceso hay que tener en cuenta la seguridad
puesto que el uso de este servicio est restringido al
personal con las credenciales de seguridad apropiadas
para el uso del servidor central del grupo de trabajo.













Captulo 3.
Solucin Propuesta

Diagrama de Clases de la Interfaz de Servicio






















Diagrama de Clases de los Data Contract del Servicio

Diagrama de Clases de las Clases Auxiliares Utilizadas









Diseo XSLT y/o XML de envo y respuesta

En nuestro proyecto se utiliz la tecnologa XML para algunos mtodos a
continuacin exponemos el cdigo de los ficheros XML utilizados:

Este es un fichero XML es el parmetro que requiere la funcin getEntities para
recoger los datos de las entidades segn la fecha para luego ser procesados y dar la
respuesta.

<BizAgiWSParam>
<EntityData>
<EntityName>Inventar</EntityName>
<Filters>
<![CDATA[

Fecha >= '6/14/2011 12:00:00 AM' and idInventar <= 201]]>
</Filters>
</EntityData>
</BizAgiWSParam>

Este fichero XML a continuacin es un ejemplo de respuesta dada por el mtodo
getEntities utilizado por las funciones de nuestro servicio.

<?xml version="1.0" encoding="utf-8"?>
<BizAgiWSResponse xmlns="">
<Entities>
<Inventar key="1">
<IDEntidad>1.0000</IDEntidad>
<Cargo entityName="CargoCiti" key="2">
<AreaCiti>2</AreaCiti>
<Descripcion>Director Adjunto</Descripcion>
</Cargo>
<Descripcion>Puedo</Descripcion>
<Fecha>2011-06-15T03:00:00</Fecha>
<Salir>False</Salir>
<ListaCompetencias>
<Competencia key="1">
<Inventar>1</Inventar>
<Descripcion>activo</Descripcion>
<Activa>True</Activa>
<Nombre>entusiasmo</Nombre>


</Competencia>
<Competencia key="2">
<Inventar>1</Inventar>
<Descripcion>activo</Descripcion>
<Activa>True</Activa>
<Nombre>entusiasmo</Nombre>
</Competencia>
<Competencia key="3">
<Inventar>1</Inventar>
<Descripcion>ser rapido</Descripcion>
<Activa>True</Activa>
<Nombre>diestro</Nombre>
</Competencia>
<Competencia key="4">
<Inventar>1</Inventar>
<Descripcion>ser honesto en el trabajo</Descripcion>
<Activa>True</Activa>
<Nombre>honesto</Nombre>
</Competencia>
<Competencia key="5">
<Inventar>1</Inventar>
<Descripcion>primordial</Descripcion>
<Activa>True</Activa>
<Nombre>amable</Nombre>
</Competencia>
<Competencia key="6">
<Inventar>1</Inventar>
<Descripcion>primordiales</Descripcion>
<Activa>True</Activa>
<Nombre>amables</Nombre>
</Competencia>
</ListaCompetencias>
</Inventar>
</Entities>
</BizAgiWSResponse>

Este es un diagrama de tablas de la base de datos de BizAgi que se utilizan en la
funcin getProcesByUser gracias a la relacin que existe entre ellas se pudo
obtener luego de un minucioso estudio la forma de obtener los procesos que puede
iniciar cada usuario







Diagrama de despliegue

You might also like