====== Manual del Desarrollador de Integrabilidad ======
{{:5_manual_del_desarrollador_de_integrabilidad_test2.odt|Original file}} **Iniciativa de INTEGRABILIDAD **
**Manual del DESARROLLADOR **
{{:wiki:manualdesarrolladorpage1.jpg?645x248}}
[[#toc346883581|_Toc346883581]]
====== Manual de Desarrollo ======
|**Autor** |**Versión** |**Fecha** |
|Gervasio Claverie |1 |22-03-2010 |
|Eduardo Aceto |2 |10-01-2013 |
\\
====== Web-Services de Integrabilidad ======
===== Servicio Web de AUTENTICACIÓN =====
===== =====
La URL del mismo es [[http://autentica.neuquen.gov.ar:8080/scripts/autenticacion.exe?intf=IAutenticacion|http://autentica.neuquen.gov.ar:8080/scripts/autenticacion.exe?intf=IAutenticacion]]
A continuación se detallan las distintas funciones que incluye.
{{:iautenticacionxml.jpg?109x48}}
==== Función LoginPecas: ====
**realiza la validación del usuario**
**string** LoginPecas(**string**Usuario, **string**Password)
Donde el resultado de tipo **string** es el ID de sesión de pecas. Si el usuario no es válido, devuelve una cadena vacía.
==== Función LoginJosso: ====
**Verifica si el id de sesión de JOSSO sigue siendo válido.**
**CResultadoLoginJosso ** LoginJosso**(string ** IDSesionJosso**)**
El parámetro de entrada IDSessionJosso es de tipo **string** y contiene el número identificador de la sesión creada por Josso cuando valida un usuario.
El resultado de la función de tipo **CResultadoLoginJosso** y está compuesto de los siguientes atributos:
**String ** IDSesssion (Número identificador de la sesión Pecas)
**String** Username (Username que inició sesión en Josso)
==== Función VerificarSesionActivaPecas: Verifica que el id de sesión no haya expirado. ====
**String** VerificarSesionActivaPecas(**string ** IdSesionPecas)
Aquí el parámetro de entrada de tipo **string **//IdSesionPecas// es el ID de sesión entregado por PECAS.
Devuelve el resultado de la validación también en formato **string**. Si el ID no expiró devuelve el texto 'SESION OK', caso contrario devuelve 'SESION ERROR'
**Nota:** ésta función es obsoleta por lo cual se recomienda utilizar [[:start#funcion_verificarsesionactivapecas_v2verifica_que_el_id_de_sesion_no_haya_expirado|VerificarSesionActivaPecas_V2]]
==== Función ObtenerUserNameDeSesion: Obtiene el username asociado al id de sesión PECAS ====
**String** ObtenerUserNameDeSesion(**string** IdSesionPecas)
Aquí el parámetro de entrada de tipo **string** IdSesionPecas es el ID de sesión entregado por PECAS.
Devuelve como resultado el username del usuario asociado al id de sesión PECAS, también en formato **string**.
==== Función FijarBaseDeSesion: Asigna la base de datos con la que trabajará el usuario ====
**Boolean** FijarBaseDeSesion(**string** IdSesion, **string** Base)
Donde Base es el nombre de la base de datos
Retorna en tipo de dato **boolean** (true o false) indicando si se pudo realizar la operación.
==== Función ObtenerBaseDeSesion: Obtiene base de datos con la que trabaja el usuario asociado al id de sesión PECAS ====
**String** ObtenerBaseDeSesion(**string**IdSesion)
Aquí el parámetro de entrada de tipo **string **//IdSesion// es el ID de sesión entregado por PECAS.
Devuelve como resultado el nombre de la base de datos, también en formato **string**.
==== Función ObtenerDatosDeSesión: Obtiene el username y la base de datos del usuario asociado al id de sesión PECAS ====
**TDatosSesionPecas** ObtenerDatosDeSesion(**string**idSesion)
Aquí el parámetro de entrada de tipo **string **//IdSesion// es el ID de sesión entregado por PECAS.
El resultado de tipo **TDatosSesionPecas** es una estructura, que devuelve una serie de campos definidos de la siguiente manera:
**String ** Usuario
**String** BaseDeDatos
Donde //Usuario// es el username, y //BaseDeDatos// es el nombre de la base.
==== Función ObtenerNivelDeSesion: Obtiene el nivel de autorización de la sesión. ====
Es para autorización por dos factores. Durante la sesión el usuario puede cambiar de nivel, se va guardando el máximo nivel en la sesión.
**Int** ObtenerNivelDeSesion(**string**idSesion)
Aquí el parámetro de entrada de tipo **string **//IdSesion// es el ID de sesión entregado por PECAS.
Donde lo que retorna es un numero de tipo **int** que representa el nivel 0=nivel básico, 1=2 factores
==== Función ObtenerInvolucrado: Dado un id de sesión de PECAS, se busca ese usuario en el servidor LDAP y se recupera el parámetro que identifica al usuario como involucrado de los servicios ====
Por ejemplo si en el LDAP todos los usuarios tienen el campo UID con su nro de DNI, entonces ObtenerInvolucrado devolvería siempre el dni del user.
**String** ObtenerInvolucrado(**string ** idSesion)
Aquí el parámetro de entrada de tipo **string **//IdSesion// es el ID de sesión entregado por PECAS.
El resultado de la función de tipo **string** es el dato que representa al involucrado (por ejemplo dni)
==== Función VerificarSesionActivaPecas_V2: Verifica que el id de sesión no haya expirado. ====
**String** VerificarSesionActivaPecas_V2(**string ** IdSesionPecas)
Aquí el parámetro de entrada de tipo **string **//IdSesionPecas// es el ID de sesión entregado por PECAS.
Devuelve el resultado de la validación también en formato **string**. Si el ID no expiró devuelve el texto 'SESION OK', caso contrario devuelve 'SESION ERROR'
==== Función Logout(string idSesion): finaliza la sesión de trabajo. ====
**boolean ** Logout(**string ** idSesion)
Aquí el parámetro de entrada de tipo **string **//IdSesionPecas// es el ID de sesión entregado por PECAS.
Devuelve el resultado de la operación del cierre de sesión también en formato **boolean**. Si fue exitoso retorna True.
==== Función ObtenerDuracionSesion: Retorna el tiempo de dura la sesión en minutos. ====
**int** ObtenerDuracionSesion(**string ** IdSesion)
Aquí el parámetro de entrada de tipo **string **//IdSesion// es el ID de sesión entregado por PECAS.
Devuelve el resultado que contiene la cantidad de minutos que dura la sesión en formato **int**.
==== Función Echo: Testea si está activo el servidor de autenticación. ====
**TResultadoEcho** Echo (**string** texto)
Aquí el parámetro de entrada de tipo **string** se llama //texto//.
Devuelve el resultado de la llamada al servidor de autenticación en formato **TResultadoEcho**. Este tipo de dato esta compuesto de los siguientes atributos:
**Int** CodResultado (es 0 si no hubo error, sino aparece en su lugar el código del error).
**String** MensajeResultado (es el texto del mensaje de error devuelto si hubiese error).
**String** Resultado (es el texto enviado al servidor como parámetro de entrada).
==== Función Encriptar: Encripta o codifica el texto solicitado. ====
**String** Encriptar(**string** texto)
Aquí el parámetro de entrada de tipo **string** es el //texto// que se desea encriptar.
Devuelve el texto encriptado también en formato **string**.
==== Función Desencriptar: Desencripta o decodifica el texto de entrada. ====
**String** Desencriptar(**string ** texto)
El parámetro de entrada de tipo **string** es el //texto// que se quiere desencriptar.
Devuelve el resultado de la desencriptación o decodificación también en formato **string**.
===== Servicio Web de AUTORIZACIÓN =====
La URL del Servicio es [[http://autoriza.neuquen.gov.ar:8080/scripts/autorizacion.exe/wsdl/IAutorizacion|http://autoriza.neuquen.gov.ar:8080/scripts/autorizacion.exe/wsdl/IAutorizacion]].
A continuación se detallan las distintas funciones que incluye.
{{:iautorizacionxml.jpg?109x50}}
==== Función Solicitar_Servicio : El cliente solicita al autorizador la ejecución de un servicio ====
**Nota:** Versión obsoleta, reemplazada por la [[:start#funcion_solicitar_servicio3a_diferencia_de_solicitar_servicio2_en_esta_version_se_pasa_la_firma_en_forma_separada_y_en_el_resultado_total_se_envian_los_resultados_parciales_y_las_firmas_correspondientes_separadas|versión 3]].
El cliente solicita al autorizador la ejecución de un servicio. El autorizador verifica si está autorizado para solicitarlo y envía la solicitud a la fuente auténtica.
La fuente auténtica resuelve el servicio y envía el resultado al autorizador que a su vez lo envía al cliente.
El autorizador guarda log de la transacción.
**TResultadoServicio ** Solicitar_Servicio**(string ** IdSesionPecas**, string ** Cliente**, string ** Proveedor**, ****string ** Servicio**, string ** DatoAuditado**, string ** Operador**, ****byte[] ** Cuerpo**, Boolean ** CuerpoFirmado**, ****Boolean ** CuerpoEncriptado**)**
Donde:
-//IdSesionPecas//: identificador de sesión del cliente, entregado por el autenticador
-//Cliente//: código del cliente que solicita el servicio
-//Proveedor//: código del actor que es la Fuente Auténtica de la información
-//Servicio//: servicio de la Fuente Auténtica solicitado por el cliente
-//DatoAuditado//: involucrado de la consulta, generalmente DNI, legajo de quien se pide información
-//Operador//: Nombre de usuario del operador del sistema cliente.
-//Cuerpo//: es un archivo o array de bytes con información necesaria para realizar el servicio
-//CuerporFirmado//: Indica si el cliente firmó digitalmente el cuerpo del resultado.
-//CuerpoEncriptado//: Indica si el cliente encriptó el cuerpo del resultado.
Y el resultado de la función **TResultadoServicio** es una estructura, que devuelve una serie de campos definidos de la siguiente manera:
**byte[]** Resultado
**byte[]** Resultado2
**byte[]** Resultado3
**byte[]** Resultado4
**byte[]** Resultado5
**int** NumPedido
**int** CodResultado
**string** MensajeResultado
**int** TipoResultado
Donde:
-//Resultado1..ResultadoN//: arrays de bytes devueltos por la fuente auténtica.
-//NumPedido//: número de transacción con la que el autorizador guarda la solicitud
-//CodResultado//: Código del resultado del servicio. 0=ok, 1..N códigos de error
-//MensajeResultado//: En caso de error, se devuelve un texto descriptivo.
-//TipoResultado//: Indica si el error lo genera el autorizador o la fuente auténtica: 1=autorizador 2=fuente autentica
==== Función Solicitar_Servicio2 ====
**En esta versión del método se pasa la firma en forma separada.**
**Nota: ** Versión obsoleta, reemplazada por la [[:start#funcion_solicitar_servicio3:a_diferencia_de_solicitar_servicio2_en_esta_version_se_pasa_la_firma_en_forma_separada_y_en_el_resultado_total_se_envian_los_resultados_parciales_y_las_firmas_correspondientes_separadas|versión 3]].
El cliente solicita al autorizador la ejecución de un servicio. El autorizador verifica si está autorizado para solicitarlo y envía la solicitud a la fuente auténtica.
La fuente auténtica resuelve el servicio y envía el resultado al autorizador que a su vez lo envía al cliente.
El autorizador guarda log de la transacción.
**TResultadoServicio2 ** Solicitar_Servicio2**(string ** IdSesionPecas**, string ** Cliente**, string ** Proveedor**,**
**string ** Servicio**, string ** DatoAuditado**, string ** Operador**, **
**byte[] ** Cuerpo**, byte[] ** Firma**, **
**Boolean ** CuerpoFirmado**, Boolean ** CuerpoEncriptado**)**
Donde:
-//IdSesionPecas//: identificador de sesión del cliente, entregado por el autenticador
-//Cliente//: código del cliente que solicita el servicio
-//Proveedor//: código del actor que es la Fuente Auténtica de la información
-//Servicio//: servicio de la Fuente Auténtica solicitado por el cliente
-//DatoAuditado//: involucrado de la consulta, generalmente DNI, legajo de quien se pide información
-//Operador//: Nombre de usuario del operador del sistema cliente.
-//Cuerpo//: es un archivo o array de bytes con información necesaria para realizar el servicio
-//Firma//: firma que se envía como primera parte de la firma digital.
-//CuerporFirmado//: Indica si el cliente firmó digitalmente el cuerpo.
-//CuerpoEncriptado//: Indica si el cliente encriptó el cuerpo.
Y el resultado de la función **TResultadoServicio2** es una estructura, que devuelve una serie de campos definidos de la siguiente manera:
**byte[]** Resultado
**byte[]** FirmaResultado1
**byte[]** Resultado2
**byte[]** Resultado3
**byte[]** Resultado4
**byte[]** Resultado5
**int** NumPedido
**int** CodResultado
**string** MensajeResultado
**int** TipoResultado
Donde:
-//Resultado1..ResultadoN//: arrays de bytes devueltos por la fuente auténtica.
-//FirmaResultado1//: Dato que se retorna como la segunda parte para completar la firma digital.
-//NumPedido//: número de transacción con la que el autorizador guarda la solicitud
-//CodResultado//: Código del resultado del servicio. 0=ok, 1..N códigos de error
-//MensajeResultado//: En caso de error, se devuelve un texto descriptivo.
-//TipoResultado//: Indica si el error lo genera el autorizador o la fuente auténtica: 1=autorizador 2=fuente autentica
==== Función Solicitar_Servicio3 ====
**A diferencia de Solicitar_servicio2, en esta versión se pasa la firma en forma separada y en el resultado total se envían los resultados parciales y las firmas correspondientes separadas. **
El cliente solicita al autorizador la ejecución de un servicio. El autorizador verifica si está autorizado para solicitarlo y envía la solicitud a la fuente auténtica.
La fuente auténtica resuelve el servicio y envía el resultado al autorizador que a su vez lo envía al cliente.
El autorizador guarda log de la transacción.
**TResultadoServicio **Solicitar_Servicio3**(string **IdSesionPecas**, string **Cliente**, string **Proveedor**, **
** string **Servicio**, string **DatoAuditado**, string **Operador**, **
** byte[] **Cuerpo**, byte[] **Firma**, Boolean **CuerpoFirmado**, **
** Boolean **CuerpoEncriptado**)**
Donde:
-//IdSesionPecas//: identificador de sesión del cliente, entregado por el autenticador
-//Cliente//: código del cliente que solicita el servicio
-//Proveedor//: código del actor que es la Fuente Auténtica de la información
-//Servicio//: servicio de la Fuente Auténtica solicitado por el cliente
-//DatoAuditado//: involucrado de la consulta, generalmente DNI, legajo de quien se pide información
-//Operador//: Nombre de usuario del operador del sistema cliente.
-//Cuerpo//: es un archivo o array de bytes con información necesaria para realizar el servicio
-//Firma//: firma que se envía como primera parte de la firma digital.
-//CuerporFirmado//: Indica si el cliente firmó digitalmente el cuerpo.
-//CuerpoEncriptado//: Indica si el cliente encriptó el cuerpo.
Y el resultado de la función **TResultadoServicio3** es una estructura, que devuelve una serie de campos definidos de la siguiente manera:
**byte[]** Resultado1
**byte[]** Resultado2
**byte[]** Resultado3
**byte[]** Resultado4
**byte[]** Resultado5
**byte[]** FirmaResultado1
**byte[]** FirmaResultado2
**byte[]** FirmaResultado3
**byte[]** FirmaResultado4
**byte[]** FirmaResultado5
**int** NumPedido
**int** CodResultado
**string** MensajeResultado
**int** TipoResultado
**boolean** ResultadoFirmado
**boolean** ResultadoEncriptado
Donde:
-//Resultado1..ResultadoN//: arrays de bytes devueltos por la fuente auténtica.
-//FirmaResultado1.. FirmaResultado1//: arrays de bytes con el dato que se retorna como la segunda parte para completar la firma digital.
//-NumPedido//: número de transacción con la que el autorizador guarda la solicitud
-//CodResultado//: Código del resultado del servicio. 0=ok, 1..N códigos de error
-//MensajeResultado//: En caso de error, se devuelve un texto descriptivo.
-//TipoResultado//: Indica si el error lo genera el autorizador o la fuente auténtica: 1=autorizador 2=fuente autentica.
-//ResultadoFirmado//: Avisa con valor verdadero si el resultado fue firmado digitalmente.
-//ResultadoEncriptado//: Avisa con valor verdadero si el resultado fue encriptado o codificado.
==== Función Solicitar_ClavePublica: brinda la clave pública del actor solicitado ====
El autorizador tiene registradas las claves públicas de firma digital de todos los actores. Cualquier actor que haya sido autenticado puede solicitar la clave pública de otro actor.
**byte[] **Solicitar_ClavePublica**(string **IdSesionPecas**, string **Proveedor**)**
Donde los parámetros de entrada son:
-//IdSesionPecas//: identificador de sesión del cliente
-//Proveedor//: código del actor del que se pide la clave pública.
Retorna el resultado como un array de bytes conteniendo la clave pública
==== Función Informar_Resultado_del_Servicio: el cliente informa si los datos recibidos son correctos ====
Cuando el cliente recibe el resultado del servicio que solicitó, puede informar si los datos recibidos son correctos
Informar_Resultado_del_Servicio**(string **IdSesionPecas**, int **NumPedido**, string **Cliente**,string **Proveedor**, int **CodResultado**) **
Donde:
-//IdSesionPecas//: identificador de sesión del cliente
-//NumPedido//: número de la transacción generada por el servicio
-//Cliente//: cliente que informa el resultado
-//Proveedor//: fuente auténtica consultada
-//CodResultado//: Código del resultado del servicio. 0=ok, 1..N códigos de error
==== Función RecuperarMenuDeUsuario: Brinda la lista de servicios que el cliente tiene disponibles para utilizar ====
**CResultadoMenu **RecuperarMenuDeUsuario(**string** IdSesionPecas**, string **CodigoMenu)
Donde los parámetros de entrada son:
-//IdSesionPecas//: identificador de sesión del cliente
-//CodigoMenu//: código del nodo que es raíz del árbol de autorizaciones
El valor resultado **CResultadoMenu** es una estructura, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**- boolean** Resultado
**- ArrayDeMenu** Menu
**- Int** Codigo
**- String** Descripcion
**- Int** codigopadre
**- String** CodigoExterno
**- Int** NivelAutorizacion
Donde:
-//Resultado//: indica si se pudo resolver la solicitud.
-//Menu//: array de servicios del tipo **ArrayDeMenu** organizado como una estructura padre/hijo, donde cada elemento contiene un objeto del tipo **TNodoMenu**, descripto a continuación:
**Int** Codigo: código numérico del servicio
**String** Descripcion: nombre del servicio
**Int** codigopadre: padre del servicio (la fuente auténtica)
**String** CodigoExterno: código alfanumérico del servicio
**Int** NivelAutorizacion: Nivel de autorización (lectura, escritura, ejecución)
==== Función RecuperarMenuDeUsuarioParaJava: Brinda la lista de servicios que el cliente tiene disponibles para utilizar en formato compatible Java ====
Este método es igual al método anterior, pero el resultado lo devuelve en otra estructura, compatible con JAVA
**CResultadoMenuJava** RecuperarMenuDeUsuarioParaJAVA(**string** IdSesionPecas,
**string** CodigoMenu)
Donde la descripción de los parámetros de entrada:
-//IdSesionPecas//: identificador de sesión del cliente
-CodigoMenu: código del nodo que es raíz del árbol de autorizaciones
El resultado de la funcion es del tipo **CResultadoMenuJava**, el cual es una estructura, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**Boolean** Resultado
**ArrayDeInt** Codigo
**ArrayDeString** Descripcion
**ArrayDeInt** CodigoPadre
**ArrayDeString** CodigoExterno
**ArrayDeInt** NivelAutorizacion
Donde la salida son array paralelos conteniendo la lista de servicios solicitadas. Esta organizada como una estructura padre/hijo.
- Resultado: indica si se pudo recuperar la lista de servicios autorizados
- Codigo: array con los códigos numéricos de los servicios
- Descripcion: array con las descripciones de los servicios
- CodigoPadre: array con los códigos numéricos de los padres de cada servicio (la fuente auténtica)
- CodigoExterno: codigo alfanumérico del servicio.
- NivelAutorizacion: array con el nivel de autorización de cada servicio
==== Función RecuperarMenuDeUsuario_V2 : en esta versión el resultado tiene más datos (programa, comentarios) ====
**Nota: ** Esta Versión es obsoleta y fue reemplazada por la [[:start#funcion_recuperarmenudeusuario_v2_esta_version_es_obsoleta_y_fue_reemplazada_por_la_version_3_:en_esta_version_el_resultado_tiene_mas_datos_programa_comentarios|Versión 3]].
**CResultadoMenu_V2** RecuperarMenuDelUsuario_V2(**string** IdSesionPecas, **string** Codigomenu)
Donde los parámetros de entrada se describen de la siguiente manera:
- IdSesionPecas : identificador de sesión del cliente
- CodigoMenu : código del nodo que es raíz del árbol de autorizaciones
El resultado entregado por la función es del tipo **CResultadoMenu_V2**, el cual es una estructura, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**Boolean** Resultado
**TIntegerDynArray** Codigo
**TStringDynArray** Descripcion
**TIntegerDynArray** CodigoPadre
**TStringDynArray** CodigoExterno
**TIntegerDynArray** NivelAutorizacion
**TStringDynArray** ProgramaAsociado
**TStringDynArray** Comentarios
Donde:
- Resultado: indica si se pudo recuperar la lista de servicios autorizados
- Codigo: array con los códigos numéricos de los servicios
- Descripcion: array con las descripciones de los servicios
- CodigoPadre: array con los códigos numéricos de los padres de cada servicio (la fuente auténtica)
- CodigoExterno: codigo alfanumérico del servicio.
- NivelAutorizacion: array con el nivel de autorización de cada servicio
- ProgramaAsociado: path o url asociado al item
==== Función RecuperarMenuDeUsuario_V3: en esta versión el resultado tiene más datos (programa, comentarios) ====
**CResultadoMenu_V4** RecuperarMenuDelUsuario_V3(**string** IdSesionPecas, **string** Codigomenu)
Donde los parámetros de entrada se describen de la siguiente manera:
- IdSesionPecas : identificador de sesión del cliente
- CodigoMenu : código del nodo que es raíz del árbol de autorizaciones
El resultado entregado por la función es del tipo **CResultadoMenu_V4**, el cual es una estructura, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**Boolean** Resultado
**TIntegerDynArray** Codigo
**TStringDynArray** Nombre
**TIntegerDynArray** CodigoPadre
**TStringDynArray** CodigoExterno
**TIntegerDynArray** NivelAutorizacion
**TStringDynArray** ProgramaAsociado
**TStringDynArray** Comentarios
**TStringDynArray** Descripcion
**String** MensajeResultado
Donde:
- Resultado: indica si se pudo recuperar la lista de servicios autorizados
- Codigo: array con los códigos numéricos de los servicios
- Nombre: array con los nombres de los servicios
- CodigoPadre: array con los códigos numéricos de los padres de cada servicio (la fuente auténtica)
- CodigoExterno: codigo alfanumérico del servicio.
- NivelAutorizacion: array con el nivel de autorización de cada servicio
- ProgramaAsociado: array con path o url asociado a cada item
- Comentarios: array con los comentarios de cada servicio.
- Descripcion: array con las descripciones de los servicios
- MensajeResultado: mensaje de texto con el resultado de esta consulta.
==== Función ObtenerParametrosDeServicio: retorna los parámetros necesarios para utilizar un servicio. ====
**TParametrosDeServicio** ObtenerParametrosDeServicio(**string** IdSesionPecas, **string** Servicio, **string** Proveedor)
Donde los parámetros de entrada se describen de la siguiente manera:
- IdSesionPecas : identificador de sesión del cliente
- Servicio : Nombre del servicio que se desea consultar
- Proveedor: Quien es el proveedor del servicio a utilizar.
El resultado entregado por la función es del tipo **TParametrosDeServicio**, el cual es una estructura, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**TStringDynArray ** Nombres
**TStringDynArray ** Tipos
**TStringDynArray ** Valores
**Int ** CodResultado
**String ** MensajeResultado
Donde:
- Nombres: array con los nombres de los parámetros necesarios para llamar al servicio.
- Tipos: array con los tipos de datos de cada uno de los parámetros de llamada al servicio.
- Valores: array con los valores de los parámetros de llamada al servicio.
- CodResultado: Código del resultado de la llamada al servicio. 0=ok, 1..N códigos de error
- MensajeResultado: mensaje de texto con el resultado de esta consulta.
==== Función RecuperarCatalogoServicios: retorna el listado de servicios disponibles de un determinado lugar. ====
**CResultadoMenu_V3** RecuperarCatalogoServicios(**string** IdSesionPecas, **string** Codigomenu)
Donde los parámetros de entrada se describen de la siguiente manera:
- IdSesionPecas : identificador de sesión del cliente
- Codigomenu : identificador del menu al cual se desea utilizar.
El resultado entregado por la función es del tipo **CResultadoMenu_V3**, el cual es una estructura, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**Boolean ** Resultado
**TIntegerDynArray****** Codigo
**TStringDynArray ** Nombre
**TIntegerDynArray****** CodigoPadre
**TStringDynArray ** CodigoExterno
**TIntegerDynArray ** NivelAutorizacion
**TStringDynArray ** ProgramaAsociado
**TStringDynArray ** Comentarios
**TStringDynArray ** Descripcion
Donde:
- Resultado: valor verdadero o falso para determinar si la consulta fue exitosa.
- Codigo: array con los codigos de servicios presente en este catálogo.
- Nombre: array con los nombres de los servicios disponibles.
- CodigoPadre: array con los códigos de los padres correspondientes a cada uno de los servicios del catálogo.
- CodigoExterno: array con la lista de los códigos externos de los servicios listados en el catálogo.
- NivelAutorizacion: array con los niveles de autorización correspondientes a cada uno de los servicios.
- ProgramaAsociado: array con el listado de programas asociados a cada servicio.
- Comentarios: array con los comentarios correspondientes a cada servicio listado.
- Descripcion: array con la descripción de que es lo que hace cada servicio aparecido en el catálogo.
==== Función ObtenerEjemploResultadoServicio: retorna un valor de ejemplo del tipo retornado por un servicio. ====
**TResultadoEjemploServicio** ObtenerEjemploResultadoServicio(**string** IdSesionPecas, **string** Servicio)
Donde los parámetros de entrada se describen de la siguiente manera:
- IdSesionPecas : identificador de sesión del cliente
- Servicio : identificador del servicio desde el cual se desea obtener el ejemplo.
El resultado entregado por la función es del tipo **TResultadoEjemploServicio**, el cual es una estructura, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**int** CodResultado
**string** MensajeResultado
**byte[]** Resultado1
**byte[]** Resultado2
**byte[]** Resultado3
**byte[]** Resultado4
**byte[]** Resultado5
Donde:
- CodResultado : Código del resultado del servicio. 0=ok, 1..N códigos de error.
- MensajeResultado: En caso de error, se devuelve un texto descriptivo del mismo.
- Resultado1..ResultadoN : arrays de bytes devueltos por la fuente auténtica.
==== Función Echo: Testea si está activo el servidor de autorización. ====
**TResultadoEcho** Echo (**string** texto)
Aquí el parámetro de entrada de tipo **string** se llama texto.
Devuelve el resultado de la llamada al servidor de autorización en formato **TResultadoEcho**. Este tipo de dato esta compuesto de los siguientes atributos:
**Int** CodResultado (es 0 si no hubo error, sino aparece en su lugar el código del error).
**String** MensajeResultado (es el texto del mensaje de error devuelto si hubiese error).
**String** Resultado (es el texto enviado al servidor como parámetro de entrada).
==== Función RecuperarListaNodosIntegrabilidad: Retorna el listado de los nodos que existen para ser utilizados en el marco de integrabilidad. ====
**TListaNodosIntegrabilidad**RecuperarListaNodosIntegrabilidad(**string** IdSesionPecas)
Aquí el parámetro de entrada de tipo **string** se llama IdSesionPecas y contiene al identificador de sesión del cliente.
Devuelve el resultado de la llamada al servidor de autorización en formato **TListaNodosIntegrabilidad **. Este tipo de dato esta compuesto de los siguientes atributos:
**TStringDynArray **Codigos
**TStringDynArray **Nombres
**Byte[] **Tipos
**Byte[] **Estados
**TStringDynArray **IPs
**TStringDynArray **Mensajes
**Int **CodResultado
**String **MensajeResultado
Donde:
- Codigos: es un arrary con los codigos de identificación de los nodos de integrabilidad.
- Nombres: es un array con los nombres de los nodos de integrabilidad.
- Tipos: es un array con los tipos de los nodos, por ejemplo: si es un nodo autenticador (0), autorizador(1), y fuente auténtica(3).
- Estados: es un array que contiene los respectivos estados de los nodos, siendo los posibles valores de estado: ok(1) o con error en los test de acceso(2).
- IPs: es un array de las direcciones IPs correspondientes a cada nodo del listado.
- Mensajes: es un array con los mensajes recibidos de cada nodo.
- CodResultado: es un número para representar el código de resultado de esta función. En donde 0 significa que no hubo error.
- MensajeResultado: aquí se detalla con un mensaje de texto lo que ocurrió con la función.
==== Función RecuperarListaWebServicesDeFA: Obtiene el listado de los webservices con que cuenta una fuente auténtica en particular. ====
**TListaServiciosDeFA** RecuperarListaWebServicesDeFA(**string** IdSesionPecas, **string** CodigoFa)
Aquí los parámetros de entrada son de tipo **string**. El primero se llama IdSesionPecas y contiene al identificador de sesión del cliente. Y el segundo es CodigoFA y se usa para guardar el código de la Fuente Auténtica, de la cual se obtendrá la lista de webservices disponibles.
Devuelve el resultado de la llamada al servidor de autorización en formato **TListaServiciosDeFA**. Este tipo de dato esta compuesto de los siguientes atributos:
**TStringDynArray **Codigos
**TStringDynArray **Nombres
**TStringDynArray **Descripciones
**TStringDynArray **SistemaFuenteDatos
**TStringDynArray **ComoTrabaja
**TStringDynArray **DatosParaTest
**TStringDynArray **RespuestaEsperada
**TStringDynArray **Responsable
**Byte[] **Estados
**TStringDynArray **URLs
**TStringDynArray **Mensajes
**Int **CodResultado
**String **MensajeResultado
Donde:
- Codigos: es un arrary con los codigos de identificación de los WebServices de la FA.
- Nombres: es un array con los nombres de los webservices con que cuenta esa FA.
- Descripciones: es un array con las descripciones de cada uno de los webservices de esta FA.
- SistemaFuenteDatos: es un array que contiene en cada elemento del mismo, el sistema que originó el dato.
- ComoTrabaja:es un array conteniendo las descripciones de cómo trabaja cada uno de los servicios para recuperar los datos.
- DatosParaTest:es un array con parámetros de ejemplo para invocar al servicio.
- RespuestaEsperada: es un array que contiene un descripción del formato que va a tener el resultado del servicio. Por ejemplo si es xml, cual es la estructura.
- Responsable: es un array con los responsables de cada uno de los webservices provistos por la FA.
- Estados: es un array que contiene los respectivos estados de los servicios siendo los posibles valores de estado: ok(1) o con error en los test de acceso(2).
- URLs: es un array de las direcciones URLs correspondientes a cada webservice provisto por la FA.
- Mensajes: es un array con los mensajes recibidos de cada webservice.
- CodResultado: es un número para representar el código de resultado de esta función. En donde 0 significa que no hubo error.
- MensajeResultado: aquí se detalla con un mensaje de texto lo que ocurrió con la función de consulta.
==== Función RecuperarUsuariosDeMenu: Obtiene el listado de los usuarios con acceso a un determinado menú. ====
**TListaUsuariosDeMenu** RecuperarUsuariosDeMenu(**string** IdSesionUsuario, **string** Raiz, **string** Opcion)
Aquí los parámetros de entrada son de tipo **string**. El primero se llama IdSesionUsuario y contiene al identificador de sesión del cliente. El segundo es Raiz y se usa para guardar la raíz del menú al que se quiere acceder. Y finalmente el tercero, Opcion, es para indicar que opción del menú es a la que se quiere consultar.
Devuelve el resultado de la llamada al servidor de autorización en formato **TListaUsuariosDeMenu**. Este tipo de dato esta compuesto de los siguientes atributos:
**Int **CodResultado
**String **MensajeResultado
**TStringDynArray **Codigos
**TStringDynArray **Nombres
**TStringDynArray **CodigosPadre
**TStringDynArray **CodigosUsuarios
**TStringDynArray **CodigosItems
Donde:
- CodResultado: es un número para representar el código de resultado de esta función. En donde 0 significa que no hubo error.
- MensajeResultado: es el texto que devuelve distinto de vacío en caso que hubo error en la consulta.
- Codigos: es un arrary con los codigos de identificación de los ítems del menú.
- Nombres: es un array con los nombres de los ítems del menú.
- CodigosPadre: es un array con las código del padre de un determinado ítem del menú.
- CodigosUsuarioss: es un array de los códigos de los usuarios con acceso a esta opción del menu.
- CodigosItems: es un array con los códigos de los ítems correspondientes a cada uno de los usuarios del menú.
==== Función AutorizarUsuarioMenu: Procesa el permiso de acceso de un usuario a un menú en particular. ====
**TResultadoAsignacionMenu** AutorizarUsuarioMenu(**string** IdSesionUsuario, **string** Raiz,**string** Usuario, **string** Opcion,**TNivelPermiso** Nivel Permiso)
Aquí los tres primeros parámetros de entrada son de tipo **string**. El primero se llama IdSesionUsuario y contiene al identificador de sesión del cliente. El segundo es Raiz y se usa para guardar la raíz del menú al que se quiere autorizar. Y el tercero, Opcion, es para indicar que opción del menú es a la que se quiere autorizar.
El cuarto parámetro de entrada es del tipo **TNivelPermiso **y permite elegir entre los siguientes valores de tipo **string**: npNinguno, npLectura, npInsercion, npModificacion y npBorrado.
La función devuelve el resultado de la llamada al servidor de autorización en formato **TResultadoAsignacionMenu**. Este tipo de dato esta compuesto de los siguientes atributos:
**Int** CodResultado
**String** MensajeResultado
****
Donde:
- CodResultado: es un número para representar el código de resultado de esta función. En donde 0 significa que no hubo error.
- MensajeResultado: es el texto que devuelve distinto de vacío en el caso en que hubo error en la ejecución de la función.
==== Función DesAutorizarUsuarioMenu: Procesa la cancelación del permiso de acceso de un usuario a un menú en particular. ====
**TResultadoAsignacionMenu** AutorizarUsuarioMenu(**string** IdSesionUsuario, **string** Raiz,**string** Usuario, **string** Opcion,**TNivelPermiso** Nivel Permiso)
Aquí los tres primeros parámetros de entrada son de tipo **string**. El primero se llama IdSesionUsuario y contiene al identificador de sesión del cliente. El segundo es Raiz y se usa para guardar la raíz del menú al que se quiere cortar el acceso. Y el tercero, Opcion, es para indicar que opción del menú es a la que se quiere suspender el acceso.
El cuarto parámetro de entrada es del tipo **TNivelPermiso **y permite elegir entre los siguientes valores de tipo **string**: npNinguno, npLectura, npInsercion, npModificacion y npBorrado.
La función devuelve el resultado de la llamada al servidor de autorización en formato **TResultadoAsignacionMenu**. Este tipo de dato esta compuesto de los siguientes atributos:
**Int** CodResultado
**String** MensajeResultado
****
Donde:
- CodResultado: es un número para representar el código de resultado de esta función. En donde 0 significa que no hubo error.
- MensajeResultado: es el texto que devuelve distinto de vacío en el caso en que hubo error en la ejecución de la función.
==== Función UsuarioHabilitadoParaMenu: informa si un usuario en particular tiene autorización de uso de un Menú. ====
**TResultadoUsuarioHabilitadoParaMenu** AutorizarUsuarioMenu(**string** IdSesionUsuario, **string** Raiz, **string** Menu)
Aquí los parámetros de entrada son de tipo **string**. El primero se llama IdSesionUsuario y contiene al identificador de sesión del cliente. El segundo es Raiz y se usa para guardar la raíz del menú al que se quiere evaluar el permiso. Y el tercero, Menu, es para indicar que opción del menú es a la que se quiere analizar el permiso de este usuario.
La función devuelve el resultado de la llamada al servidor de autorización en formato **TResultadoUsuarioHabilitadoParaMenu**. Este tipo de dato esta compuesto de los siguientes atributos:
Boolean Habilitado
Int CodResultado
String MensajeResultado
Donde:
- Habilitado: dice si el usuario esta habilitado o no para utilizar un menú en particular.
- CodResultado: es un número para representar el código de resultado de esta función. En donde 0 significa que no hubo error.
- MensajeResultado: es el texto que devuelve distinto de vacío en el caso en que hubo error en la ejecución de la función.
==== Función RolesDeUsuario: Retorna la lista de los roles que se le otorgaron a un usuario para una determinada versión de un proceso. ====
**TResultadoRolesDeUsuario** RolesDeUsuario(**string** IdSesionUsuario, **int** Proceso, **int** Version)
Aquí el primero parámetro de entrada es de tipo **string**, se llama IdSesionUsuario y contiene al identificador de sesión del cliente. El segundo es de tipo **int**, Proceso, y guarda el código identificador del proceso. Y finalmente el tercero, Version, también de tipo **int**, indica el numero de la versión del proceso a la que se hace referencia.
La función devuelve el resultado de la llamada al servidor de autorización en formato **TResultadoRolesDeUsuario**. Este tipo de dato esta compuesto de los siguientes atributos:
**Int** CodResultado
**String** MensajeResultado
**TIntegerDynArray** ListaRoles
****
Donde:
- CodResultado: es un número para representar el código de resultado de esta función. En donde 0 significa que no hubo error.
- MensajeResultado: es el texto que devuelve distinto de vacío en el caso en que hubo error en la ejecución de la función.
- ListaRoles: es un array y donde cada elemento del array contiene los códigos numéricos de cada uno de los roles.
==== Función UsuariosDependientes: Retorna la lista de los usuarios dependientes. ====
**TResultadoUsuariosDependientes** UsuariosDependientes (**string** IdSesionUsuario)
Aquí el único parámetro de entrada es de tipo **string**, se llama IdSesionUsuario y contiene al identificador de sesión del cliente.
La función devuelve el resultado de la llamada al servidor de autorización en formato **TResultadoUsuariosDependientes**. Este tipo de dato esta compuesto de los siguientes atributos:
**Int **CodResultado
** String **MensajeResultado
** TIntegerDynArray **Usuarios
****
Donde:
- CodResultado: es un número para representar el código de resultado de esta función. En donde 0 significa que no hubo error.
- MensajeResultado: es el texto que devuelve distinto de vacío en el caso en que hubo error en la ejecución de la función.
- Usuarios: es un array y donde cada elemento del array contiene los códigos numéricos de identificación de cada uno de los usuarios.
==== Función RecuperaBasesDeUsuario: Retorna la lista de los bases a las que podría acceder un usuario. ====
**TBasesDeUsuario** RecuperaBasesDeUsuario(**string** IdSesionUsuario)
Aquí el único parámetro de entrada es de tipo **string**, se llama IdSesionUsuario y contiene al identificador de sesión del cliente.
La función devuelve el resultado de la llamada al servidor de autorización en formato **TBasesDeUsuario**. Este tipo de dato esta compuesto de los siguientes atributos:
**Int **CodResultado
** String **MensajeResultado
****
Donde:
- CodResultado: es un número para representar el código de resultado de esta función. En donde 0 significa que no hubo error.
- MensajeResultado: es el texto que devuelve distinto de vacío en el caso en que hubo error en la ejecución de la función.
==== Función RecuperarMenuDeOtroUsuario: Retorna el menú de otro usuario distinto al de la sesión actual. ====
**CResultadoMenu_V4** RecuperarMenuDeOtroUsuario(**string** IdSesionPecas, **string** CodigoMenu, **string** usuario)
Los tres parámetros de entrada son de tipo **string**. El primero se llama IdSesionPecas y contiene al identificador de sesión del cliente. El segundo es el Codigomenu y guarda el código del menú al cual se refiere la consulta. Y finalmente usuario es el usuario del cual se quiere recuperar el menú.
La función devuelve el resultado de la llamada al servidor de autorización en formato **CResultadoMenu_V4**. Este tipo de dato esta compuesto de los siguientes atributos:
**Boolean** Resultado
**TIntegerDynArray** Codigo
**TStringDynArray** Nombre
**TIntegerDynArray** CodigoPadre
**TStringDynArray** CodigoExterno
**TIntegerDynArray** NivelAutorizacion
**TStringDynArray** ProgramaAsociado
**TStringDynArray** Comentarios
**TStringDynArray** Descripcion
**String** MensajeResultado
Donde:
- Resultado: indica si se pudo recuperar la lista de servicios autorizados
- Codigo: array con los códigos numéricos de los servicios
- Nombre: array con los nombres de los servicios
- CodigoPadre: array con los códigos numéricos de los padres de cada servicio (la fuente auténtica)
- CodigoExterno: codigo alfanumérico del servicio.
- NivelAutorizacion: array con el nivel de autorización de cada servicio
- ProgramaAsociado: array con path o url asociado a cada item
- Comentarios: array con los comentarios de cada servicio.
- Descripcion: array con las descripciones de los servicios
- MensajeResultado: mensaje de texto con el resultado de esta consulta.
===== Servicio Web de ESTRUCTURA de USUARIOS =====
La URL del Servicio es [[http://autoriza.neuquen.gov.ar:8080/scripts/usuarios.exe|http://autoriza.neuquen.gov.ar:8080/scripts/usuarios.exe]].
A continuación se detallan las distintas funciones que incluye.
{{:iusuariosxml.jpg?82x51}}
==== Función RecuperarAreas: Recupera las Áreas de la organización ====
**CResultadoAreas **RecuperarAreas**(string **IdSesion**)**
Donde el parámetro de entrada de tipo **string**, IDSesión**,** es el identificador de la sesión del cliente
Esta función retorna un objeto del tipo **CResultadoAreas**, que es una estructura, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**ArrayDeInt **Areas
**boolean **Resultado
Donde:
- Áreas: es un array conteniendo los códigos de las áreas.
- Resultado: indica si se pudo resolver el servicio
==== Función RecuperarUsuarios: Recupera las usuarios definidos de la organización ====
**CResultadoUsuarios **RecuperarUsuarios**(string **IdSesion**)**
Donde el parámetro de entrada de tipo **string**, IDSesión**,** es el identificador de la sesión del cliente
Esta función retorna un objeto del tipo **CResultadoUsuarios** que es una estructura, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**ArrayDeInt **Areas
**boolean **Resultado
Donde:
- Resultado: indica si se pudo resolver el servicio
- Usuarios: es un array conteniendo los códigos de los usuarios.
==== Función RecuperarDescripcionUsuarios: Recupera los nombres de los usuarios recibidos ====
**ArrayDeString **RecuperarDescripcionUsuarios**(string **IdSesion, **ArrayDeInt **CodigosUsuarios**)**
Donde el parámetro de entrada de tipo **string**, IDSesión**,** es el identificador de la sesión del cliente.
Y CodigosUsuarios es unArrayDeInt, o sea es un array conteniendo los códigos de usuarios.
Esta función retorna un objeto del tipo **ArrayDeString.** ArrayDeString es un array conteniendo las descripciones de los usuarios
==== Función RecuperarPuestos: Recupera los códigos de los puestos de la organización ====
**CResultadoPuestos**RecuperarPuestos**(string ** IdSesion**)**
Donde el parámetro de entrada de tipo **string**, IDSesión**,** es el identificador de la sesión del cliente
Esta función retorna un objeto del tipo **CResultadoPuestos** que es una estructura, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**ArrayDeInt ** Puestos
**ArrayDeInt ** Padres
**boolean ** Resultado
Donde:
- Resultado: indica si se pudo resolver el servicio
- Puestos: array conteniendo los códigos de las puestos.
- Padres: array paralelo a puestos, conteniendo los códigos de los padres de cada puesto.
==== Función RecuperarBasesDeUsuario: Recupera las bases de datos disponibles para el usuario ====
**CResultadoBases **RecuperarBasesDeUsuarios**(string **IdSesion, **string **Usuario,** string **Password**)**
Donde los tres parámetros de entrada son de tipo **string**. IDSesión es el identificador de la sesión del cliente. Usuario es el username. Por último, Password es la contraseña del mismo y en el caso de validación con LDAP puede ser nula.
Esta función retorna un objeto del tipo **CResultadoBases** que es una estructura, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**ArrayDeString **Bases
**boolean **Resultado
Donde:
- Resultado: indica si se pudo resolver el servicio
- Bases: array conteniendo los códigos de las bases de datos.
==== Función RecuperarBasesDeAdministrador: Recupera las bases de datos disponibles para el administrador ====
* **__Cómo se solicita__ **
Idem función [[:start#funcion_recuperarbasesdeusuario:recupera_las_bases_de_datos_disponibles_para_el_usuario|RecuperarBasesDeUsuario]]
* **__Cómo nos responde__ **
Idem función [[:start#funcion_recuperarbasesdeusuario:recupera_las_bases_de_datos_disponibles_para_el_usuario|RecuperarBasesDeUsuario]]
==== Función RecuperarPuesto: Recupera la información de un puesto ====
**CResultadoPuesto ** RecuperarPuesto**(string ** IdSesionPecas, **int ** CodigoPuesto**)**
Donde el parámetro de entrada IdSesionPecas es de tipo **string**. IDSesiónPecas es el identificador de la sesión del cliente. Por último, CodigoPuesto es de tipo int y contiene código del puesto del que se quieren recuperar datos.
Esta función retorna un objeto del tipo **CResultadoPuesto** que es una estructura, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**String ** Nombre
**String ** Descripcion
**Int ** Padre
**boolean ** Resultado
**string ** CodigoExterno
Donde:
- Nombre: es el nombre del puesto
- Descripcion: es la descripción adicional del puesto
- Padre: es el código del puesto padre
- Resultado: indica si se pudo resolver el servicio
- CodigoExterno: es el código externo del puesto (si tuviera).
==== Función RecuperarArea: Recupera la información de un Área ====
**CResultadoAreas ** RecuperarAreas**(string ** IdSesionPecas, **int** CodigoArea**)**
Donde el parámetro de entrada de tipo **string**, IDSesiónPecas**,** es el identificador de la sesión del cliente. El segundo parámetro de entrada es CodigoArea, es de tipo**int** y contiene el código del Área del que se quieren recuperar datos.
Esta función retorna un objeto del tipo **CResultadoArea**, que es una estructura, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**string ** Nombre
**string ** Descripcion
**boolean ** Resultado
Donde:
- Nombre: es el nombre del Área
- Descripcion: es la descripción adicional del Área
- Resultado: indica si se pudo resolver el servicio
==== Función RecuperarDescripcionAreas: Recupera la información de determinadas Áreas ====
**ArrayDeString **RecuperarDescripcionAreas**(string **IdSesion, **ArrayDeInt** CodigosAreas**)**
Donde el parámetro de entrada de tipo **string**, IDSesión**,** es el identificador de la sesión del cliente. El segundo parámetro de entrada es CodigosAreas, es de tipo**ArrayDeInt** con los códigos de las Áreas de las que se quieren recuperar datos.
Esta función retorna un objeto del tipo **ArrayDeString**, que es un Array con las descripciones de las areas.
==== Función RecuperarGruposDePuestos: Recupera los códigos de todos los grupos de puestos ====
**CResultadoGruposDePuestos **RecuperarGruposDePuestos **(string **IdSesionPecas**)**
Donde el parámetro de entrada de tipo **string**, IDSesiónPecas**,** es el identificador de la sesión del cliente.
Esta función retorna un objeto del tipo **CResultadoGruposDePuestos**, es una estructura que devuelve una serie de campos y vectores definidos de la siguiente manera:
**ArrayDeInt **GrupoDePuestos
**boolean **Resultado
Donde:
- GrupoDePuestos: es un array con los códigos de los grupos de puestos.
- Resultado: indica si se pudo resolver el servicio
==== Función RecuperarGrupoDePuestos: Recupera la descripción y los código de puestos de un grupo de puestos ====
**CResultadoGrupoDePuestos ** RecuperarGrupoDePuestos **(string ** IdSesionPecas,
**int** CodigoPuesto**)**
Donde el parámetro de entrada de tipo **string**, IDSesiónPecas**,** es el identificador de la sesión del cliente. Y el último parámetro de entrada contiene una variable de tipo **int** y se llama CodigoPuesto.
Esta función retorna un objeto del tipo **CResultadoGrupoDePuestos**, es una estructura que devuelve una serie de campos y vectores definidos de la siguiente manera:
**string ** NombreGrupo
**ArrayDeInt ** Puestos
**boolean ** Resultado
Donde:
- NombreGrupo: nombre del grupo
- Puestos: array con los códigos de puestos que pertenecen al grupo
- Resultado: indica si se pudo resolver el servicio
==== Función RecuperarGruposDeUsuarios: Recupera los códigos de todos los grupos de usuarios ====
**CResultadoGruposDeUsuarios **RecuperarGruposDeUsuarios **(string **IdSesionPecas**)**
Donde el parámetro de entrada de tipo **string**, IDSesiónPecas**,** es el identificador de la sesión del cliente.
Esta función retorna un objeto del tipo **CResultadoGruposDeUsuarios**, es una estructura que devuelve una serie de campos y vectores definidos de la siguiente manera:
**ArrayDeInt **GrupoDeUsuarios
**boolean **Resultado
Donde:
- GrupuDeUsuarios: es un array con los códigos de los grupos de usuarios.
- Resultado: indica si se pudo resolver el servicio
==== Función RecuperarGrupoDeUsuarios: Recupera la descripción y los código de usuarios de un grupo de usuarios ====
**CResultadoGrupoDeUsuarios ** RecuperarGrupoDeUsuarios **(string ** IdSesionPecas, **int** CodigoGrupo**)**
Donde el parámetro de entrada de tipo **string**, IDSesiónPecas**,** es el identificador de la sesión del cliente. El segundo parámetro de entrada es CodigoGrupo, es de tipo**int** y contiene el código del grupo del que se quieren recuperar datos.
Esta función retorna un objeto del tipo **CResultadoGrupoDeUsuarios**, que es una estructura, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**string ** Nombre
**boolean ** Resultado
**ArrayDeInt ** Usuarios
Donde:
- Resultado: indica si se pudo resolver el servicio
- NombreGrupo: nombre del grupo
- Usuarios: es un array con los códigos de los usuarios que pertenecen al grupo
==== Función RecuperarEquiposDeUsuarios: Recupera los códigos de todos los equipos de usuarios ====
**CResultadoEquipoDeUsuarios ** RecuperarEquiposDeUsuarios**(string ** IdSesionPecas**)**
Donde el parámetro de entrada de tipo **string**, IDSesiónPecas**,** es el identificador de la sesión del cliente.
Esta función retorna un objeto del tipo **CResultadoEquipoDeUsuarios**, que es una estructura, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**ArrayDeInt ** Equipos
**boolean ** Resultado
Donde:
- Resultado: indica si se pudo resolver el servicio
- Equipos: es un array con los códigos de los equipos de usuarios.
==== Función RecuperarUsuario: Recupera los datos de un usuario ====
**CResultadoUsuario ** RecuperarUsuario**(string ** IdSesionPecas, **int** CodigoUsuario**)**
Donde el parámetro de entrada de tipo **string**, IDSesiónPecas**,** es el identificador de la sesión del cliente. El segundo parámetro de entrada es CodigoUsuario, de tipo **int**.
Esta función retorna un objeto del tipo **CResultadoUsuario**, que es una estructura, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**string ** Nombre
**string ** EMai**l**
**boolean ** Resultado
Donde:
- Nombre: es el nombre de usuario
- Email: es el email del usuario
- Resultado: indica si se pudo resolver el servicio
==== Función RecuperarPuestosDeUsuario: Recupera los códigos de puestos que ocupa un usuario ====
**CResultadoUsuario ** RecuperarPuestosDeUsuario **(string ** IdSesionPecas, **int** CodigoUsuario**)**
Donde el parámetro de entrada de tipo **string**, IDSesiónPecas**,** es el identificador de la sesión del cliente. El segundo parámetro de entrada es CodigoUsuario, de tipo **int**.
Esta función retorna un objeto del tipo **CResultadoPuestosDeUsuario**, que es una estructura, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**ArrayDeInt ** Puestos
**boolean ** Resultado
Donde:
- Resultado: indica si se pudo resolver el servicio
- Puestos: es un array con los códigos de puestos que el usuario ocupa
==== Función RecuperarDescripcionPuestosDeUsuario: Recupera la descripción de los puestos que ocupa un usuario ====
**ArrayDeString ** RecuperarDescripcionPuestosDeUsuario**(string ** IdSesionPecas, **int** CodigoUsuario**)**
Donde el parámetro de entrada de tipo **string**, IDSesiónPecas**,** es el identificador de la sesión del cliente. El segundo parámetro de entrada es CodigoUsuario, de tipo **int**.
Esta función retorna un objeto del tipo **ArrayDeString**, que es un vector con la descripción de los puestos que ocupa el usuario
==== Función RecuperarAreasDeUsuario: Recupera los códigos de Área donde pertenece un usuario ====
**CResultadoRecuperarAreasDeUsuario ** RecuperarAreasDeUsuario **(string ** IdSesionPecas, **int** CodigoUsuario**)**
Donde el parámetro de entrada de tipo **string**, IDSesiónPecas**,** es el identificador de la sesión del cliente. El segundo parámetro de entrada es CodigoUsuario, de tipo **int**.
Esta función retorna un objeto del tipo **CResultadoRecuperarAreasDeUsuario**, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**ArrayDeInt ** Areas
**boolean ** Resultado
Donde:
- Resultado: indica si se pudo resolver el servicio
- Areas: es un array con los códigos de las Áreas que el usuario ocupa
==== Función RecuperarGruposDeUsuarios_DeUsuario: Recupera los códigos de grupos de usuarios a los que pertenece un usuario ====
**CResultadoGruposDeUsuarios_DeUsuario ** RecuperarGruposDeUsuarios_DeUsuario **(string ** IdSesionPecas, **int** CodigoUsuario**)**
Donde el parámetro de entrada de tipo **string**, IDSesiónPecas**,** es el identificador de la sesión del cliente. El segundo parámetro de entrada es CodigoUsuario, de tipo **int**.
Esta función retorna un objeto del tipo **CResultadoGruposDeUsuarios_DeUsuario**, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**ArrayDeInt ** Grupos
**boolean ** Resultado
Donde:
- Resultado: indica si se pudo resolver el servicio
- Grupos: es un array con los códigos de los grupos a los cuales el usuario pertenece
==== Función RecuperarDescripciónGruposDeUsuarios_DeUsuario: Recupera la descripción de los grupos de usuarios a los que pertenece un usuario ====
**ArrayDeString**RecuperarDescripcionGruposDeUsuarios**(string ** IdSesionPecas, **int** CodigoUsuario**)**
Donde el parámetro de entrada de tipo **string**, IDSesiónPecas**,** es el identificador de la sesión del cliente. El segundo parámetro de entrada es CodigoUsuario, de tipo **int**.
Esta función retorna un objeto del tipo **ArrayDeString ** que es un vector con la descripción de los grupos de usuarios a los que pertenece un usuario
==== Función RecuperarEquiposDeUsuarios_DeUsuario: Recupera los códigos de los equipos de usuarios a los que pertenece un usuario ====
**CResultadoEquiposDeUsuarios_DeUsuario**RecuperarEquiposDeUsuarios_DeUsuario**(string **IdSesionPecas, **int** CodigoUsuario**)**
Donde el parámetro de entrada de tipo **string**, IDSesiónPecas**,** es el identificador de la sesión del cliente. El segundo parámetro de entrada es CodigoUsuario, de tipo **int**.
Esta función retorna un objeto del tipo **CResultadoEquiposDeUsuarios_DeUsuario **que es una estructura, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**ArrayDeInt **Equipos
**boolean **Resultado
Donde:
- Resultado: indica si se pudo resolver el servicio
- Equipos: es un array con los códigos de los equipos a los que el usuario pertenece
==== Función RecuperarDescripciónEquiposDeUsuarios_DeUsuario: Recupera la descripción de equipos de usuarios ====
**ArrayDeString**RecuperarEquiposDeUsuarios_DeUsuario**(string ** IdSesionPecas, **ArrayDeInt** CodigosEquipos**)**
Donde el parámetro de entrada de tipo **string**, IDSesiónPecas**,** es el identificador de la sesión del cliente. El segundo parámetro de entrada es CodigosEquipos, de tipo **ArrayDeInt****, ** quees un vector con los códigos de los equipos de usuario.
Esta función retorna un objeto del tipo **ArrayDeString ** que es un vector con las descripciones de los equipos solicitados
==== Función RecuperarDatos_DeUsuario: Recupera los datos del usuario correspondiente al IdSesionPecas ====
**CResultadoDatos_DeUsuario ** RecuperarDatos_DeUsuario **(string ** IdSesionPecas**)**
Donde el parámetro de entrada de tipo **string**, IDSesiónPecas**,** es el identificador de la sesión del cliente.
Esta función retorna un objeto del tipo **CResultadoDatos_DeUsuario ** que es una estructura con una serie de campos y vectores definidos de la siguiente manera:
**int** Codigo
**string** Descripcion
**string** CodigoExterno
Donde:
- Código: es el id de usuario
- Descripción: es el nombre del usuario
- CodigoExterno: es el código externo del usuario
==== Función RecuperarMarcas_DeUsuario: Recupera las marcas pertenecientes a una persona con el DNI dato (Marcas&Señales) ====
**CResultadoMarcas_DeUsuario**RecuperarMarcas_DeUsuario **(string **IdSesionPecas, **String** DNI**)**
Donde el parámetro de entrada de tipo **string**, IDSesiónPecas**,** es el identificador de la sesión del cliente. El segundo parámetro de entrada es también de tipo **string**, DNI, y almacena el DNI del usuario requerido.
Esta función retorna un objeto del tipo **CResultadoMarcas_DeUsuario**que es una estructura con una serie de campos y vectores definidos de la siguiente manera:
**ArrayDeMarcas **Marcas
**boolean **Resultado
Donde:
- Resultado: indica si se pudo resolver el servicio
- Marca: es de tipo ArrayDeMarcas, que es un vector definido de la siguiente manera:
**string** Codigo
**int** Tipo
cuyo significado correspondiente sería:
- Código: indica el código de la marca
- Tipo: 1=marca,2=señal
==== Función RecuperarMarcas_DeUsuarioParaJava: Recupera las marcas pertenecientes a una persona con el DNI dato (Marcas&Señales) en formato compatible Java ====
**CResultadoMarcas_DeUsuarioParaJava **RecuperarMarcas_DeUsuarioParaJava **(string **IdSesionPecas, **string** DNI**)**
Donde el parámetro de entrada de tipo **string**, IDSesiónPecas**,** es el identificador de la sesión del cliente. El segundo parámetro de entrada contiene el numero de DNI del usuario.
Esta función retorna un objeto del tipo **CResultadoMarcas_DeUsuarioParaJava **que es una estructura con una serie de campos y vectores definidos de la siguiente manera:
**ArrayDeString** Codigo
**ArrayDeInt** Tipo
**Boolean** Resultado
Donde:
- Resultado: indica si se pudo resolver el servicio
- Codigos: array con los codigos de las marcas
- Tipo: array paralelo a codigos, con los tipos de cada marca (1=marca,2=señal)
==== Función RecuperarUnaMarca: Recupera la marca de un código dado (Marcas&Señales) ====
**CresultadoByteArchivo **RecuperarUnaMarca**(string **IdSesionPecas, **string** CodMarca, **int** TipoMarca**)**
Donde el parámetro de entrada de tipo **string**, IDSesiónPecas**,** es el identificador de la sesión del cliente. El segundo parámetro de entrada CodMarca, contiene el código de la marca y es también de tipo **string**. Y por último el tercer parámetro es de tipo int, TipoMarca, cuyos valores podrán ser: 1=marca,2=señal
Esta función retorna un objeto del tipo **CResultadoByteArchivo **que es una estructura con una serie de campos y vectores definidos de la siguiente manera:
**Byte[]** Codigo
**Boolean** Resultado
Donde:
- Datos: es la imágen de la marca o señal.
- Resultado: indica si se pudo resolver el servicio.
==== Función GetArchivo: Recupera la marca con un nombre determinado (Marcas&Señales) ====
**CResultadoByteArchivo** GetArchivo**(string ** IdSesionPecas, **string** NombreArchivo**)**
Donde el parámetro de entrada de tipo **string**, IDSesiónPecas**,** es el identificador de la sesión del cliente. El segundo parámetro de entrada NombreArchivo, contiene el nombre del archivo que se quiere obtener y es también de tipo **string**.
Esta función retorna un objeto del tipo **CResultadoByteArchivo ** que es una estructura con una serie de campos y vectores definidos de la siguiente manera:
**Byte[]** Datos
**Boolean** Resultado
Donde:
- Datos: es el archivo que se está pidiendo.
- Resultado: indica si se pudo resolver el servicio.
===== Servicio Web de Fuente Auténtica =====
La URL del Servicio es [[http://fautentica.neuquen.gov.ar:8080/scripts/fapecas.exe|http://fautentica.neuquen.gov.ar:8080/scripts/fapecas.exe]].
A continuación se detallan las distintas funciones que incluye.
{{:ifuenteautenticaxml.jpg?132x51}}
==== Función Solicitar_Servicio_FA: Da respuesta a una solicitud de información a una fuente auténtica ====
**TResultadoServicioFA**Solicitar_Servicio_FA **(****string ** IdSesionPecas,**string ** coordinador, **byte[] ** clave_publica_cliente, **string ** Proveedor, **string ** Servicio,**string ** DatoAuditoria, **byte[] ** Cuerpo, **byte[] ** Firma, **boolean ** CuerpoFirmado,**boolean ** CuerpoEncriptado**)**
Descripción de los parámetros de entrada:
-IdSesionPecas: identificador de sesión del cliente
-coordinador: Identifica al coordinador que solicita el servicio
-clave_publica_cliente: clave publica de firma digital del cliente, utilizada para verificar la firma del pedido
-Proveedor: código de la fuente autentica que es dueña del servicio
-Servicio: código del servicio que solicita el cliente.
-DatoAuditoria: datos del involucrado en el servicio, por ejemplo dni o legajo.
-Cuerpo: datos adicionales opcionales si son necesarios para resolver el servicio.
-Firma: Resultado de firmar el cuerpo del mensaje con la clave privada del cliente.
-CuerpoFirmado: indica si el cuerpo fue firmado. Esto indica que hay que verificar la firma
-CuerpoEncriptado: indica si el cuerpo viene encriptado. Esto indica que hay que desencriptar el contenido primero.
La función retorna un objeto del tipo TResultadoServicioFA, que es una estructura con una serie de campos definidos de la siguiente manera:
**int** CodResultado
**byte[]** Resultado1
**byte[]** Resultado2
**byte[]** Resultado3
**byte[]** Resultado4
**byte[]** Resultado5
**byte[]** FirmaResultado1
**byte[]** FirmaResultado2
**byte[]** FirmaResultado3
**byte[]** FirmaResultado4
**byte[]** FirmaResultado5
**string** MensajeResultado
Donde:
-CodResultado: número que representa el resultado del servicio. 0 en caso de éxito. Cualquier valor distinto de cero en caso de error.
-Resultado1: array de bytes donde se devuelve el resultado del servicio. Este array puede ser un archivo xml, una imagen, un archivo binario, etc.
-FirmaResultado(1..5): resultado de firmar el resultado(1..5) respectivamente, con la clave privada de la fuente auténtica.
-Resultado(2 a 5): array de bytes con resultados adicionales.
-MensajeResultado: en caso de error, contiene un mensaje descriptivo del código de error.
==== Función ObtenerListaServicios: Ofrece la lista de servicios disponibles para un usuario ====
**TListaServiciosFA **ObtenerListaServicios **(string **IdSesionPecas, **string** Coordinador**)**
Donde el parámetro de entrada de tipo **string**, IDSesiónPecas**,** es el identificador de la sesión del cliente. El segundo parámetro de entrada es Coordinador, de tipo **string**.
Esta función retorna un objeto del tipo **TListaServiciosFA**, que devuelve una serie de campos y vectores definidos de la siguiente manera:
**boolean** Resultado
**int** CodigoResultado
**string** MensajeResultado
**TStringDynArray** Servicios
**TStringDynArray** Descripciones
**TStringDynArray** Nombres
**TStringDynArray** CodigosFuentesAutenticas
**TStringDynArray** SistemaFuenteDatos
**TStringDynArray** ComoTrabaja
**TStringDynArray** Responsable
**TStringDynArray** DatosParaTest
**TStringDynArray** RespuestaEsperada
**TStringDynArray** QuienLoUsa
Donde:
-Resultado: indica si se resolvió el servicio correctamente.
-CodigoResultado: número que representa el resultado del servicio. 0 en caso de éxito. Cualquier valor distinto de cero en caso de error.
-MensajeResultado: en caso de error, contiene un mensaje descriptivo del código de error.
-Servicios: array de cadenas de texto que contiene los códigos de los servicios disponibles en la Fuente Auténtica.
-Descripciones: array con la descripción de los servicios.
-Nombres: array con los nombres descriptivos de los servicios.
-CodigosFuentesAutenticas: array con los códigos de la fuente auténtica dueña de cada servicio
-SistemaFuenteDatos: es un array que contiene en cada elemento del mismo, el sistema que originó el dato.
-ComoTrabaja:es un array conteniendo las descripciones de cómo trabaja cada uno de los servicios para recuperar los datos.
-Responsable: es un array con los responsables de cada uno de los webservices provistos por la FA.
-DatosParaTest:es un array con parámetros de ejemplo para invocar al servicio.
-RespuestaEsperada: es un array que contiene un descripción del formato que va a tener el resultado del servicio. Por ejemplo si es xml, cual es la estructura.
-QuienLoUsa: array con los sistemas clientes que son los posibles usuarios de cada servicio.
==== Función ObtenerParametrosDeServicio: solicita los parámetros necesarios para utilizar un determinado servicio ====
**TParametrosDeServicio**ObtenerParametrosDeServicio **(****string **servicio**)**
El parámetro de entrada de tipo string, servicio, es el código del servicio que solicita el cliente.
La función retorna un objeto del tipo TParametrosDeServicio, que es una estructura con una serie de campos definidos de la siguiente manera:
**TStringDynArray** Nombres
**TStringDynArray** Tipos
**TStringDynArray** Valores
**int** CodResultado
**string** MensajeResultado
Donde:
-Nombres: array con los nombres de los parámetros necesarios para utilizar el servicio.
-Tipos: array con los tipos de datos de los parámetros solicitados por el servicio.
-Valores: array con los valores de default de los correspondientes parámetros.
-CodResultado: número que representa el resultado del servicio. 0 en caso de éxito. Cualquier valor distinto de cero en caso de error.
-MensajeResultado: en caso de error, contiene un mensaje descriptivo del código de error.
==== Función ObtenerEjemploResultadoServicio: un cliente (puede ser tanto aplicación como usuario) solicita un ejemplo de un posible resultado del servicio. ====
**TResultadoEjemploServicio**ObtenerEjemploResultadoServicio **(****string **servicio**)**
El parámetro de entrada es de tipo **string**, se llama //servicio//, y contiene el nombre del servicio al cual se quiere consultar por un ejemplo de resultado.
La función retorna un objeto del tipo TResultadoEjemploServicio, que es una estructura con una serie de campos definidos de la siguiente manera:
**int** CodResultado
**string** MensajeResultado
**byte[]** Resultado1
**byte[]** Resultado2
**byte[]** Resultado3
**byte[]** Resultado4
**byte[]** Resultado5
Donde:
-CodResultado: número que representa el resultado del servicio. 0 en caso de éxito. Cualquier valor distinto de cero en caso de error.
-MensajeResultado: en caso de error, contiene un mensaje descriptivo del código de error.
-Resultado1: array de bytes donde se devuelve el resultado del servicio. Este array puede ser un archivo xml, una imagen, un archivo binario, etc.
-Resultado(2 a 5): son array de bytes con resultados adicionales.
==== Función Echo: testea si el servidor de Fuente Auténtica está activo. ====
**TResultadoEcho** Echo (**string**texto)
Aquí el parámetro de entrada de tipo **string** se llama //texto//.
Devuelve el resultado de la llamada al servidor de autenticación en formato **TResultadoEcho**. Este tipo de dato esta compuesto de los siguientes atributos:
**Int** CodResultado (es 0 si no hubo error, sino aparece en su lugar el código del error).
**String** MensajeResultado (es el texto del mensaje de error devuelto si hubiese error).
**String** Resultado (es el texto enviado al servidor como parámetro de entrada).
===== Servicio Web de Workflow =====
La URL del Servicio es [[http://200.69.219.197:9101/scripts/wsworkflow.exe/wsdl/IWSWorkflow|http://200.69.219.197:9101/scripts/wsworkflow.exe/wsdl/IWSWorkflow]].
A continuación se detallan las distintas funciones que incluye.
{{:iwsworkflowxml.jpg?106x51}}
==== Función IniciarProceso: Da inicio a un proceso generando una instancia de tarea. Se combina con la función IniciaTarea para efectivamente ejecutarla ====
**TareaAEjecutar **//IniciarProceso// (**string ** Ticket**, int ** TareaInicial)
Donde Ticket (o IDSesión en la versión más reciente) es lo que retorna la función LoginPecas del servicio de Autenticación y TareaInicio es ID de la instancia de tarea.
Devuelve un objeto **TareaAEjecutar**, el cual es una estructura que deriva de **CBaseRespuesta**y con una serie de campos definidos de la siguiente manera:
**Int ** AnchoPantalla: Uso en pantallas dinámicas.
**Int ** AltoPantalla: Uso en pantallas dinámicas.
**Int ** RojoFondoPantalla: Uso en pantallas dinámicas.
**Int ** VerdeFondoPantalla: Uso en pantallas dinámicas.
**Int ** AzulFondoPantalla: Uso en pantallas dinámicas.
**string ** Caption: Uso en pantallas dinámicas.
**string** CondicionPrevia: condición necesaria para iniciar la tarea.
**CEncabezamiento ** Encabezamiento.
**ModoInicio** ModoDeIniciar: Pantalla automática, pantalla dinámica o programa de
terceros.
**ArrayOfElementoTexto** PrevPrmProc: parámetros de proceso previos visibles para la
tarea.
**ArrayOfElementoTexto** PrevPrmTask: parámetros de tarea previos visibles para la tarea.
**String** ProgramaEjecutable: programa o dirección de página web a iniciarse.
**ArrayOfCampoDinamico** CamposDinamicos: Uso en pantallas dinámicas.
**ArrayOfCampoPantalla** TaskParams: Lista de parámetros de tarea a ingresar.
**ArrayOfCampoPantalla** ProcessParams: Lista de parámetros de proceso a ingresar.
**ArrayOfElementoEstructura** ElementosEstructura: De uso interno de Thinknet.
El tipo **CEncabezamiento ** también es una estructura y se muestra su composición a continuación en el inciso d.
El tipo **ModoInicio** es un string y podría tener alguno de los siguientes valores: PantallaAutomatica, PantallaDinamica o ProgramaTerceros.
==== Función ListadoProceso: brinda la lista de procesos que un usuario determinado puede iniciar ====
**CRespuestaListados **//ListadoProceso// (**string** Ticket)
Donde Ticket (o IDSesión en la versión más reciente) es lo que retorna la función Login del servicio de Autenticación
El resultado es un objeto del tipo **CRespuestaListados**, que es una estructura conteniendo una serie de campos y vectores definidos de la siguiente manera:
Es un tipo heredado del tipo **CBaseRespuesta**.
Donde **CBaseRespuesta ** es la clase base de las respuestas del WF. Provee información sobre posibles errores en la ejecución del pedido.
Campos:
**Boolean** HayError: retorna verdadero cuando se produjo algún error al ejecutar el pedido.
**String** MensajeError: descripción del error.
Para completar **CRespuestaListados** se agregan los siguientes campos:
**ListaTareas** MesaEntradas
**ListaTareas** BandejaEntradas
**ListaTareas** EnEjecucion
**ListaTareas** TareasFuturas
**ListaTareas** TareasAReasignar
**ListaProcesos** Procesos
Ahora **ListaTareas** es una estructura formada por el siguiente campo:
**ArrayOfLineaTareas** Listado
Donde **ArrayOfLineaTareas** es un array de **LineaTareas**. El tipo estructurado **LineaTareas** está compuesto de los siguientes campos:
**int** Instancia (Instancia de la tarea)
**string** Tarea (Nombre de la tarea)
**string** Proceso (Nombre del proceso)
**string** Descripcion (Descripción de la instancia de la tarea)
**string** Tercero (Tercero asociado a la tarea, ejecutor o ejecutor anterior)
**int** Prioridad (prioridad de la tarea)
**int** Comentarios (Cantidad de comentarios asociados a la tarea)
**dateTime** Creacion (Fecha de creación de la instancia de tarea)
==== Función ListadoTareas: brinda la lista de las tareas en las distintas bandejas del usuario, excepto las futuras ====
**CRespuestaListados **//ListadoTareas// (**string** Ticket)
Donde Ticket (o IDSesión en la versión más reciente) es lo que retorna la función Login del servicio de Autenticación
El resultado es un objeto del tipo **CRespuestaListados**, que es una estructura conteniendo una serie de campos y vectores definidos de la siguiente manera:
Es un tipo heredado del tipo **CBaseRespuesta**
Donde **CBaseRespuesta ** es la clase base de las respuestas del WF. Provee información sobre posibles errores en la ejecución del pedido. Esta clase se describió en [[:start#funcion_listadoproceso:brinda_la_lista_de_procesos_que_un_usuario_determinado_puede_iniciar|ListadoProceso]].
==== Función AceptaTarea: Se trata de un método que permite a un usuario aceptar una tarea de su mesa de entradas y pasarlo a la bandeja de entradas. Cuando se use el cliente de workflow de Thinknet es de uso interno. ====
**CRetornoWF **//AceptarTarea// (**string** Ticket, **int** Instancia)
Donde el primer parámetro es de tipo **string**,//Ticket//, es lo que retorna la función Login del servicio de Autenticación. El segundo parámetro de entrada es de tipo **int**, //Instancia//, y contiene el id de la instancia de la tarea referida.
El resultado es un objeto del tipo **CRetornoWF,** que es una estructura conteniendo una serie de campos y vectores definidos de la siguiente manera:
Es un tipo heredado del tipo **CBaseRespuesta**.
Donde **CBaseRespuesta ** es la clase base de las respuestas del WF. Provee información sobre posibles errores en la ejecución del pedido. Esta clase se describió en detalle en [[:start#funcion_listadoprocesobrinda_la_lista_de_procesos_que_un_usuario_determinado_puede_iniciar|ListadoProceso]]. A este tipo estructurado heredado se le agrega un campo mas de tipo array de **CEncabezamiento** denominado //Encabezamiento//, el cual provee la información general de cualquier comando. La estructura del tipo **CEncabezamiento** se muestra a continuación:
**Int** ActionClass: código del comando a ejecutar (ver [[:start#tabla_1:codigo_de_comandos_disponibles|tabla 1]]).
**Int** SubAction: código de uso interno.
**Int** ActionKey: código según [[:start#tabla_2:modo_de_ejecutar_tareas|tabla 2]].
**Int** UserCode: usuario ejecutante.
**String** SessionCode: texto que retorna inalterado (para uso interno).
**Int** TaskClass: código de definición de la tarea.
**Int** TaskSample: instancia de la tarea involucrada.
**Int** ProcessSample: Instancia del proceso involucrado.
**Int** ProcessClass: código de definición del proceso.
**Int** SampleVersion: Versión de la definición del proceso.
==== Función ListadoTareasFuturas: Lista las tareas futuras del usuario, es decir, las tareas en bandejas de otros usuarios que se crearon a partir de tareas ejecutadas por el usuario correspondiente al ticket ====
**CRespuestaListados**// ListadoTareasFuturas// (**string** Ticket)
Donde Ticket (o IDSesión en la versión más reciente) es lo que retorna la función Login del servicio de Autenticación
El resultado es un objeto del tipo **CRespuestaListados**, que es una estructura conteniendo una serie de campos y vectores definidos de la siguiente manera:
Es un tipo heredado del tipo**CBaseRespuesta**
Donde **CBaseRespuesta ** es la clase base de las respuestas del WF. Provee información sobre posibles errores en la ejecución del pedido. Esta clase se describió en detalle en el inciso b).
==== Función AjustarListaDinamica: Ajusta el contenido de una lista dinámica cuando algún campo del que depende la misma se ha modificado. Es de uso interno para pantallas dinámicas si se usa el cliente workflow de Thinknet. ====
==== Función CompletoPantallaAutomatica: Indica al WF que una tarea que se ejecuta mediante pantalla automática se ha completado. Esde uso interno cuando se usa workflow de Thinknet. ====
**CRetornoWF**// CompletoPantallaAutomatica// (**string** Ticket, **CRespuestaAut** Pantalla)
Donde el primer parámetro de entrada es de tipo **string**, //Ticket// (o IDSesión en la versión más reciente) es lo que retorna la función Login del servicio de Autenticación.
El segundo parámetro es del tipo **CRespuestaAut**, Pantalla, que hereda a la clase CBaseRespuesta (la cual se explicó más [[:start#funcion_listadoproceso:brinda_la_lista_de_procesos_que_un_usuario_determinado_puede_iniciar|arriba]]), es la clase asociada a la ejecución de tareas usando pantallas automáticas. Los campos agregados a este tipo son:
**Int ** CodigoRetorno: código de retorno de la rutina. Si es 0 significa ok.
**CEncabezamiento ** Encabezamiento: datos generales del pedido.
**ArrayOfParamRespAut** ParametrosTarea: Lista de los parámetros de tarea
asociados.
**ArrayOfParamRespAut** ParametrosProceso: Lista de los parámetros de proceso
asociados.
A su vez el tipo **ArrayOfParamRespAut ** es un array de objetos del tipo **ParamRespAut**, el cual contiene información general sobre los parámetros y está compuesto de los siguientes campos:
**int** Codigo : código del parámetro en la base Pecas.
**int** Clase : tipo de variable asociada al parámetro según tabla 3.
**String** Valor: contenido del parámetro.
El resultado es un objeto del tipo **CRetornoWF**, que es una estructura conteniendo una serie de campos y vectores definidos en el inciso d).
==== Función DispararTarea: Inicia la ejecución de una tarea a partir de su instancia. ====
**TareaAEjecutar**// DispararTarea//(**string** Ticket, **int** Instancia)
Donde el primer parámetro de entrada es de tipo **string**, Ticket (o IDSesión en la versión más reciente) es lo que retorna la función Login del servicio de Autenticación.
El segundo parámetro es del tipo **int**, Instancia, contiene el ID de la instancia de la tarea
****El resultado es un objeto del tipo **TareaAEjecutar, **heredado de** CBaseRespuesta**, que es una estructura conteniendo una serie de campos y vectores definidos previamente en el inciso a).
==== Función DownloadArchivo: Se usa para recuperar un archivo del repositorio. ====
**CRetornaDownload**// DownloadArchivo //(**string** Ticket, **string** Alias, **string** Tabla, **string** Campo,**string** Archivo, **string** Referencia)
Donde todos los parámetros de entrada son de tipo **string**, el primero, //Ticket// (o IDSesión en la versión más reciente) es lo que retorna la función Login del servicio de Autenticación. Los parámetros de entrada //Alias//, //Tabla//, //Campo//, //Archivo// son los que identifican al documento. El último parámetro, //Referencia//, es el texto que retorna inalterado en la respuesta y se usa para asociar las respuestas a los pedidos
****El resultado es un objeto del tipo **CRetornaDownload, **heredado de** CBaseRespuesta**, que es una estructura conteniendo una serie de campos y vectores definidos previamente en el inciso d). Para completar este objeto de tipo **CRetornaDownload**, se agregaron los siguientes campos:
**String** Referencia (ayuda a asociar la respuesta al pedido)
**String** NombreArchivo (Nombre del archivo)
**Byte[]** Bytes (Contenido del archivo)
==== Función EjecutarQueryLista: Se usa para ejecutar un query desde el workflow. ====
**CRetornaListaDinamica**// EjecutarQueryLista//(**string** Ticket, **string** Campo, **string** Alias, **string** Query, **dateTime** FechaPedido)
Donde los tres primeros parámetros de entrada son de tipo **string**, el primero, //Ticket// (o IDSesión en la versión más reciente) es lo que retorna la función Login del servicio de Autenticación. El parámetro de entrada //Campo//, es el campo asociado a la lista que se refresca.
****El resultado es un objeto del tipo **CRetornaListaDinamica, **heredado de** CBaseRespuesta**, que es una estructura conteniendo una serie de campos y vectores definidos previamente en el inciso d). Para completar este objeto de tipo **CRetornaListaDinamica**, se agregaron los siguientes campos:
**String** Campo
**String** FechaHora (momento en que realizo la consulta)
**ArrayOfElementoLista **Lista (Datos obtenidos mediante el query)
Y aquí **ArrayOfElementoLista** es un array de objetos del tipo **ElementoLista**. **ElementoLista** está compuesto de los siguientes campos o atributos:
**String** Codigo
**String** Descripcion
==== Función EnviarCorreo: Envía un correo electrónico desde el workflow. ====
**CRetornaBooleano**// EnviarCorreo//(**string** Ticket, **string** ListaDirecciones, **string** Asunto, **string** Texto)
Donde todos los parámetros de entrada son de tipo **string**, el primero, //Ticket// (o IDSesión en la versión más reciente) es lo que retorna la función Login del servicio de Autenticación. El parámetro de entrada //ListaDirecciones//, contiene las direcciones de email a las cuales el correo será enviado. El tercer parámetro de entrada, //Asunto//, es el asunto asociado a este email. Y por último //Texto// contiene el mensaje que dentro del email.
****El resultado es un objeto del tipo **CRetornaBooleano, **heredado de** CBaseRespuesta**, que es una estructura conteniendo una serie de campos y vectores definidos previamente en el inciso d). Para completar este objeto de tipo **CRetornaBooleano**, se agregó el siguiente campo:
**Boolean** ProcesoOK (contendrá el valor True o False dependiendo si el proceso funcionó
correctamente).
==== Función ObtenerProximoAutonumerico: Determina el próximo autonumérico. Es de uso interno para pantallas dinámicas. ====
==== Función ObtenerProximoCodigoArchivo: Determina el código del próximo archivo a registrar. ====
**CRetornaEntero**// ObtenerProximoCodigoArchivo//(**string** Ticket)
Donde el parámetro de entrada es de tipo **string**, //Ticket// (o IDSesión en la versión más reciente) es lo que retorna la función Login del servicio de Autenticación.
****El resultado es un objeto del tipo **CRetornaEntero, **heredado de** CBaseRespuesta**, que es una estructura conteniendo una serie de campos y vectores definidos previamente en el inciso d). Para completar este objeto de tipo **CRetornaEntero**, se agregó el siguiente campo:
**int** ValorEntero (número del código del próximo archivo a registrar)
==== Función ReasignarTarea: Reasigna una tarea a otro usuario, cambiando la asignación original del workflow.. Si se usa fuera del entorno del cliente Thinknet hay que asegurarse de que el usuario tenga los derechos para hacerlo. ====
**CBaseRespuesta**// ReasignarTarea//(**string** Ticket,** int** InstanciaTarea, **int** AsignarUsuario)
Donde el primer parámetro de entrada es de tipo **string**, //Ticket// (o IDSesión en la versión más reciente) es lo que retorna la función Login del servicio de Autenticación. El segundo parámetro es de tipo **int**, //InstanciaTarea//, e identifica el número de la instancia.
****El resultado es un objeto del tipo **CBaseRespuesta**, que es una estructura conteniendo una serie de campos y vectores definidos previamente en el inciso d).
==== Función RetrotraerTarea: Revierte la ejecución de una tarea y, según lo que se indique, reejecuta la anterior o deja la tarea de referencia lista para ejecutarse otra vez. ====
**CBaseRespuesta**// RetrotraerTarea//(**string** Ticket,** int** InstanciaTarea, **boolean** ReEjecutarAnterior)
Donde el primer parámetro de entrada es de tipo **string**, //Ticket// (o IDSesión en la versión más reciente) es lo que retorna la función Login del servicio de Autenticación. El segundo parámetro es de tipo **int**, //InstanciaTarea//, e identifica el número de la instancia. Y el último parámetro de entrada es de tipo **boolean**, //ReEjecutarAnterior//, o sea si se reejecuta o no la tarea anterior.
****El resultado es un objeto del tipo **CBaseRespuesta**, que es una estructura conteniendo una serie de campos y vectores definidos previamente en el inciso d).
==== Función UploadArchivo: Se usa para recuperar un archivo del repositorio. ====
**CRetornaUpload**// UploadArchivo// (**string** Ticket, **string** Alias, **string** Tabla, **string** Campo, **string** Archivo, **string** Referencia, **byte[]** DatosArchivo)
Donde todos los parámetros de entrada son de tipo **string**, el primero, //Ticket// (o IDSesión en la versión más reciente) es lo que retorna la función Login del servicio de Autenticación. Los parámetros de entrada //Alias//, //Tabla//, //Campo//, //Archivo// son los que identifican al documento. El anteúltimo parámetro, //Referencia//, es el texto que retorna inalterado en la respuesta y se usa para asociar las respuestas a los pedidos. El último parámetro es un array de bytes, //DatosArchivo//, el cual almacena el contenido del archivo.
El resultado es un objeto del tipo **CRetornaUpload, ** heredado de**CBaseRespuesta**, que es una estructura conteniendo una serie de campos y vectores definidos previamente en el inciso d). Para completar este objeto de tipo **CRetornaUpload**, se agregaron los siguientes campos:
**Int** Codigo (código asignado al archivo)
**String** Referencia (la referencia que se envió en el pedido)
==== Tabla 1: Código de comandos disponibles. ====
WF_ACTION_USER_ENABLE=1; //verifica que el usuario pueda ejecutar la tarea WF_ACTION_FILL_ROL_LIST=2; // lista los roles que puede asumir un usuario
WF_ACTION_TASK_ENABLE=5; //crea entradas en TasksPending WF_ACTION_WRITE_AGRTM=4; // inserta un compromiso
WF_ACTION_TASK_COMPLETED=6; //instancia de tarea cumplida WF_ACTION_PROCESS_CREATE=7; // crea una instancia de un proceso
WF_ACTION_LIST_TASKS=8; //llena una lista con las tareas a ejecutar WF_ACTION_ACCEPT_TASK=9; // acepta una instancia de tarea (de mesa a bandeja)
WF_ACTION_LEAVE_TASK=10; //aborta la tarea WF_ACTION_USER_ENTRY=11; // el usuario entra al WF
WF_ACTION_USER_LIST=12; //lista de usuarios WF_ACTION_NEXT_TASKS=14; // listado de las tareas próximas a las propias
WF_ACTION_BEGIN_DIALOG=16; //inicia un dialogo WF_ACTION_ACCEPT_DIALOG=18; // se envía la respuesta de un dialogo al WFS
WF_ACTION_PROCESS_LIST=19; //lista de procesos que puede iniciar el usuario WF_ACTION_TASK_ASSIGN=20; // asigna tareas pendientes
WF_ACTION_TASK_RUN=21; //corre una instancia de tarea (desde bandeja) WF_ACTION_LIST_MODIFIED=22; // se modifico lista de tareas (actualizar)
WF_ACTION_TRY_PENDING=24; //el usuario trata de iniciar una tarea pendiente WF_ACTION_LIST_ALL=25; // lista de procesos, tareas y tareas próximas
WF_ACTION_LEAVE_CLIENT=27; //el cliente (de la tarea) aborta la ejecución WF_ACTION_LIST_AGRTM=28; // Lista los compromisos de una tarea
WF_ACTION_LOAD_AGRTM=29; //edita un compromiso WF_ACTION_TASK_DIALOG=30; // muestra un dialogo
WF_ACTION_PREV_PARAMS=31; //muestra la historia de parámetros previa a una tarea WF_ACTION_TASK_RETURN=32; // retorna la tarea que estaba en la bandeja de entrada
WF_ACTION_FORCE_TASK=33; //pone en la bandeja de entrada WF_ACTION_TASK_ASSIGN_DINAM=40; // define y asigna tareas dinamicas
WF_ACTION_ASK_COMMAND=41; //pide un comando de la cola de default WF_ACTION_UNDO_TASK=42; // retrotraer tarea y dejarla en el usuario anterior
WF_ACTION_RETURN_TO_TASK=44; //después de correr en 4×4 retornar a una tarea WF_ACTION_PARAM_MOD=45; // indicar que se desea modificar parámetros
WF_ACTION_CLOSE_THREAD=80; //cierra un hilo dinámico WF_ACTION_PREOPEN_THREAD=81; // manda el listado de posibles tareas
WF_ACTION_OPEN_THREAD=82; //inicia la ejecución de un subproceso dinámico WF_ACTION_NEW_DYN_TASK=84; // muestra la pantalla de completar y reiniciar
WF_ACTION_ADD_DYN_TASK=85; //completa una tarea dinámica e inicia otra WF_ACTION_ASK_PARAM_MOD=86; // lista de parámetros a modificar
WF_ACTION_MOD_PARAMETER=88; //modifica un parámetro WF_ACTION_SEND_MAIL=89; // envía un email (desde el WFClient)
WF_ACTION_TASK_STATE=90; //pregunta como esta la tarea WF_ACTION_ROLLBACK_TASK=91; // retrotraer una tarea
WF_ACTION_LIST_NEXT_TASKS=92; //listar las tareas próximas WF_ACTION_INFORM_COMPLETED=93; // la tarea se informa
WF_ACTION_UPDATE_DESC=94; //actualizar descripciones de tareas (1 vez) WF_ACTION_SET_USER=95; // Envía el usuario como parámetro ExternUser
WF_ACTION_PRINT_WORD=96; //Imprimir archivos Word WF_ACTION_QUERY_UPDATE=97; // pide actualizar listas
WF_ACTION_ROL_LIST=98; //lista los roles de un proceso WF_ACTION_WORK_LIST=99; // lista de puestos de trabajo
WF_ACTION_GET_CLIENTNAME=100; //trae nombre y código externo del cliente WF_ACTION_START_PROCESS=101; // desde un programa de tercero
WF_ACTION_FIX_PARAMS=102; //desde un programa de tercero WF_ACTION_TIMER=104; // el WFS pide el proceso de timer
WF_ACTION_GET_AUTOINC=106; //obtiene Autoincrement y registra WF_ACTION_GET_MULT_KEY=108; // obtiene multiple key
WF_ACTION_FILL_CFG=109; //llena la ventana con FillCfgScreen WF_ACTION_QUERY=110; // para correr un query
WF_ACTION_WRITE_CFG=111; //para insertar un registro WF_ACTION_DELETE_CFG=112; // para borrar un registro
WF_ACTION_MEN_CFG=114; //para pedir el menú WF_ACTION_ALL_PEND=115; // crea todas las tareas pendientes
WF_ACTION_ALL_ARROWS=116; //crea flechas para las tareas truncas WF_ACTION_INIT_PROCESS=118; // inicia un proceso dando por ejecutada la primera tarea
WF_ACTION_SEG_PROC=119; //arma los datos para el seguimiento WF_ACTION_DELETE_PROC=120; // borra una instancia de proceso
WF_ACTION_TIMER_EVENT=121; //dispara la rutina para verificar si hay eventos de tiempo WF_ACTION_USER_DEP=122; // trae una lista de usuarios dependientes del usuario
WF_ACTION_NEXT_FILE=123; //retorna el código del próximo archivo. WF_ACTION_QUERY_TABLE=124; // ejecuta un query sobre una tabla del WF.
WF_ACTION_INIT_THREAD=125; //inicia un hilo de ejecución paralelo. WF_ACTION_BLOCK_PROCESS=128;// bloquea la ejecucion de un proceso (instancia).
WF_ACTION_UNBLOCK_PROCESS=129; //desbloquea el proceso. WF_ACTION_COMPLETED_NO_LIST=140; // Completa la tarea pero no refresca las listas.
==== Tabla 2: Modo de ejecutar tareas. ====
DIBUJA_TAREA_SALIDA=3; //Es una tarea de cierre del proceso. DIBUJA_TAREA_COMUN=1; // Tarea regular.
DIBUJA_TAREA_PANTALLA=27; //Es una tarea asociada a una pantalla automática. DIBUJA_TAREA_COLABORATIVA=4; // Tarea colaborativa (documentación).
DIBUJA_TAREA_ENTRADA=6; //Tarea de inicio de un proceso. DIBUJA_TAREA_INVOCA_PROCESO=8; // Invoca a otro proceso y sigue ejecutando.
DIBUJA_TAREA_DISPARA_PROCESO=9; //Dispara otro proceso y queda a la espera. DIBUJA_TAREA_AUTOMATICA=10; //nicamente ejecuta una rutina.
DIBUJA_TAREA_WF_LIBRE=12; //Ejecuta una tarea de WF libre. DIBUJA_TAREA_DISPARA_PROGRAMA=25; // Dispara un programa de terceros.
==== Tabla 3: Tipo de variable para parámetros de tareas automáticas. ====
WF_TYPE_INTEGER = 1; //entero. //
//WF_TYPE_FLOAT = 2; // real.
WF_TYPE_DATE = 3; //fecha. //
//WF_TYPE_BOOLEAN = 5; // booleano.
WF_TYPE_STRING = 6; //texto. //
===== Web Service Externo de Fuente Auténtica =====
//Para definir un web service que pueda ser consumido directamente por el sistema de integrabilidad es necesario que respecte cierta estructura interna: //
//El web service debe tener el nombre **IFuenteAutenticaExterna**. El método para solicitar el servicio debe tener el nombre // Solicitar_Servicio_FA//y////tener////los////siguientes////parámetros de entrada //
//**TResultadoServicioFA **//Solicitar_Servicio_FA//(**string** Servicio, **string** DatoAuditoria, **byte[]** Cuerpo) //
//En el caso de implementar más de un servicio, el parámetro // Servicio//identifica////cuál////se////quiere utilizar. //
//El parámetro // DatoAuditoria//es////la////lista////de////parámetros////necesarios para hacer la consulta. Con el formato nombre=valor. Si es necesario pasar más de un parámetros, se deben separar con punto y coma. //
//Por ejemplo, para pasar dos parámetros //
//dni=11222333;legajo=abc123 //
//El parámetro // Cuerpo//puede////ser////utilizado////para////enviar////información adicional (un texto en formato **XML**, un archivo, una imagen, un certificado, etc) que pueda ser necesario para resolver el servicio. //
//El resultado del método es una estructura llamada **TResultadoServicioFA**, que contiene los siguientes campos: //
//**int** CodResultado //
//**byte[]** Resultado1 //
//**byte[]** Resultado2 //
//**byte[]** Resultado3 //
//**byte[]** Resultado4 //
//**byte[]** Resultado5 //
//**byte[]** FirmaResultado1 //
//**byte[]** FirmaResultado2 //
//**byte[]** FirmaResultado3 //
//**byte[]** FirmaResultado4 //
//**byte[]** FirmaResultado5 //
//**String** MensajeResultado //
//-CodResultado: un cero indica que el servicio se resolvió correctamente. Otro número indica algún tipo de error. Este número depende únicamente del implementador del servicio. //
//-MensajeResultado: en caso de error se puede adjuntar un mensaje explicando el código de resultado. //
//-Resultado1, Resultado2…Resultado5, son arrays de bytes donde se devuelven hasta 5 resultados diferentes. Cada array puede contener un archivo, imagen, certificado, documento, texto en formato XML, etc., transformado a una secuencia de bytes. Si el resultado es el resultado de una consulta a una base de datos, se recomienda transformar el resultado a XML y cargar el texto correspondiente en el campo Resultado. //
//Si se utiliza .Net, se puede consultar la siguiente documentación para guardar el resultado de un Dataset a XML: [[http://msdn.microsoft.com/es-es/library/sa57x5f2(v=vs.80).aspx|http://msdn.microsoft.com/es-es/library/sa57x5f2(v=vs.80).aspx]] //
//Para que el resultado sea compatible con el sistema E-Fotocopias debe ser un texto XML bajo el formato RowsetSchema de Microsoft. Ver ejemplo más abajo. Puede encontrar una guía para saber cómo armar un documento XML con este formato en este enlace: [[http://msdn.microsoft.com/en-us/library/windows/desktop/ms676547(v=vs.85).aspx|http://msdn.microsoft.com/en-us/library/windows/desktop/ms676547(v=vs.85).aspx]] //
//Para ver la definición de un web service de ejemplo, se puede consultar la siguiente URL [[http://integradesa.neuquen.gov.ar:8080/scripts/faexternav2.exe/wsdl/IFuenteAutenticaExterna|http://integradesa.neuquen.gov.ar:8080/scripts/faexternav2.exe/wsdl/IFuenteAutenticaExterna]] //
//-FirmaResultado1, FirmaResultado2,…,FirmaResultado5: son arrays de bytes que contiene las firmas correspondientes a cada resultado. //
//- Ejemplo de archivo XML con formato RowsetSchema //
...
===== SDK para Sistemas Clientes =====
Con el fin de facilitar el desarrollo de los sistemas clientes, se proveé de librerías en C# para que el programador/desarrollador de un Sistema Cliente pueda solicitar los Servicios provistos por el modelo de Integrabilidad con el solo uso de 5 funciones.
Estas funciones encapsulan la operación de los Web Services de Integrabilidad simplificando su utilización. Esta librería opera con los siguientes componentes del modelo de integrabildiad, que son:
- **Componente de Autenticación**: Permite autenticar a un usuario sobre un servidor de directorio LDAP.
- function LoginPecas
- function ObtenerInvolucrado
- **Componente menú de autorizaciones**: Permite obtener las autorizaciones de un usuario sobre el modelo MABAC, esta lista de opciones autorizadas se presentan como un menú para un usuario.
- function RecuperarMenuDeUsuario
- functionRecuperarDatos_DeUsuario
- function SolicitarServicioFA
- **Componente de Firma Digital**: Permite firmar los envíos y desencriptar los mensajes recibidos, estas funcionalidades están totalmene encapsuladas y resultan transparentes al programador solo se debe.
- En el programa c# se solicita el pedido, lo único que se requiere es pasar el certificado, la firma y encriptación se hace dentro de la DLL. La función recibe el certificado como un archivo (el path del archivo).
- El programa c# es el responsable de tener almacenado el certificado en algún lugar seguro del equipo.
/
==== Integrabilidad.cs ====
En este módulo se implementa la clase Integrabilidad, que es una interfaz para las funciones contenidas en la librería DllInteg.dll.
public class DatosUsuario {
public int Codigo;
public string Descripcion;
public string CodigoExterno;
}
public class ItemMenuDeUsuario {
public int Codigo;
public string Descripcion;
public int CodigoPadre;
public string CodigoExterno;
public int NivelAutorizacion;
public string Programa;
public string Comentario;
}
public class MenuUsuario {
public bool resultado;
public List Items;
}
public class Integrabilidad {
public string Login( string username, string password);
public MenuUsuario RecuperarMenuUsuario ( string IDSesionPecas);
publicDatosUsuario RecuperarDatosDeUsuario ( string IdSesionPecas);
publicbool SolicitarServicio ( string IDSesionPecas, string Cliente, string Proveedor, string Servicio, string Involucrado, string CertificadoFirma, string PassPhrase, out string archivoresultado );
}
==== Librería DLLInteg.dll ====
Contiene funciones para invocar a los web services de Autenticacion y Autorización. Permiten hacer el login en integrabilidad, recuperar la lista de servicios disponibles y solicitar un servicio. Al solicitar el servicio se puede firmar y encriptar el pedido y al llegar el resultado, desencriptarlo y verificar la firma de la FA.
function SolicitarServicioFA( IDSesionPecas: pchar;
Cliente : pchar;
Proveedor : pchar;
Servicio : pchar;
Involucrado : pchar;
Operador : pchar;
Cuerpo: TByteDynArray;
Certificado : pchar;
PassPhrase : pchar;
FirmarCuerpo : boolean;
EncriptarCuerpo : boolean;
URL : pchar; archivoresultado : pchar;
) : boolean; stdcall;
function LoginPecas( usuario, password, url, IDSesionPecas : pchar ) : boolean; stdcall;
function ObtenerInvolucrado( idSesion, url, Involucrado : pchar ) : boolean; stdcall;
function RecuperarMenuDeUsuario( idSesion, url, CodigoMenuRaiz, Codigo, Descripcion, CodigoPadre, CodigoExterno, NivelAutorizacion, Programa, Comentario: pchar; var Cantidad : integer ) : boolean; stdcall;
function RecuperarDatos_DeUsuario( IdSesionPecas : pchar; URLAutorizador: pchar; var Codigo: integer; Descripcion : pchar; CodigoExterno : pchar ): boolean; stdcall;
===== Registros para auditoría ====
==== Registros de Auditoria ====
En el Servidor Coordinador se encuentra la base de datos PecasLog donde se registran todas las actividades de intercambio de información que se producen. Estos registros son utilizados para las actividades de auditoría por cualquiera de los actores.
Se describen a continuación las tablas y códigos utilizados:
**Tabla: AuditoriaFA** Registra los servicios que un sistemas cliente solicita de una fuente auténtica. Registra si el servicio está autorizado, cual es el involucrado y si el servicio se ejecutó correctamente.
| ^ ^
^Cliente| Es el código del cliente que solicita el servicio|
^Proveedor| Es el código de la FA que brinda el servicio|
^Servicio| Es el código del servicio que se quiere consumir|
^ResultadoProveedor| código de resultado de la ejecución del servicio, 0=exitoso, -1=alguna excepción, 1, 2, 3, …: distintos códigos de error.|
^MensajeResultado| En caso de error, es una descripción del error, relacionado al campo ResultadoProveedor|
^ResultadoCliente| Código de resultado que puede informar el cliente. 0=exitoso, cualquier otro número para error.|
^PedidoValido |+ Y: esto indica que el pedido es válido, es decir, que existe el cliente, existe la FA, existe el servicio en la FA y el cliente está autorizado a utilizarlo.\\ + N: esto indica que el pedido no se puede realizar, porque no se cumple alguna razón de las anteriores|
^Fecha |Registra la fecha y hora de resolución del servicio. |
^NumPedido |Es el identificador único de la transacción |
^DatoAuditoria |Es el involucrado en el servicio, es decir de quién se solicita información. Por ejemplo dni=11.222.333 o legajo=9999 |
^Cuerpo |Datos adicionales necesarios para resolver el servicio. Puede ser un archivo de texto, un archivo binario, etc. |
^TipoResultado |1: si hay error, significa que lo informó el coordinador\\ 2: si hay error, significa que lo informó la FA|
^Operador| Si el sistema cliente tiene otra forma de validación de usuarios, puede informar quien es el operador del sistema que solicita el servicio.|
**Tabla: Resultados ** que contiene la descripción de los posibles resultados de error al solicitar un servicio. Describe el contenido del campo ResultadoProveedor de la tabla AuditoriaFA.
{{ :tablaposibleserroresws.jpg?nolink |}}
==== Registros de tiempos ====
En la base PecasLog también se encuentran tablas cuyo objetivo es registrar parámetros de tiempo para poder desarrollar las actividades de control y monitoreo del modelo en operación.
**Tabla: AuditoriaFATiempos**: para registrar el tiempo de ejecución de cada servicio del coordinador.
| ^ ^
^Mensaje| Es el código del ws que se ejecuta (ver tabla AuditoriaFAMensajes)|
^Inicio| Es el instante donde recibe el pedido desde el Cliente.\\ Si el que informa es una FA, es el instante en que recibe el pedido del Coordinador|
^Fin| Es el instante en que recibe la respuesta de la FA.\\ Si el que informa es una FA, es el instante en que completa el servicio.|
^NumPedido| Si el mensaje = 6, corresponde a una solicitud de servicio, se guarda el número de pedido de la tabla AuditoriaFA.\\ Si el mensaje <> 6, el NumPedido será 0|
**Tabla: AuditoriaFATiempos**
{{:tablaauditoriatiemposfa.jpg?nolink|}}
**Tabla: AuditoriaFAMensajes:** contiene los códigos de mensajes y sus descripciones
| ^ ^
^Mensaje| Códigos de mensajes soportados en integrabilidad|
^Descripción| Descripción del mensaje|
**AuditoriaFAMensajes**
{{:wiki:tablaauditoriamensajesfa.jpg?nolink|}}
===== Anexo 1 =====
La URL del Servicio es [[http://autoriza.neuquen.gov.ar:8080/scripts/autorizacion.exe/wsdl/IAutorizacion|http://autoriza.neuquen.gov.ar:8080/scripts/autorizacion.exe/wsdl/IAutorizacion]]. A continuación se detallan las distintas funciones que incluye.
==== Función Solicitar_Servicio (obsoleta, reemplazada por la versión 3): El cliente solicita al autorizador la ejecución de un servicio ====
El cliente
\\