65
GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH 28/08/20 17 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 …capacitacion.siac.ideam.gov.co/.../SIRH/Gu%eda-Web-S…  · Web viewUso de Componentes de Integración de SIRH (Documento de Word),

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

Página 23

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

Página 51

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

GUÍA DEL WEB SERVICE DEL SUBSISTEMA DE INFORMACIÓN DEL RECURSO HÍDRICO SIRH

Paso 6: Al consultar se muestra el detalle de los datos de la fuente y el tramo asociado

Finalmente, de esta manera podemos identificar y verificar si la transferencia de los datos se efectuo correctamente.

Página 53