Manual de Acceso a webservice desde base de datos

Anuncio
Acceso a web services desde
Base de datos
Versión 1.0
Área de Integración y Arquitectura de Aplicaciones
Manual de Modelo de datos USU
Hoja de Control
Título
Acceso a web services desde Base de datos
Documento de Referencia
Responsable
Área de Integración y Arquitectura de Aplicaciones
Versión
1.0
Fecha Versión
26/06/2013
Registro de Cambios
Versión
Causa del Cambio
Responsable del Cambio
Fecha del Cambio
Área de Integración y Arquitectura de
1.0
Versión inicial del documento
Aplicaciones
2 de 8
26/06/2013
Manual de Modelo de datos USU
Índice
1.
INTRODUCCIÓN ................................................................................................................................................................ 4
2.
NORMATIVA ....................................................................................................................................................................... 4
3.
EJEMPLO ............................................................................................................................................................................. 4
3 de 8
Manual de Modelo de datos USU
1. INTRODUCCIÓN
Para acceder a webservices desde base de datos es necesario crear un package con la nomenclatura indicada en
éste documento. Éste package utilizará los métodos de SIS_PACK_SOAP que es el que interface necesario para
acceder al webservice.
2. NORMATIVA
Crear un package con la siguiente nomenclatura:
·
Si no se accede a tablas de Aplicación (Puede acceder a tablas genéricas que existen en todas las bases
de datos) : WS_PACK_[nombre]
Ejemplo:
WS_PACK_UPLOAD_0001
Los packages con ésta nomenclatura irán ubicados en todas las bases de datos donde exista el esquema
DBA_WS
·
Si accede a tablas de Aplicación: XXXX_PACK_WS_[nombre]
Ejemplo:
MENT_PACK_WS_0001
3. EJEMPLO
CREATE OR REPLACE PACKAGE WS_PACK_UPLOADDDD_0001 IS
/*******************************************************************************************
* FUNCTION:
CARGAR_FICHERO_URL
*
* DESCRIPCIÓN: Llama al webservice del upload, que realiza carga de un fichero en base de datos, pasandole la url del fichero
*
*
* PARÁMETROS:
*
w_aplicacion: Parámetro Obligatorio. nombre de la aplicación. Debe tener autorización.
*
w_instanciaOracle: Parámetro Obligatorio. Base de datos
*
w_usuario: Parámetro Obligatorio. Usuario.
*
w_clave: Parámetro Obligatorio. Clave única que va a identificar al registro en las tablas genericas upload
*
Por ejemplo:USER_YYYYMMDD_HH24MISS
*
w_nombreFichero: Parámetro Obligatorio
*
w_URL: Parámetro obligatorio. Url del Fichero a cargar en b.d.
*
w_plantilla. Si se utiliza plantilla , el nombre de la plantilla
*
w_comprimir. Parámetro Obligatorio. Valores: S
*
N
*
z_Cd_Mensaje_Err: Parámetro de salida. Codigo de Mensaje de Error
*
z_Ds_Mensaje_Err: Parámetro de Salida. Descripciòn de Mensaje de Error
*
* VALORES DE RETORNO DE LA FUNCIÓN:
True
4 de 8
Manual de Modelo de datos USU
*
False
*
* CODIGOS Y DESCRIPCIONES DE ERROR:
*
Codigo de Error
*
---------------
*
1
Descripción
------------
Los parámetros w_aplicacion, w_instanciaOracle, w_usuario, w_clave, w_nombreFichero, w_URL,
w_comprimir son obligatorios.
*
2
*
3
*
100
El parámetro w_comprimir debe tener el valor S ó N
Error controlado que devuelve el webservice: false : descripción del error
Cualquier error o excepción de Oracle: SQLERRM
*
* NOTA: El webservice devolverá : true
*
false : descripción del error (si no existe la url del fichero devolverá ésta situación
*
********************************************************************************************/
FUNCTION CARGAR_FICHERO_URL
(w_aplicacion IN Varchar2,
w_instanciaOracle IN Varchar2,
w_usuario IN Varchar2,
w_clave IN Varchar2,
w_nombreFichero IN Varchar2,
w_URL IN Varchar2,
w_plantilla IN Varchar2,
w_comprimir IN Varchar2,
z_Cd_Mensaje_Err OUT Varchar2,
z_Ds_Mensaje_Err OUT Varchar2) RETURN Boolean;
END;
/
CREATE OR REPLACE PACKAGE BODY WS_PACK_UPLOADDDD_0001 IS
------------------------------------------------------------ Composición de Variables SOAP DESARROLLO -------------------------------------------------------------------------- b_Url_Request Varchar2(2000) := 'xmlns="'||'http://servicio.upload_ws'||'"'; --namespace
-- b_Url_Response Varchar2(2000) := 'xmlns:ns1="'||'http://servicio.upload_ws'||'"'; --namespace
-- b_Url_Wsdl Varchar2(2000) := 'http://desarrollo.madrid.org/upload_ws/services/ServicioUpload'||'?WSDL';
------------------------------------------------------------ Composición de Variables SOAP PRODUCCION ------------------------------------------------------------------------b_Url_Request Varchar2(2000) := 'xmlns="'||'http://servicio.upload_ws'||'"'; --namespace
5 de 8
Manual de Modelo de datos USU
b_Url_Response Varchar2(2000) := 'xmlns:ns1="'||'http://servicio.upload_ws'||'"'; --namespace
b_Url_Wsdl Varchar2(2000) := 'http://intranet.madrid.org/upload_ws/services/ServicioUpload'||'?WSDL';
/*******************************************************************************************
* FUNCTION:
CARGAR_FICHERO_URL
*
* DESCRIPCIÓN: Llama al webservice del upload, que realiza carga de un fichero en base de datos, pasandole la url del fichero
*
*
* PARÁMETROS:
*
w_aplicacion: Parámetro Obligatorio. nombre de la aplicación. Debe tener autorización.
*
w_instanciaOracle: Parámetro Obligatorio. Base de datos
*
w_usuario: Parámetro Obligatorio. Usuario.
*
w_clave: Parámetro Obligatorio. Clave única que va a identificar al registro en las tablas genericas upload
*
Por ejemplo:USER_YYYYMMDD_HH24MISS
*
w_nombreFichero: Parámetro Obligatorio
*
w_URL: Parámetro obligatorio. Url del Fichero a cargar en b.d.
*
w_plantilla. Si se utiliza plantilla , el nombre de la plantilla
*
w_comprimir. Parámetro Obligatorio. Valores: S
*
N
*
z_Cd_Mensaje_Err: Parámetro de salida. Codigo de Mensaje de Error
*
z_Ds_Mensaje_Err: Parámetro de Salida. Descripciòn de Mensaje de Error
*
* VALORES DE RETORNO DE LA FUNCIÓN:
True
*
False
*
* CODIGOS Y DESCRIPCIONES DE ERROR:
*
Codigo de Error
*
---------------
*
1
Descripción
------------
Los parámetros w_aplicacion, w_instanciaOracle, w_usuario, w_clave, w_nombreFichero, w_URL,
w_comprimir son obligatorios.
*
2
*
3
*
100
El parámetro w_comprimir debe tener el valor S ó N
Error controlado que devuelve el webservice: false : descripción del error
Cualquier error o excepción de Oracle: SQLERRM
*
*
* NOTA: El webservice devolverá : true
*
false : descripción del error (si no existe la url del fichero devolverá ésta situación
*
*
********************************************************************************************/
FUNCTION CARGAR_FICHERO_URL
(w_aplicacion IN Varchar2,
6 de 8
Manual de Modelo de datos USU
w_instanciaOracle IN Varchar2,
w_usuario IN Varchar2,
w_clave IN Varchar2,
w_nombreFichero IN Varchar2,
w_URL IN Varchar2,
w_plantilla IN Varchar2,
w_comprimir IN Varchar2,
z_Cd_Mensaje_Err OUT Varchar2,
z_Ds_Mensaje_Err OUT Varchar2) RETURN Boolean IS
req SIS_PACK_SOAP.request;
resp clob;
-v_Respuesta varchar2(2000);
BEGIN
--------------------------------------------- Validaciones ------------------------------------------------------------------------ Validación de parámetros obligatorios
IF (w_aplicacion IS NULL OR w_instanciaOracle IS NULL OR w_usuario IS NULL OR w_clave IS NULL OR w_nombreFichero
IS NULL OR w_URL IS NULL OR w_comprimir IS NULL) THEN
z_Cd_Mensaje_Err := 1;
z_Ds_Mensaje_Err := 'Los parámetros w_aplicacion, w_instanciaOracle, w_usuario, w_clave, w_nombreFichero, w_URL,
w_comprimir son obligatorios.';
RETURN (False);
END IF;
-- Validación de parametro comprimir S/N
IF w_comprimir NOT IN ('S','N') THEN
z_Cd_Mensaje_Err := 2;
z_Ds_Mensaje_Err := 'El parámetro w_comprimir debe tener el valor S ó N';
RETURN (False);
END IF;
utl_http.set_persistent_conn_support(TRUE);
-------------------------------------------------------------- Llamar a webservice mediante SOAP -----------------------------------------------------------------------------------req := SIS_PACK_SOAP.new_request('subirFicheroForms', b_Url_Request);
7 de 8
Manual de Modelo de datos USU
SIS_PACK_SOAP.add_parameter(req, 'aplicacion', 'xsd:string', w_aplicacion);
SIS_PACK_SOAP.add_parameter(req, 'clave', 'xsd:string', w_clave);
SIS_PACK_SOAP.add_parameter(req, 'comprimir', 'xsd:string', w_comprimir);
SIS_PACK_SOAP.add_parameter(req, 'instanciaOracle', 'xsd:string', w_instanciaOracle);
SIS_PACK_SOAP.add_parameter(req, 'nombreFichero', 'xsd:string', w_nombreFichero);
SIS_PACK_SOAP.add_parameter(req, 'plantilla', 'xsd:string', w_plantilla);
SIS_PACK_SOAP.add_parameter(req, 'URL', 'xsd:string', w_URL);
SIS_PACK_SOAP.add_parameter(req, 'usuario', 'xsd:string', w_usuario);
-- Invocar al método del websercie
resp := SIS_PACK_SOAP.invoke(req, b_Url_Wsdl, '');
-- string de respuesta del webservice
v_Respuesta := SIS_PACK_SOAP.get_return_value(resp, 'subirFicheroFormsReturn', b_Url_Response);
-IF UPPER(v_Respuesta) = 'TRUE' THEN RETURN(True);
-- si hay error devuvelve: false : descripción del error
ELSE z_Cd_Mensaje_Err := 3;
z_Ds_Mensaje_Err := SUBSTR(v_Respuesta, 9);
RETURN(False);
END IF;
EXCEPTION WHEN OTHERS THEN z_Cd_Mensaje_Err := 100;
z_Ds_Mensaje_Err := SQLERRM;
RETURN (False);
END;
END;
8 de 8
Descargar