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:
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.
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