Upload
truongtuyen
View
217
Download
1
Embed Size (px)
Citation preview
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
28/08/2017 GUÍA DEL WEB SERVICE
Manual de uso del servicio web de SIRH.
Esta foto de Autor desconocido está bajo licencia CC BY-SA
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Versión Fecha Elaboró Visto bueno
1.0 2017-08-27
Santiago Hernández [email protected]
Pilar Galindo [email protected]
Lisbeth Hernández [email protected]
Oficina de informática del IDEAM
Subdirección de hidrología
Subdirección de ecosistemas e información ambiental
Página 1
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
ContenidoINTRODUCCIÓN........................................................................................................3
¿Qué es el SIRH?..................................................................................................... 3Propósito del servicio WEB de SIRH........................................................................3Alcance de esta Guía................................................................................................ 3
RESPONSABILIDADES BÁSICAS DEL IDEAM Y DE LA AUTORIDAD AMBIENTAL PARA ADELANTAR LA INTEGRACIÓN..............................................................................5
MARCO TÉCNICO: ESTÁNDARES DE INTEROPERABILIDAD..............................6Arquitectura Orientada al Servicio (SOA)...............................................................6
Servicios WEB y el protocolo SOAP.........................................................................6
EXPOSICIÓN DEL WEB SERVICE............................................................................7Descripción del anexo técnico de SIRH....................................................................7
MÉTODOS DEL SERVICIO WEB DE SIRH...............................................................8Entidades de Negocio de SIRH................................................................................8Tipos de integración por servicio WEB...................................................................10
Integración mediante servicios web con modelo de base de datos proporcionado por el IDEAM.................................................................................................................. 10Integración mediante servicios web con modelo de base de datos proporcionado por la autoridad ambiental............................................................................................... 11
Preparación de la información para Servirla...........................................................12Sincronización de las listas de valores.................................................................12
PROTOCOLO PARA LA IMPLEMENTACIÓN DE LOS SERVICIOS WEB.............16Exponer fuentes hídricas y sus tramos...................................................................16Exponer Captaciones de usuarios del agua de tipo natural....................................17Exponer Captaciones de usuarios del agua de tipo juridico...................................17Exponer Vertimientos de usuarios del agua de tipo natural....................................18Exponer vertimientos de usuarios del agua de tipo juridico....................................18Exponer puntos de monitoreo.................................................................................18Exponer mediciones de calidad..............................................................................19
IMPLEMENTACIÓN DEL WEB SERVICE GETALLFUENTES................................20Generación de Código Fuente del servicio web usando Netbeans (Java).............20
Obtener Netbeans................................................................................................20Creación de un proyecto de servicio web.............................................................21Ejemplo de consumo de lista: implementación del método getAllFuentes...........29
IMPLEMENTACIÓN DEL SERVICIO WEB USANDO .NET (C#).............................49
VERIFICACIÓN DE LA INFORMACIÓN CONSUMIDA...........................................49
Página 2
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
INTRODUCCIÓN
¿QUÉ ES EL SIRH?El Sistema de Información del Recurso Hídrico - SIRH es el conjunto de elementos que integra y estandariza el acopio, registro, manejo y consulta de datos, bases de datos, estadísticas, sistemas, modelos, información documental y bibliográfica, reglamentos y protocolos que facilitan la gestión integral del recurso hídrico.
El SIRH, se estructura bajo cuatro ejes fundamentales oferta, demanda, calidad y gestión:
OFERTA: disponiendo información hidrometeorológica de la Red Básica Nacional de Monitoreo del IDEAM, de las Autoridades ambientales y la de otros actores que realicen mediciones periódicas sobre el comportamiento de los cuerpos de agua del país.
DEMANDA: con el uso de datos de las concesiones de aguas otorgadas por las Autoridades Ambientales del país, quienes son responsables de hacer seguimiento al aprovechamiento del recurso hídrico en su jurisdicción.
CALIDAD: las Autoridades Ambientales adelantan tareas de seguimiento a las condiciones de calidad de las fuentes hídricas; con el resultado de estas actividades se busca recopilar información que permita registrar las mediciones de los puntos de monitoreo (vertimientos y red de monitoreo hídrico), como seguimiento a la calidad de los componentes físicos, químicos y bacteriológicos del agua, para la toma de decisiones en el aprovechamiento del recurso por parte de los usuarios.
GESTIÓN: Con la implementación del Sistema de Información del Recurso Hídrico, se busca consolidar los documentos de planificación en ordenación del recurso hídrico, que permitan ser punto de partida para el establecimiento de las estrategias de seguimiento de la disponibilidad del recurso hídrico, bajo el contexto del comportamiento de calidad y cantidad de las corrientes de agua y sus áreas de influencia.
PROPÓSITO DEL SERVICIO WEB DE SIRHPermitir a las autoridades ambientales que reporten al IDEAM información sobre el recurso hídrico hacerlo directamente desde sus aplicaciones utilizando estándares de interoperabilidad conocidos y confiables.
ALCANCE DE ESTA GUÍAEsta guía está diseñada para que las entidades realicen la integración exponiendo un servicio web que pueda ser consumido desde IDEAM, independientemente de que la autoridad ambiental use o no el modelo de datos del IDEAM. Dado que se trata de una guía para la implementación de un servicio web, dejará a cargo de cada entidad los temas relacionados con
Página 3
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
bases de datos y demás temás necesarios para poder realizar la integración, pero que no se relacionan directament con el servicio web. Esta guía asume que la entidad ya tiene una base de datos donde está la información a servir y que tiene una aplicación que esté extrayendo dicha información para servirla.
El IDEAM dispone esta guía dirigida a personal técnico informático que se encargará el desarrollo de software para la integración del SIRH con el sistema institucional de cada corporación.
IMPORTANTE: antes de de leer este documento verifique que cuenta con el documento “Uso de componentes de integración de SIRH.doc”
Es importante anotar que el SIRH ofrece 5 mecanismos de integración, pero esta guía solo abarca aquellos en en los que la autoridad ambiental expone sus datos para que sean consumidos por el IDEAM.
Página 4
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
RESPONSABILIDADES BÁSICAS DEL IDEAM Y DE LA AUTORIDAD AMBIENTAL PARA ADELANTAR LA INTEGRACIÓN
Es importante que tanto las corporaciones, entidades y autoridades ambientales realicen ciertas actividades administrativas y protocolarias para poder adelantar el proceso de integración informática con el IDEAM. De igual manera, el IDEAM es conciente de que debe desempeñar su rol de liderazgo para lograr este objetivo.
A continuación se enumeran las tareas más importantes para cada una de las partes que describen sus respectivos roles en el proceso.
Autoridad ambiental:
1. Manifestará al IDEAM su interés para iniciar el proceso de pruebas, indicando oportunamente su plan de trabajo y recursos asignados.
2. Preparará su información de acuerdo con los atributos mínimos requeridos por el sistema y las reglas de negocio.
3. Proveerá retroalimentación al IDEAM para ayudar a mejorar el servicio.
IDEAM:
1. Dispondrá un ambiente de pruebas y otro de producción en donde se expondrá el servicio web, de acuerdo con lo contemplado en la guía.
2. Anexará un plan de pruebas fijo o estándar para verificar el proceso de transmisión de información.
3. El acompañamiento del IDEAM consistirá en:a. En caso de algún error de consumo, ayudar a indentificar el punto de excepción,
mediante la revisión del log del aplicativo en el servidorb. Disponer el acceso al log del aplicativo mediante un usuario de consulta a nivel
de intranetc. Disponer el acceso a la base de datos del ambiente de pruebas, con un usuario
de consulta
Página 5
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
MARCO TÉCNICO: ESTÁNDARES DE INTEROPERABILIDAD
Arquitectura Orientada al Servicio (SOA)Para lograr que diferentes sistemas se comuniquen con el SIRH, deben crearse componentes que cooperen mediante una implementación orientada a los servicios, y dichos servicios deben brindarse a través de interfaces de alto nivel que estén definidas sobre protocolos estandarizados.
El SIRH ha sido diseñado con una Arquitectura Orientada al Servicio (SOA):
Desacoplando los diferentes niveles lógicos, Implementando y estableciendo en cada interfaz externa especificaciones como un
modelo para el acceso a datos y métodos relacionados. Usando las interfaces que sirven tanto para el acceso interactivo via web como el
programático desde aplicaciones externas. Desde un punto de vista técnico, se eligió utilizar la tecnología SOAP de servicios web
para facilitar la implementación y su consumo. Para ello, existen servicios de registro de datos, por cada uno de los formularios web disponibles en la herramienta:
o Fuentes hídricaso Usuarios del agua que tienen concesiones de aguao Usuarios del agua que tienen permisos de vertimientoso Puntos de monitoreo de calidad
SERVICIOS WEB Y EL PROTOCOLO SOAPUn servicio web es una interface que describe una colección de métodos, disponibles a través de la red y utilizando mensajes escritos en XML. Gracias a los servicios web, una aplicación le permite a otras aplicaciones que interactúen con su métodos.
SOAP es un protocolo estándar, basado en XML, y sirve para acceder un servicio web.
Las especificaciones de SOAP siguen los estándares de W3C.
La solución via servicios web ofrece importantes ventajas arquitecturales:
Permite reducir la dependencia entre las aplicaciones del cliente y del servidor (“acoplamiento débil”).
Brinda un sistema de interoperabilidad independiente de la plataforma y las tecnologías. Permite la interoperabilidad a través de la red, ya que está basado en el protocolo SOAP
que usualmente usa HTTP como protocolo básico (el cual es permitido en todo tipo de cortafuegos).
Se basa en descriptores escritos en XML (WSDL).
Página 6
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
EXPOSICIÓN DEL WEB SERVICEA continuación se presenta el Gráfico del proceso de consumo del WEB Service, en el cual se ilustra el consumo del servicio web por parte del IDEAM:
DESCRIPCIÓN DEL ANEXO TÉCNICO DE SIRHEl IDEAM ha creado la documentación de especificaciones técnicas del servicio web de SIRH para que sirva como herramienta de referencia en el momento de implementar aplicaciones que utilicen los métodos de SIRH para administrar y reportar información.
El documento indica que una Autoridad ambiental puede integrar su información e diferentes formas, sin embargo en esta guía solo se explicará el motodo en el cual una Entidad prepara su base de datos, y genera un webservice que expone su información. Por tal motivo, es necesario revise el numeral 1.3 en el cual encontrará documentos anexos de especificación de servicios web para Intercambio de información con Corporaciones que explican las estructuras y atributos.
La actual documentación consiste de los siguientes elementos, para los cuales la Autoridad ambiental debe identificar los atributos que constituye cada servicio:
Página 7
Base de Datos
Aut.AM.
Metodos de consulta y registro SOAPDispone funciones del sistema para los clientesSirve información consultada y registra la reportada
Servicio WEB
Aut.AM.
Cliente WS
IDEAMImplementa consumo de métodos SOAP
Base de datos
IDEAM
Almacena la información reportadaSirve la información consultada
Protocolo HTTP Transmisión de XML
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH Uso de Componentes de Integración de SIRH (Documento de Word), el cual incluye:
o Especificacion Servicio Web Fuentes para Intercambio de informacion Corporaciones - SIRH.doc
o Especificacion Servicio Web Usuarios Concesiones para Intercambio de informacion Corporaciones - SIRH.doc
o Especificacion Servicios Web Puntos monitoreo Mediciones para Intercambio de informacion Corporaciones - SIRH.doc
Incluye: Especificación de los métodos a implementar y sus parámetros Definición de las listas de valores Mecanismos de seguridad
o Especificacion Servicios Web Usuarios Vertimientos para Intercambio de informacion Corporaciones - SIRH.doc
MÉTODOS DEL SERVICIO WEB DE SIRH
ENTIDADES DE NEGOCIO DE SIRHLo descrito en este capitulo se explica en detalle en el documento “Implementación del Sistema de Información de Recurso Hídrico SIRH”, el cual se puede descargar desde el siguiente enlace:
http://capacitacion.sirh.ideam.gov.co/homeSIRH/HOME/boletines/publicacion/IMPLEMENTACION-SIRH.pdf
Para comprender el orden de los webservices a implementar, el desarrollador debe tener clara la lógica de negocio del Sistema. La Autoridad ambiental debe tener un inventario de sus fuentes hídricas, a las cuales se vinculan los usuarios del agua y los puntos de monitoreo de calidad. El gráfico a continuación identifica la jerarquía y dependencia de los registros de información a transmitir:
Página 8
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Las entidades de negocio de SIRH y sus relaciones de pertenencia son las siguientes:
Fuentes Hídricas y Tramos Usuarios del Agua
Concesiones Captaciones
Permiso de Vertimiento Vertimientos
Puntos de Monitoreo Muestras
Mediciones
A nivel de base de datos se representa con el siguiente modelo entidad-relación:
Por este motivo, el servicio web que vaya a implementar una autoridad ambiental deberá (según cuando aplique) brindar los siguientes servicios para el consumo de:
1. Fuentes hídricas y tramos (mediante el método getAllFuentes)2. Captaciones de personas naturales (mediante el método
getAllUsuariosNaturalConcesion)3. Captaciones de personas jurídicas (mediante el método
getAllUsuariosJuridicoConcesion)4. Permisos de vertimiento de personas naturales (mediante el método
getAllUsuariosNaturalVertimiento)5. Permisos de vertimiento de personas jurídicas (mediante el método
getAllUsuariosJuridicoVertimiento)6. Puntos de monitoreo (mediante el método getAllPuntosMonitoreo)7. Muestras y mediciones de un punto de monitoreo (mediante el método
getAllMuestrasMediciones)
Los requerimientos y especificaciones de cada uno de estos servicios se describe detalladamente en los anexos técnicos. En este documento se implementará solamente uno de estos servicios como ejemplo (fuentes), pero este ejemplo brindará suficiente experiencia para implementar los demás servicios con más facilidad.
Página 9
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
TIPOS DE INTEGRACIÓN POR SERVICIO WEB
Integración mediante servicios web con modelo de base de datos proporcionado por el IDEAM
Ilustración tomada de la presentación “ESQUEMAS DE INTEGRACION.pptx”
En este tipo de integración la autoridad ambiental adopta el modelo dedatos suministrado por el IDEAM para almacenar la información que se debe compartir.
En la documentación mencionada se describe este tipo de integración:
- Se instala modelo de datos reducido sobre informacion a compartir con SIRH (RURH, DATOS DE CALIDAD SUPERFICIALES)
- Para este esquema no se tienen servicios WEB para DATOS DE CALIDAD SUBTERRANEO (se deben reportar mediante plantillas de Excel)
- Se instala componente implementado por IDEAM para exponer servicios WEB con la informacion registrada por la autoridad
- La autoridad ambiental debe crear mecanismo para alimentar modelo de datos. El modelo se debe actualizar mensualmente con la informacion que se desea reportar a IDEAM
- IDEAM integra servicios expuestos por la autoridad ambiental- Mensualmente la persona encargada en la autoridad ambiental debe ingresar a SIRH y
cargar la informacion a reportar y solicitar aprobación a IDEAM- IDEAM autoriza la informacion cargada y se registra los datos en SIRH
Página 10
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH- Para que SIRH visualice la informacion de DATOS DE MONITOREO DE ESTACIONES
HIDROLOGICAS la autoridad debe crear vistas en su motor de base de datos para ser accedidas desde SIRH (IDEAM se encargaría de integrar las vistas suministradas).
Integración mediante servicios web con modelo de base de datos proporcionado por la autoridad ambiental
Ilustración tomada de la presentación “ESQUEMAS DE INTEGRACION.pptx”
Este tipo de integración asume que la autoridad ambiental ya tiene su propio modelo de datos que almacena toda la información que el IDEAM necesita consumir, lo que hace innecesario que adopte el modelo de datos suminstrado por el IDEAM.
En la documentación mencionada se describe este tipo de integración:
- La autoridad ambiental implementa los servicios web requeridos para la integración (RURH, DATOS DE CALIDAD SUPERFICIALES )
- IDEAM integra servicios expuestos por la autoridad ambiental- Mensualmente la persona encargada en la autoridad ambiental debe ingresar a SIRH y
cargar la informacion a reportar y solicitar aprobación a IDEAM- IDEAM autoriza la informacion cargada y se registra los datos en SIRH- Para que SIRH visualice la informacion de DATOS DE MONITOREO DE ESTACIONES
HIDROLOGICAS la autoridad debe crear vistas en su motor de base de datos para ser accedidas desde SIRH (IDEAM se encargaría de integrar las vistas suministradas).
Página 11
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
PREPARACIÓN DE LA INFORMACIÓN PARA SERVIRLA
Para que la entidad pueda servir la información requerida por el IDEAM, es necesario:
1. Que esté almacenada en su base de datos, ya sea bajo el modelo de datos del IDEAM, o su propio modelo de datos.
2. Que exista una aplicación independiente o integrada en la autoridad ambiental que tenga un servicio web con los métodos necesarios, especificados por el IDEAM para servirla.
Sincronización de las listas de valores
Para lograr que su aplicación se integre lo suficientemente con el SIRH será recomendable que mantenga una copia sincronizada de las tablas en las que se almacenan las listas de dominios y que su aplicación va a reportar. Esto facilitará al IDEAM armár los llamados con los códigos y valores de lista correctos, así como la interpretación correcta de las respuestas del servicio web.
Las listas que se pueden sincronizar están enumeradas en el capítulo “4. Listas Controladas de Valores” que se encuentra en cada documento de especificación del Web service:
Especificacion Servicio Web Fuentes para Intercambio de informacion Corporaciones - SIRH.doc
Especificacion Servicio Web Usuarios Concesiones para Intercambio de informacion Corporaciones - SIRH.doc
Especificacion Servicios Web Usuarios Vertimientos para Intercambio de informacion Corporaciones - SIRH.doc
Especificacion Servicios Web Puntos monitoreo Mediciones para Intercambio de informacion Corporaciones - SIRH.doc
Explicación del proceso de sincronización
Las listas de valores deben ser almacenadas en la base de datos de la entidad. Cada uno de los valores debe estar escrito exactamente como aparece en la especificación. De lo contrario se podrán presentar inconvenientes de no poder servir la información por no poder encontrar un valor de lista en la base de datos de IDEAM.
Para efectos de la integración con el SIRH, las listas de valores que posee el IDEAM han de ser consideradas como las oficiales, aún si su entidad ya tiene una lista (o tabla) de valores propia en su base de datos.
Dado que el cliente del servicio web de SIRH solo puede entender los valores oficiales de lista de IDEAM, es recomendable que la autoridad ambiental tenga la misma tabla de valores en su
Página 12
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
base de datos o, cuando menos, un campo en su propia tabla de valores que contenga el valor según IDEAM y que permita la integración.
Nota:
Es importante desatacar que las listas controladas son basadas en las plantillas de carga masiva que gestiona el aplicativo SIRH para facilitar el registro de la información en grandes cantidades. Los 7 servicios expuestos se basan en las entidades principales de registro de los formularios base de expedición del tramite ambiental (Concesiones y vertimientos).
Por ejemplo para publicar el servicio de fuentes se debe tomar en cuenta la lista controlada tipo fuente y tomar en cuenta los tramos asociados con todos sus atributos obligatorios para complementar la información.
Cada servicio se compone de la información base de cada una de las siguientes entidades:
1. Servicio para registro de fuentes - FuentesTramos
2. Servicio para registro de Concesiones de Usuarios Naturales- UsuarioPrediosConcesionesUsos del agua
3. Servicio para registro de Concesiones de Usuarios Juridicos- UsuarioRepresentante LegalPrediosConcesionesUsos del agua
4. Servicio para registro de Vertimintos de Usuarios Naturales- UsuarioPredios Vertimientos
5. Servicio para registro de Vertimientos de Usuarios Juridicos- UsuarioRepresentante LegalPrediosVertimientos
6. Servicio para registro de Puntos de Monitoreo de calidad- FuenteTramosPuntos de MonitoreoMuestra de Calidad
7. Servicio para registro de Concesiones de Usuarios Juridicos- Puntos de MonitoreMuestra de CalidadMediciones de calidad
Otro tema que se debe tomar en cuenta es que por las grandes cantidades de registros, los servicios tienen un estándar de parámetros de entrada rango de fechas de envío de los registros para evitar que el servidor aumente su capacidad de memoria y se evita la caída del servicio y ocasione inconvenientes con la transmisión de la información.
Página 13
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
¿En qué estructura de datos se debe almacenar la lista?
En la estructura propuesta en cada anexo técnico ya sea creando tablas nuevas, añadiendo los campos a tablas existentes o usando los scripts de creación de tablas que suministra el IDEAM:
Página 14
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
¿Por qué mantener una copia de la lista de valores?
La autoridad ambiental deberá garantizar que los valores queden almacenadas localmente para que la aplicación del cliente del IDEAM pueda basarse en dichos valores para consumir el servicio web.
¿Qué hacer si en la lista de IDEAM aún no existe un valor que sí existe en mi aplicación?
En caso de que se necesite reportar usando un valor de lista que no existe aún en las listas del IDEAM, la autoridad ambiental deberá solicitar a la Oficina de Informática la creación del registro del valor según las instrucciones que le sean entregadas.
Página 15
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
PROTOCOLO PARA LA IMPLEMENTACIÓN DE LOS SERVICIOS WEB
¡El SIRH requiere que la Autoridad ambiental disponga al menos siete webservices!
La Autoridad ambiental debe diseñar 7 vistas o tablas de base de datos que cumpla con los atributos de información para cada uno de los 7 webservices existentes. El IDEAM avanzó en la creación de un componente que hace uso de dichas vistas, que se ponen a su disposición mediante una recomendación SQL, así:
1. WSV_FNTV_FUENTES_TRAMOS2. WSV_USR_NATURAL_CONCESION3. WSV_USR_JURIDICO_CONCESION4. WSV_USR_NATURAL_VERTIMIENTO5. WSV_USR_JURIDICO_VERTIMIENTO6. WSV_PUNTOS_MONITOREO7. WSV_MUESTRAS_MEDICIONES
A continuación se esboza el procedimiento general que la entidad debe seguir para implementar cada uno de estos servicios.
EXPONER FUENTES HÍDRICAS Y SUS TRAMOSEste servicio debe ser el primero en implementar y validar que su información se transfiere al SIRH. Ya que los webservices subsisguientes validarán la existencia de esta fuentes y tramos en la Base de datos para poder insertar sus registros.
1. Remítase al documento “Especificacion Servicio Web Fuentes para Intercambio de informacion Corporaciones - SIRH.doc, donde se definen el listado, orden y tipo de atributos que reportar
2. Poble una vista como WSV_FNTV_FUENTES_TRAMOS de acuerdo con las necesidades del documento mencionado anteriormente
3. Genere un servicio de nombre getAllFuentes4. Publíquelo en sus servidores de aplicaciones 5. Comunique al IDEAM la URL para el consumo y pruebas6. El IDEAM realizará una validación de los datos expuestos por el web service.7. El cliente del servicio web de SIRH, que se encuentra en ejecución en el IDEAM,
incluirá al consumir cualquiera de los servicios expuestos por las entidades los siguientes parámetros:
a. Rango de fechasb. Request de SOAPc. Formato requerido
Página 16
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
EXPONER CAPTACIONES DE USUARIOS DEL AGUA DE TIPO NATURAL
Una vez sus fuentes hídricas han sido registradas en el SIRH, y va a implementar este servicio, siga los siguientes pasos:
1. Remítase al documento “Especificacion Servicio Web Usuarios Concesiones para Intercambio de informacion Corporaciones - SIRH.doc, donde se definen el listado, orden y tipo de atributos que reportar
2. Poble una vista como WSV_USR_NATURAL_CONCESION de acuerdo con las necesidades del documento mencionado anteriormente
3. Genere un servicio de nombre getAllUsuariosNaturalConcesion4. Publíquelo en sus servidores de aplicaciones 5. Comunique al IDEAM la URL para el consumo y pruebas6. El IDEAM realizará una validación de los datos expuestos por el web service.7. El cliente del servicio web de SIRH, que se encuentra en ejecución en el IDEAM,
incluirá al consumir cualquiera de los servicios expuestos por las entidades los siguientes parámetros:
a. Rango de fechasb. Request de SOAPc. Formato requerido
EXPONER CAPTACIONES DE USUARIOS DEL AGUA DE TIPO JURIDICO
Una vez sus fuentes hídricas han sido registradas en el SIRH, y va a implementar este servicio, siga los siguientes pasos:
1. Remítase al documento “Especificacion Servicio Web Usuarios Concesiones para Intercambio de informacion Corporaciones - SIRH.doc, donde se definen el listado, orden y tipo de atributos que reportar
2. Poble una vista como WSV_USR_JURIDICO_CONCESION de acuerdo con las necesidades del documento mencionado anteriormente
3. Genere un servicio de nombre getAllUsuariosJuridicoConcesion4. Publíquelo en sus servidores de aplicaciones 5. Comunique al IDEAM la URL para el consumo y pruebas6. El IDEAM realizará una validación de los datos expuestos por el web service.7. El cliente del servicio web de SIRH, que se encuentra en ejecución en el IDEAM,
incluirá al consumir cualquiera de los servicios expuestos por las entidades los siguientes parámetros:
a. Rango de fechasb. Request de SOAPc. Formato requerido
Página 17
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
EXPONER VERTIMIENTOS DE USUARIOS DEL AGUA DE TIPO NATURAL
Una vez sus fuentes hídricas han sido registradas en el SIRH, y va a implementar este servicio, siga los siguientes pasos:
1. Remítase al documento “Especificacion Servicios Web Usuarios Vertimientos para Intercambio de informacion Corporaciones - SIRH.doc”, donde se definen el listado, orden y tipo de atributos que reportar
2. Poble una vista como WSV_USR_NATURAL_VERTIMIENTO de acuerdo con las necesidades del documento mencionado anteriormente
3. Genere un servicio de nombre getAllUsuariosNaturalVertimiento4. Publíquelo en sus servidores de aplicaciones 5. Comunique al IDEAM la URL para el consumo y pruebas 6. El IDEAM realizará una validación de los datos expuestos por el web service.7. El cliente del servicio web de SIRH, que se encuentra en ejecución en el IDEAM,
incluirá al consumir cualquiera de los servicios expuestos por las entidades los siguientes parámetros:
a. Rango de fechasb. Request de SOAPc. Formato requerido
EXPONER VERTIMIENTOS DE USUARIOS DEL AGUA DE TIPO JURIDICO
Una vez sus fuentes hídricas han sido registradas en el SIRH, y vá a implementar este servicio, siga los siguientes pasos:
1. Remítase al documento “Especificacion Servicios Web Usuarios Vertimientos para Intercambio de informacion Corporaciones - SIRH.doc”, donde se definen el listado, orden y tipo de atributos que reportar
2. Poble una vista como WSV_USR_JURIDICO_VERTIMIENTO de acuerdo con las necesidades del documento mencionado anteriormente
3. Genere un servicio de nombre getAllUsuariosJuridicoVertimiento4. Publíquelo en sus servidores de aplicaciones 5. Comunique al IDEAM la URL para el consumo y pruebas 6. El IDEAM realizará una validación de los datos expuestos por el web service.7. El cliente del servicio web de SIRH, que se encuentra en ejecución en el IDEAM,
incluirá al consumir cualquiera de los servicios expuestos por las entidades los siguientes parámetros:
a. Rango de fechasb. Request de SOAPc. Formato requerido
EXPONER PUNTOS DE MONITOREO
Página 18
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Una vez sus fuentes hídricas han sido registradas en el SIRH, y va a implementar este servicio, siga los siguientes pasos:
1. Remítase al documento “Especificacion Servicios Web Puntos monitoreo Mediciones para Intercambio de informacion Corporaciones - SIRH.doc”, donde se definen el listado, orden y tipo de atributos que reportar
2. Poble una vista como WSV_PUNTOS_MONITOREO, de acuerdo con las necesidades del documento mencionado anteriormente
3. Genere un sercicio de nombre getAllPuntosMonitoreo4. Publíquelo en sus servidores de aplicaciones5. Comunique al IDEAM la URL para el consumo y pruebas6. El IDEAM realizará una validación de los datos expuestos por el web service.7. El cliente del servicio web de SIRH, que se encuentra en ejecución en el IDEAM,
incluirá al consumir cualquiera de los servicios expuestos por las entidades los siguientes parámetros:
a. Rango de fechasb. Request de SOAPc. Formato requerido
EXPONER MEDICIONES DE CALIDADUna vez sus puntos de monitoreo han sido registrados en el SIRH, y va a implementar este servicio, siga los siguientes pasos:
1. Remítase al documento “Especificacion Servicios Web Puntos monitoreo Mediciones para Intercambio de informacion Corporaciones - SIRH.doc”, donde se definen el listado, orden y tipo de atributos que reportar
2. Poble una vista com WSV_MUESTRAS_MEDICIONES, de acuerdo con las necesidades del documento mencionado anteriormente
3. Genere un servicio de nombre getAllMuestrasMediciones4. Publíquelo en sus servidores de aplicaciones5. Comunique al IDEAM la URL para el consumo y pruebas6. El IDEAM realizará una validación de los datos expuestos por el web service.7. El cliente del servicio web de SIRH, que se encuentra en ejecución en el IDEAM, incluirá
al consumir cualquiera de los servicios expuestos por las entidades los siguientes parámetros:
a. Rango de fechasb. Request de SOAPc. Formato requerido
Página 19
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
IMPLEMENTACIÓN DEL WEB SERVICE GETALLFUENTES
En esta versión de la guía se incluyen dos ejemplos de implementación del servicio web: uno en Java, y otro en .NET.
A continuación se expone la implementación Java y luego se hará lo propio con la de .NET:
GENERACIÓN DE CÓDIGO FUENTE DEL SERVICIO WEB USANDO NETBEANS (JAVA)
Obtener Netbeans
Netbeans es un editor de lenguajes de programación con varias funcionalidades que permiten agilizar el desarrollo. Para el lenguaje Java brinda la posibilidad de generar automáticamente gran parte de código fuente necesario para poder consumir servicios web.
Paso 1: Descargar Netbeans
Netbeans se puede descargar desde el siguiente enlace:
https://netbeans.org/downloads/8.0.2/
Para este ejemplo vamos a utilizar la versión 8.0.2 de Netbeans con soporte de Java EE, o la versión completa.
Paso 2: Instalar Netbeans
Para este paso, se recomienda seguir las instrucciones de instalación que vienen con Netbeans. Estas se pueden consultar en la página:
https://netbeans.org/community/releases/82/install.html
Página 20
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Creación de un proyecto de servicio web
Esta aplicación web nos permitirá implementar todos los métodos de servicio de nuestro servicio web.
Paso 1: creación del proyecto en Netbeans
Ejecutamos Netbeans y creamos un nuevo proyecto:
De tipo web Application:
Página 21
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Le damos un nombre:
Página 22
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Clic en Finish:
Esperamos a que Netbeans genere el código del proyecto:
Página 24
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Podemos ver que el proyecto fue creado:
Página 25
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Paso 2: creación del servicio web
Damos clic derecho al proyecto y elegimos crear un servicio web:
Página 26
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Especificamos el nombre y la ubicación del servicio web:
Página 27
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Esto generará el paquete del servicio web con un método de ejemplo hello(). Usaremos esta misma clase para implementar todos los métodos de nuestro servicio web.
Página 28
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Ejemplo de consumo de lista: implementación del método getAllFuentes
Paso 1: comenzamos a editar la clase del servicio web creando los métodos:
Creamos el nuevo método (podemos comenzar copiando el método de hello() que está arriba). Luego usamos las directivas @WebMethod y @WebParam para darle al método del servicio los nombres de los parámetros y del mismo método:
Página 29
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Debemos siempre consultar los anexos para saber qué parámetros debe recibir el método, tanto la especificación de cada parámetro:
Página 30
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Como también los ejemplos de requerimientos y respuestas SOAP:
Página 31
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Paso 2: crear las clases y métodos necesarios para implementar la funcionalidad de consulta del servicio web
Para este ejemplo se crearon las siguientes clases con la siguiente estructura dentro del proyecto:
Para este ejemplo, fue necesario crear cada una de estas clases y se hizo dentro del mismo paquete co.gov.autoridadambiental.wssirh. Al final las clases que tenga que implementar la autoridad ambiental tendrán un código similar al que se expondrá a continuación.
Los comentarios y explicaciones se incluyen dentro del código fuente, el cual se entrega en un zip anexo a esta guía.
Clase WS_SIRH.java:
package co.gov.autoridadambiental.wssirh;
/* SE IMPORTAN TODAS LAS CLASES NECESARIAS PARA PODER EJECUTAR EL SERVICIO WEB. A MEDIDA DE QUE SE ESCRIBE EL CÓDIGO, LAS CLASES A IMPORTAR SE PUEDEN AÑADIR DE FORMA AUTOMÁTICA CON ALT+ENTER, O DANDO CLIC SOBRE EL BOMBILLO. */import javax.jws.WebService;import javax.jws.WebMethod;import javax.jws.WebParam;import javax.xml.bind.annotation.XmlAccessType;
Página 32
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
import javax.xml.bind.annotation.XmlAccessorType;import javax.xml.bind.annotation.XmlElement;
/** * * @author Santiago Hernández */// EL TIPO DE ACCESO DE XML ES POR CAMPO@XmlAccessorType(XmlAccessType.FIELD)// ANOTACIÓN QUE LE DA EL NOMBRE AL SERVICIO WEB EN LA URL PARA PODERLO CONSUMIR@WebService(serviceName = "WS_SIRH", name = "WS_SIRH")public class WS_SIRH {
// EN ESTA VARIABLE QUEDARÁN TODA LA RESPUESTA DEL SERVICIO WEB GetAllFuentesResult getAllFuentesResult = new GetAllFuentesResult();
// LA LISTA DE FUENTES SE GUARDA EN UNA CLASE DE TIPO LISTAFUENTE ListaFuenteWS ListaFuente = new ListaFuenteWS();
// ESTA ANOTACIÓN SIRVE PARA DARLE EL NOMBRE AL NODO QUE CONTIENE EL RESULTADO @XmlElement(name = "GetAllFuentesResult") // ESTA ANOTACIÓN SIRVE PARA DARLE EL NOMBRE AL MÉTODO EN EL SERVICIO WEB @WebMethod(operationName = "getAllFuentes") /** * ESTE MÉTODO RETORNA TODAS LAS FUENTES * RECIBE: * FechaFinalRpt: entero opcional con la fecha final * FechaInicialRpt: entero opcional con la fecha inicial * Retorna: resultado en una variable de tipo GetAllFuentesResult */ public GetAllFuentesResult getAllFuentes( @WebParam(name = "FechaFinalRpt") Integer FechaFinalRpt, @WebParam(name = "FechaInicialRpt") Integer FechaInicialRpt) {
// INSTANCIAMOS LA RESPUESTA QUE CONTENDRÁ LA INFORMACIÓN LEGIBLE QUE // RETORNA ESTE MÉTODO RespuestaWS Respuesta = new RespuestaWS(); // LA DEFINIMOS INICIALMENTE CON UNOS VALORES POR DEFECTO // ASUMIENDO QUE NO SE PUDIERON DEVOLVER RESULTADOS POR ALGUN ERROR Respuesta.setCodigo("1"); Respuesta.setMensaje("Error");
// VALIDAMOS LOS PARÁMETROS DE ENTRADA Y RETORNAMOS LA RESPUESTA // CORRESPONDIENTE SI NO SON VÁLIDOS if (!fechaEstaBien(FechaInicialRpt)) { Respuesta.setCodigo("2"); Respuesta.setMensaje("Error: fecha inicial no válida"); getAllFuentesResult.setListaFuente(ListaFuente); getAllFuentesResult.setRespuesta(Respuesta); return getAllFuentesResult; }
if (!fechaEstaBien(FechaFinalRpt)) { Respuesta.setCodigo("3"); Respuesta.setMensaje("Error: fecha final no válida"); getAllFuentesResult.setListaFuente(ListaFuente); getAllFuentesResult.setRespuesta(Respuesta); return getAllFuentesResult; }
if (!cronologiaOK(FechaInicialRpt, FechaFinalRpt)) { Respuesta.setCodigo("4"); Respuesta.setMensaje("Error: fecha final debe ser posterior a la fecha inicial"); getAllFuentesResult.setListaFuente(ListaFuente); getAllFuentesResult.setRespuesta(Respuesta); return getAllFuentesResult; }
// CONSULTAR BASE DE DATOS PARA OBTENER FUENTES // SE ASUME QUE LA AUTORIDAD AMBIENTAL DESARROLLA ESTE MÉTODO // PARA OBTENER EL LISTADO DE FUENTES ENTRE LAS FECHAS ESPECIFICADAS // LA CLASE PersistenciaFuentes Y SU MÉTODO obtenerFuentesProcedimiento // SON, POR CONSIGUIENTE, FICTICIOS EN ESTE CÓDIGO Y LA LISTA ESTA // DEFINIDA MANUALMENTE ListaFuente.setFuentes(PersistenciaFuentes.obtenerFuentesProcedimiento(FechaInicialRpt, FechaFinalRpt));
// DEFINIMOS LOS CAMPOS DE LA LISTA DE FUENTES, Y DEL MENSAJE // DE RESPUESTA DE NUESTRO SERVICIO. getAllFuentesResult.setListaFuente(ListaFuente); Respuesta.setCodigo("0"); Respuesta.setMensaje("Operación correcta"); getAllFuentesResult.setRespuesta(Respuesta);
// RETORNAMOS EL RESULTADO return getAllFuentesResult; }
Página 33
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
// ESTE MÉTODO VERIFICARÍA SI LA FECHA ESTÁ BIEN ESPECIFICADA // PÀRA ESTE EJEMPLO SIEMPRE RETORNA VERDADERO private boolean fechaEstaBien(Integer FechaInicialRpt) { return true; }
// ESTE MÉTODO VERIFICARÍA SI LA FECHA DE INICIO ES ANTERIOR A LA FINAL // PÀRA ESTE EJEMPLO SIEMPRE RETORNA VERDADERO private boolean cronologiaOK(Integer FechaInicialRpt, Integer FechaFinalRpt) { return true; }
}
Clase FntvFuentesTramos.java:
package co.gov.autoridadambiental.wssirh;
/** * * @author Santiago Hernández * * CLASE FntvFuentesTramos * * REPRESENTA UNA FUENTE. * * EL SERVICIO WEB NECESITA ESTA CLASE PARA PODER ALMACENAR CADA FUENTE * QUE CONSULTA EN LA BASE DE DATOS, PODER AGREGARLA A UNA LISTA DE JAVA * Y ASÍ INCLUIRLA EN LA RESPUESTA SOAP. * * TIENE TODOS LOS ATRIBUTOS DE UNA FUENTE * */
public class FntvFuentesTramos { private String idfuente; private String tipofuente; private String nombrefuente; private String existebd; private String numcarfuente; private String descripcionfuente; private String numcartramo; private String nombretramo; private String descripciontramo; private Double longitud; private String tipoflujo; private String area; private String zona; private String subzona; private String cuenca; private String codigocuenca; private String sistemareferenciapi; private Integer gradoslatpi; private Integer minutoslatpi; private Double segundolatpi; private Integer gradoslonpi; private Integer minutoslonpi; private Double segundolonpi; private Double altitudpi; private String sistemareferenciapf; private Integer gradoslatpf; private Integer minutoslatpf; private Double segundolatpf; private Integer gradoslonpf; private Integer minutoslonpf; private Double segundolonpf; private Double altitudpf; private String fecharpt; private String idautoridad; private String usos;
// CONSTRUCTOR public FntvFuentesTramos() { } // METODOS PARA DEFINIR LOS ATRIBUTOS DE LA FUENTE public String getIdfuente() { return idfuente; }
Página 34
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
public void setIdfuente(String idfuente) { this.idfuente = idfuente; }
public String getTipofuente() { return tipofuente; }
public void setTipofuente(String tipofuente) { this.tipofuente = tipofuente; }
public String getNombrefuente() { return nombrefuente; }
public void setNombrefuente(String nombrefuente) { this.nombrefuente = nombrefuente; }
public String getExistebd() { return existebd; }
public void setExistebd(String existebd) { this.existebd = existebd; }
public String getNumcarfuente() { return numcarfuente; }
public void setNumcarfuente(String numcarfuente) { this.numcarfuente = numcarfuente; }
public String getDescripcionfuente() { return descripcionfuente; }
public void setDescripcionfuente(String descripcionfuente) { this.descripcionfuente = descripcionfuente; }
public String getNumcartramo() { return numcartramo; }
public void setNumcartramo(String numcartramo) { this.numcartramo = numcartramo; }
public String getNombretramo() { return nombretramo; }
public void setNombretramo(String nombretramo) { this.nombretramo = nombretramo; }
public String getDescripciontramo() { return descripciontramo; }
public void setDescripciontramo(String descripciontramo) { this.descripciontramo = descripciontramo; }
public Double getLongitud() { return longitud; }
public void setLongitud(Double longitud) { this.longitud = longitud; }
public String getTipoflujo() { return tipoflujo; }
public void setTipoflujo(String tipoflujo) { this.tipoflujo = tipoflujo; }
public String getArea() { return area; }
Página 35
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
public void setArea(String area) { this.area = area; }
public String getZona() { return zona; }
public void setZona(String zona) { this.zona = zona; }
public String getSubzona() { return subzona; }
public void setSubzona(String subzona) { this.subzona = subzona; }
public String getCuenca() { return cuenca; }
public void setCuenca(String cuenca) { this.cuenca = cuenca; }
public String getCodigocuenca() { return codigocuenca; }
public void setCodigocuenca(String codigocuenca) { this.codigocuenca = codigocuenca; }
public String getSistemareferenciapi() { return sistemareferenciapi; }
public void setSistemareferenciapi(String sistemareferenciapi) { this.sistemareferenciapi = sistemareferenciapi; }
public Integer getGradoslatpi() { return gradoslatpi; }
public void setGradoslatpi(Integer gradoslatpi) { this.gradoslatpi = gradoslatpi; }
public Integer getMinutoslatpi() { return minutoslatpi; }
public void setMinutoslatpi(Integer minutoslatpi) { this.minutoslatpi = minutoslatpi; }
public Double getSegundolatpi() { return segundolatpi; }
public void setSegundolatpi(Double segundolatpi) { this.segundolatpi = segundolatpi; }
public Integer getGradoslonpi() { return gradoslonpi; }
public void setGradoslonpi(Integer gradoslonpi) { this.gradoslonpi = gradoslonpi; }
public Integer getMinutoslonpi() { return minutoslonpi; }
public void setMinutoslonpi(Integer minutoslonpi) { this.minutoslonpi = minutoslonpi; }
public Double getSegundolonpi() { return segundolonpi;
Página 36
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
}
public void setSegundolonpi(Double segundolonpi) { this.segundolonpi = segundolonpi; }
public Double getAltitudpi() { return altitudpi; }
public void setAltitudpi(Double altitudpi) { this.altitudpi = altitudpi; }
public String getSistemareferenciapf() { return sistemareferenciapf; }
public void setSistemareferenciapf(String sistemareferenciapf) { this.sistemareferenciapf = sistemareferenciapf; }
public Integer getGradoslatpf() { return gradoslatpf; }
public void setGradoslatpf(Integer gradoslatpf) { this.gradoslatpf = gradoslatpf; }
public Integer getMinutoslatpf() { return minutoslatpf; }
public void setMinutoslatpf(Integer minutoslatpf) { this.minutoslatpf = minutoslatpf; }
public Double getSegundolatpf() { return segundolatpf; }
public void setSegundolatpf(Double segundolatpf) { this.segundolatpf = segundolatpf; }
public Integer getGradoslonpf() { return gradoslonpf; }
public void setGradoslonpf(Integer gradoslonpf) { this.gradoslonpf = gradoslonpf; }
public Integer getMinutoslonpf() { return minutoslonpf; }
public void setMinutoslonpf(Integer minutoslonpf) { this.minutoslonpf = minutoslonpf; }
public Double getSegundolonpf() { return segundolonpf; }
public void setSegundolonpf(Double segundolonpf) { this.segundolonpf = segundolonpf; }
public Double getAltitudpf() { return altitudpf; }
public void setAltitudpf(Double altitudpf) { this.altitudpf = altitudpf; }
public String getFecharpt() { return fecharpt; }
public void setFecharpt(String fecharpt) { this.fecharpt = fecharpt; }
public String getIdautoridad() {
Página 37
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
return idautoridad; }
public void setIdautoridad(String idautoridad) { this.idautoridad = idautoridad; }
public String getUsos() { return usos; }
public void setUsos(String usos) { this.usos = usos; }
}
Clase PersistenciaFuentes.java:
package co.gov.autoridadambiental.wssirh;
import java.util.ArrayList;import java.util.List;
/** * CLASE PersistenciaFuentes * * @author Santiago Hernández * * ESTA CLASE ES FICTICIA, Y SE USARÍA PARA CONECTARSE A LA BASE DE DATOS * Y OBTENER TODA LA INFORMACIÓN QUE SE LE ESTÁ PIDIENDO AL MÉTODO SOLICITADO * DEL SERVICIO WEB. * * PARA ESTE EJEMPLO, SIMPLEMENTE SE SIMULA QUE LA CLASE Y SU MÉTODO * obtenerFuentesProcedimiento, OBTIENEN DE LA BASE DE DATOS LAS FUENTES * QUE CUMPLAN LOS CRITERIOS CRONÓLOGICOS DE BÚSQUEDA, LAS AGREGAN A UNA * LISTA DE JAVA Y LAS RETORNAN A LA CLASE WS_SIRH.JAVA EN EL METODO * getAllFuentes, PARA INCLUIRLAS EN LA RESPUESTA DEL SERVICIO WEB. * * MANUALMENTE SE RETORNAN ACÁ DOS FUENTES EN EL ARREGLO DE LISTA. * */public class PersistenciaFuentes {
static List<FntvFuentesTramos> obtenerFuentesProcedimiento(Integer FechaInicialRpt, Integer FechaFinalRpt) { List<FntvFuentesTramos> Fuentes = new ArrayList<>();
// Escribir acá el código que se conecta a la base de datos y obtiene las fuentes y las // agrega a la lista de fuentes...
FntvFuentesTramos fuente1 = new FntvFuentesTramos(); fuente1.setAltitudpf(0d); fuente1.setAltitudpi(0d); fuente1.setArea(null); fuente1.setCodigocuenca(null); fuente1.setCuenca(null); fuente1.setDescripcionfuente(null); fuente1.setDescripciontramo(null); fuente1.setExistebd("S"); fuente1.setFecharpt(null); fuente1.setGradoslatpf(0); fuente1.setGradoslatpi(0); fuente1.setGradoslonpf(0); fuente1.setGradoslonpi(0); fuente1.setIdfuente("0"); fuente1.setIdautoridad(null); fuente1.setLongitud(0d); fuente1.setMinutoslatpf(0); fuente1.setMinutoslatpi(0); fuente1.setMinutoslonpf(0); fuente1.setMinutoslonpi(0); fuente1.setNombrefuente("Fuente Prueba"); fuente1.setNombretramo("Tramo Prueba 0"); fuente1.setNumcarfuente("14221234"); fuente1.setNumcartramo(null); fuente1.setSegundolatpf(0d); fuente1.setSegundolatpi(0d); fuente1.setSegundolonpf(0d); fuente1.setSegundolonpi(0d); fuente1.setSistemareferenciapf(null);
Página 38
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
fuente1.setSistemareferenciapi(null); fuente1.setSubzona(null); fuente1.setTipoflujo(null); fuente1.setTipofuente(null); fuente1.setUsos(null); fuente1.setZona(null); Fuentes.add(fuente1);
FntvFuentesTramos fuente2 = new FntvFuentesTramos(); fuente2.setAltitudpf(0d); fuente2.setAltitudpi(0d); fuente2.setArea(null); fuente2.setCodigocuenca(null); fuente2.setCuenca(null); fuente2.setDescripcionfuente(null); fuente2.setDescripciontramo(null); fuente2.setExistebd("S"); fuente2.setFecharpt(null); fuente2.setGradoslatpf(0); fuente2.setGradoslatpi(0); fuente2.setGradoslonpf(0); fuente2.setGradoslonpi(0); fuente2.setIdfuente("0"); fuente2.setIdautoridad(null); fuente2.setLongitud(0d); fuente2.setMinutoslatpf(0); fuente2.setMinutoslatpi(0); fuente2.setMinutoslonpf(0); fuente2.setMinutoslonpi(0); fuente2.setNombrefuente("Fuente Prueba"); fuente2.setNombretramo("Tramo Prueba 0"); fuente2.setNumcarfuente("14221234"); fuente2.setNumcartramo(null); fuente2.setSegundolatpf(0d); fuente2.setSegundolatpi(0d); fuente2.setSegundolonpf(0d); fuente2.setSegundolonpi(0d); fuente2.setSistemareferenciapf(null); fuente2.setSistemareferenciapi(null); fuente2.setSubzona(null); fuente2.setTipoflujo(null); fuente2.setTipofuente(null); fuente2.setUsos(null); fuente2.setZona(null); Fuentes.add(fuente2); return Fuentes; }
public PersistenciaFuentes() { } }
Clase RespuestaWS.java:
package co.gov.autoridadambiental.wssirh;
/** * CLASE RespuestaWS * * @author Santiago Hernández * * ESTA CLASE CONTIENE EL ELEMENTO DE RESPUESTA DEL SERVICIO WEB * */public class RespuestaWS { private String Codigo; private String Mensaje;
// CONSTRUCTOR public RespuestaWS() { }
// CONSTRUCTOR CON PARÁMETROS public RespuestaWS(String Codigo, String Mensaje) { this.Codigo = Codigo; this.Mensaje = Mensaje; }
// METODOS PARA DEFINIR LOS ATRIBUTOS:
Página 39
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
public String getCodigo() { return Codigo; }
public void setCodigo(String Codigo) { this.Codigo = Codigo; }
public String getMensaje() { return Mensaje; }
public void setMensaje(String Mensaje) { this.Mensaje = Mensaje; } }
Clase GetAllFuentesResult.java:
package co.gov.autoridadambiental.wssirh;
/** * CLASE GetAllFuentesResult * * @author Santiago * * ESTA CLASE SIRVE PARA ALMACENAR EL RESULTADO FINAL DEL METODO * DE getAllFuentes. * * CONSISTE DE LA LISTA DE FUENTES (ListaFuenteWS) Y LA RESPUESTA LEGIBLE * (RespuestaWS) * */public class GetAllFuentesResult { private ListaFuenteWS ListaFuente; private RespuestaWS Respuesta;
// CONSTRUCTOR public GetAllFuentesResult() { }
// CONSTRUCTOR CON PARÁMETROS public GetAllFuentesResult(ListaFuenteWS listaFuente, RespuestaWS respuesta) { this.ListaFuente = listaFuente; this.Respuesta = respuesta; }
// METODOS PARA DEFINIR Y OBTENER LOS PARÁMETROS public ListaFuenteWS getListaFuente() { return ListaFuente; }
public void setListaFuente(ListaFuenteWS listaFuente) { this.ListaFuente = listaFuente; }
public RespuestaWS getRespuesta() { return Respuesta; }
public void setRespuesta(RespuestaWS respuesta) { this.Respuesta = respuesta; }
}
Clase package-info.java
/** * CÓDIGO DE CONFIGURACIÓN package-info.java * * ESTE CÓDIGO PERMITE TENER MÁS CONTROL SOBRE LOS NAMESPACES Y PREFIJOS DE LA * RESPUESTA DE SOAP. * * PARA UNA RESPUESTA DE SOAP SIN PREFIJOS, USAR EL MODO UNQUALIFIED.
Página 40
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
* PARA UNA RESPUESTA DE SOAP CON PREFIJOS, USAR EL MODO QUALIFIED. * EL ARREGLO DE LLAMADOS A XmlNs SIRVE PARA DEFINIR EL PREFIJO PARA CADA * NAMESPACE. * */
@javax.xml.bind.annotation.XmlSchema(namespace = "http://wssirh.autoridadambiental.gov.co/", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.UNQUALIFIED, xmlns = { @javax.xml.bind.annotation.XmlNs(namespaceURI = "http://wssirh.autoridadambiental.gov.co/", prefix = "") })
package co.gov.autoridadambiental.wssirh;
Página 41
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Paso 3: comprobar el funcionamiento del servicio web
Podemos utilizar la herramienta Tester de Netbeans para verificar que el servicio esté funcionando como lo diseñamos.
Para esto, damos clic derecho sobre el proyecto y seleccionamos propiedades:
Página 42
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Luego, damos clic en Run, especificamos los parámetros para poder llamar el Tester de nuestro servicio web y damos clic en OK:
Luego de esto lanzamos el proyecto sobre glassfish con el botón de ejecución:
Página 43
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Una vez esté ejecutándose el servicio, lo podemos comprobar ingresando a la URL http://localhost:8080/WS_SIRH/WS_SIRH?Tester :
Especificamos los parámetros de entrada (fecha de finalización y fecha de inicio, en el orden en el que figuran en la definición del método) y oprimimos el botón getAllFuentes:
Página 44
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
En este momento debería aparecer la página con la respuesta de SOAP de nuestro servicio WEB:
Página 45
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Paso 3: compartir servicio web con el IDEAM
Para compartir el servicio con el IDEAM es aconsejable que la autoridad ambiental le entregue la URL del WSDL para que el IDEAM pueda corroborar que el servicio web quedo definido correctamente.
Para poder obtener la URL del WSDL podemos usar el Tester nuevamente:
Página 46
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Damos entonces clic en el enlace WSDL File (o simplemente compiamos el enlace al que hace referencia):
Se abrirá el XML del WSDL:
La URL como tal a compartirle al IDEAM sería entonces:
http://localhost:8080/WS_SIRH/WS_SIRH?WSDL
No obstante, sería necesario poder visualizar dicho enlace desde Internet, cosa que no se puede realizar usando localhost.
La entidad tiene entonces que definir lo que debe hacer para compartir el enlace. Una posibilidad sería crear en el enrutador/cortafuego de la entidad una regla de redirección de puertos (abrir puerto) al puerto 8080 de la máquina que tiene el servicio web. De este modo se podría compartir el enlace de una forma similar a esta:
http://autoridadambiental.gov.co:8080/WS_SIRH/WS_SIRH?WSDL
Si, por algún motivo el puerto 8080 ya está asignado, entonces en Netbeans se puede configurar el servicio de glassfish para cambiar el puerto a otro distinto.
Página 47
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Se deja a la discreción de cada autoridad ambiental qué servidor de aplicaciones (Tomcat, JBoss, GlassFish, etc.) va a utilizar para publicar el servicio web, en qué puerto y cómo permitirá el acceso.
Se recomienda a la autoridad ambiental seguir los lineamientos de seguridad descritos en los anexos técnicos para garantizarla. También se recomienda que haya una interacción estrecha entre la autoridad ambiental y el IDEAM para comprobar la implementación de la seguridad.
Página 48
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
IMPLEMENTACIÓN DEL SERVICIO WEB USANDO .NET (C#)
Se anexa un proyecto de C# .NET para que el usuario lo pueda abrir en Visual Studio. Si el lector está interesado, se recomienda contactar a la entidad autora de dicho desarrollo para obtener su documentación y facilitar la implementación.
VERIFICACIÓN DE LA INFORMACIÓN CONSUMIDA
Tanto la autoridad ambiental, como el IDEAM pueden verificar la información que haya sido reportada a través del servicio web en la plataforma WEB de SIRH.
Independientemente del mecanismo con el cual fueron suministrados los datos, la verificación y consulta se puede realizar de la siguiente manera:
Paso 1: Ingresar a http://181.225.72.35:8230/Sirh/faces/dashBoard.jspx
Paso 2: Dar clic en botón Ingresar
Página 49
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
El sistema persenta para iniciar sesión. Se ingresa usuario y contraseña
Paso 3: Se ingresa al sistema se presenta el Dashboard con graficos de resumen de la información regiatrada. El usuario debe ingresar en el Menu Fuentes Fuentes
Menu Fuentes Fuentes
Página 50
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH
Paso 4: Se muestra el Listado de Fuentes registradas y se verifica el cargue de la información suministrada a través del servicio web implementado
Paso 5: Para ver el detalle de una fuente individual se selecciona del listado y se ingresa en el menú Opciones Consultar/Editar
Página 52