- -

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
  1. Introducción.
  2. Web Service del Registro Telemático.
    1. Autenticación de las aplicaciones cliente.
    2. Creación de un apunte en el registro.
    3. Consulta de apuntes.
    4. Búsqueda de apuntes.
  3. Estructura de la base de datos.
  4. Adaptación de las aplicaciones existentes.

 


Anchor
M1
M1
1.Introducción

La adaptación de la UPV a los requisitos de la tramitación electrónica se traduce en la utilización del sistema de registro GEISER (Gestión Integrada de Servicios de Registro), que constituye una una solución integral de registro que funciona en modo nube para prestar el servicio para cualquier organismo público, que cubre tanto la gestión de sus oficinas de registro de entrada/salida como la recepción y envío de registros en las unidades tramitadoras destinatarias de la documentación.

...

Por tanto, la adopción de la solución de GEISER para el registro implica el cambio de la API del registro telemático actual que utiliza el sistema MASTIN, para que en su lugar utilice el módulo de interoperabilidad con el servicio común de registro GEISER. Este módulo se llama REGECO y proporciona servicios de registro y de consulta de asientos.

 


Anchor
M2
M2
2,Web Service del Registro Telemático

...

El WSDL en desarrollo se define en:

httphttps://rtupvdesaplidesa.upv.es/rtupv-app/services/RegistroTelematicoDispatcherWS?wsdl

Se invocará siempre a la operación lanzaDispatcher, que examinará el XML que recibe para saber qué operación tiene que realizar.

...

Operación

Creación de registro

Parámetros de entrada

-          XML con datos a registrar.

-          Documentos anexos en formato DataHandler

Datos de salida

XML con los datos de entrada más los datos resultado del registro (número de registro, CSV, justificante en PDF...)

Observaciones

Usuario y contraseña – No se usan actualmente *

DTD de entrada:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!ELEMENT API_CREAREGISTRO (DATOS_DEL_REGISTRO, FIRMA_DATOS_DEL_REGISTRO?)>

<!ATTLIST API_CREAREGISTRO

                        type CDATA #REQUIRED

                        formato CDATA #REQUIRED

                        identificador CDATA #REQUIRED

                        version CDATA #REQUIRED >

                        idioma_error CDATA #REQUIRED >

<!ELEMENT DATOS_DEL_REGISTRO (

                        DATOS_LIBRO_REGISTRAL,

                        DATOS_UNIDAD,

                        DATOS_INTERESADO+,

                        OTROS_DATOS,

                        DATOS_EXPEDIENTES,

                        DOCUMENTOS_ANEXOS+) >

<!ELEMENT DATOS_LIBRO_REGISTRAL (

                        TIPO_LIBRO,

                        AMBITO_LIBRO_REGISTRAL,

                        ANYO,

                        CODIGO_OFICINA_REGISTRAL) >

<!ELEMENT TIPO_LIBRO ( #PCDATA ) >

<!ELEMENT AMBITO_LIBRO_REGISTRAL ( #PCDATA ) >

<!ELEMENT ANYO ( #PCDATA ) >

<!ELEMENT CODIGO_OFICINA_REGISTRAL ( #PCDATA ) >

<!ELEMENT DATOS_UNIDAD (

                        CODIGO_UNIDAD,

                        TIPO_UNIDAD,

                        DECODIFICACION_UNIDAD?) >

<!ELEMENT CODIGO_UNIDAD ( #PCDATA ) >

<!ELEMENT TIPO_UNIDAD ( #PCDATA ) >

<!ELEMENT DECODIFICACION_UNIDAD ( #PCDATA ) >

<!ELEMENT DATOS_INTERESADO (

                        TIPO_PERSONA,

                        NOMBRE,

                        APELLIDO1,

                        APELLIDO2,

                        RAZON_SOCIAL?,

                        TIPO_DOCUMENTO,

                        NUMERO_IDENTIFICACION?,

                        TIPO_TITULAR,

                        TELEFONO?,

                        TELEFONO_MOVIL?,

                        FAX?,

                        DIRECCION_CORREO?,

                        DATOS_DIRECCION* ) >

<!ELEMENT TIPO_PERSONA ( #PCDATA ) >

<!ELEMENT APELLIDO1 ( #PCDATA ) >

<!ELEMENT APELLIDO2 ( #PCDATA ) >

<!ELEMENT RAZON_SOCIAL ( #PCDATA ) >

<!ELEMENT TIPO_DOCUMENTO ( #PCDATA ) >

<!ELEMENT NUMERO_IDENTIFICACION ( #PCDATA ) >

<!ELEMENT TIPO_TITULAR ( #PCDATA ) >

<!ELEMENT TELEFONO ( #PCDATA ) >

<!ELEMENT TELEFONO_MOVIL ( #PCDATA ) >

<!ELEMENT FAX ( #PCDATA ) >

<!ELEMENT DIRECCION_CORREO ( #PCDATA ) >

<!ELEMENT DATOS_DIRECCION (

                        TIPO_DOMICILIO,

                        PAIS?,

                        PROVINCIA?,

                        COMARCA?,

                        MUNICIPIO?,

                        POBLACION?,

                        DIRECCION,

                        CODIGO_POSTAL? ) >

<!ELEMENT TIPO_DOMICILIO ( #PCDATA ) >

<!ELEMENT PAIS ( #PCDATA ) >

<!ELEMENT PROVINCIA ( #PCDATA ) >

<!ELEMENT COMARCA ( #PCDATA ) >

<!ELEMENT MUNICIPIO ( #PCDATA ) >

<!ELEMENT POBLACION ( #PCDATA ) >

<!ELEMENT DIRECCION ( #PCDATA ) >

<!ELEMENT CODIGO_POSTAL ( #PCDATA ) >

<!ELEMENT OTROS_DATOS (

                        CODIGO_ASUNTO?,

                        DESCRIPCION_ASUNTO?,

                        OBSERVACIONES?,

                        TIPO_ENVIO?,

                        ESTADO?,

                        REFERENCIA_EXTERNA?,

                        CODIGO_TIPO_TRANSPORTE?,

                        NUMERO_TRANSPORTE? ) >

<!ELEMENT CODIGO_ASUNTO ( #PCDATA ) >

<!ELEMENT DESCRIPCION_ASUNTO ( #PCDATA ) >

<!ELEMENT OBSERVACIONES ( #PCDATA ) >

<!ELEMENT REFERENCIA_EXTERNA ( #PCDATA ) >

<!ELEMENT CODIGO_TIPO_TRANSPORTE ( #PCDATA ) >

<!ELEMENT NUMERO_TRANSPORTE ( #PCDATA ) >

<!ELEMENT DATOS_EXPEDIENTES (

                        TIPO,

                        TIPOACTOR,

                        VALORACTOR,

                        A_CODIGO_EXPEDIENTE,

                        B_CODIGO_PROCED?,

                        N_CODIGO_PROCED?,

                        N_ASUNTO?,

                        DATOS_PROPIOS? ) >

<!ELEMENT TIPO ( #PCDATA ) >

<!ELEMENT TIPOACTOR ( #PCDATA ) >

<!ELEMENT VALORACTOR ( #PCDATA ) >

<!ELEMENT A_CODIGO_EXPEDIENTE ( #PCDATA ) >

<!ELEMENT B_CODIGO_PROCED ( #PCDATA ) >

<!ELEMENT N_CODIGO_PROCED ( #PCDATA ) >

<!ELEMENT N_ASUNTO ( #PCDATA ) >

<!ELEMENT DATOS_PROPIOS (

                        ID_FORMULARIO,

                        TABLA ) >

<!ELEMENT ID_FORMULARIO ( #PCDATA ) >

<!ELEMENT TABLA (

                        NOMBRE_TABLA,

                        CAMPO+ ) >

<!ELEMENT NOMBRE_TABLA ( #PCDATA ) >

<!ELEMENT CAMPO (

                        NOMBRE,

                        VALOR ) >

<!ELEMENT VALOR ( #PCDATA ) >

<!ELEMENT DOCUMENTOS_ANEXOS (

                        NOMBRE_FICHERO,

                        CODIGO_DOCUMENTO?,

                        DESCRIPCION_DOCUMENTO?,

                        ASOCIO_EXPEDIENTE?,

                        TIPO_DOCUMENTO,

                        VALIDEZ?,

                        FIRMA_DOCUMENTO?) >

<!ELEMENT NOMBRE_FICHERO ( #PCDATA ) >

<!ELEMENT CODIGO_DOCUMENTO ( #PCDATA ) >

<!ELEMENT DESCRIPCION_DOCUMENTO ( #PCDATA ) >

<!ELEMENT ASOCIO_EXPEDIENTE ( #PCDATA ) >

<!ELEMENT FIRMA_DOCUMENTO (

                        ENTIDAD_CERTIFICADORA,

                        FORMATO_FIRMA,

                        VALOR_FIRMA )>

<!ELEMENT FIRMA_DATOS_DEL_REGISTRO (

                        ENTIDAD_CERTIFICADORA,

                        FORMATO_FIRMA,

                        VALOR_FIRMA )>

<!ELEMENT ENTIDAD_CERTIFICADORA ( #PCDATA ) >

<!ELEMENT FORMATO_FIRMA ( #PCDATA ) >

<!ELEMENT VALOR_FIRMA ( #PCDATA ) >

DTD de salida:

El XML de salida será el mismo que el de entrada, pero añadiéndole un tag más. La estructura sería la siguiente:

 


<?xml version="1.0" encoding="ISO-8859-1"?>

<!ELEMENT API_CREAREGISTRO (DATOS_DEL_REGISTRO, FIRMA_DATOS_DEL_REGISTRO?, JUSTIFICANTE,FIRMA_JUSTIFICANTE)>

<!ATTLIST API_CREAREGISTRO

                        type CDATA #REQUIRED

                        formato CDATA #REQUIRED

                        identificador CDATA #REQUIRED

                        version CDATA #REQUIRED >

                        idioma_error CDATA #REQUIRED >

<!ELEMENT DATOS_DEL_REGISTRO (

                        DATOS_LIBRO_REGISTRAL,

                        DATOS_UNIDAD,

                        DATOS_INTERESADO+,

                        OTROS_DATOS,

                        DATOS_EXPEDIENTES,

                        DOCUMENTOS_ANEXOS+) >

...

 


<!ELEMENT JUSTIFICANTE (

                        NUMERO_REGISTRO,

                        FECHA_REGISTRO,

                        EXPEDIENTE,

                        CLAVE_CONSULTA,

                        FICHERO)

<!ELEMENT NUMERO_REGISTRO ( #PCDATA ) >

<!ELEMENT FECHA_REGISTRO ( #PCDATA ) >

<!ELEMENT EXPEDIENTE ( #PCDATA ) >

<!ELEMENT CLAVE_CONSULTA ( #PCDATA ) >

<!ELEMENT FICHERO ( #PCDATA ) >

<!ELEMENT FIRMA_JUSTIFICANTE (

                        ENTIDAD_CERTIFICADORA,

                        FORMATO_FIRMA,

                        VALOR_FIRMA )>

<!ELEMENT ENTIDAD_CERTIFICADORA ( #PCDATA ) >

<!ELEMENT FORMATO_FIRMA ( #PCDATA ) >

<!ELEMENT VALOR_FIRMA ( #PCDATA ) >

 


El formato de los valores de los elementos de los DTDS anteriores será el siguiente:

...

En Java, podemos hacer una llamada al servicio web para crear un asiento de la siguiente forma:


 


import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.cliente.Service;

...

//Obtenemos los datos a enviar como parámetros (xml de entrada y lista de ficheros anexos)
String path1="path/to/file1", path2 = "path/to/file2";
String xmlEntrada="<?xml version=\"1.0\" encoding=\"iso-8859-1\"?> <API_CREAREGISTRO… ";
File file1 = new File(path1);
File file2 = new File(path2);
DataHandler fichxml = new DataHandler(new ByteArrayDataSource(xmlEntrada,”text/xml"));
DataHandler fichero1 = new DataHandler(new FileDataSource(file1));
DataHandler fichero2 = new DataHandler(new FileDataSource(file2));
 

List<DataHandler> ficheros = Arrays.asList(fichxml, fichero1, fichero2);

//Una vez tenemos los datos hacemos la petición al servicio web.
String endpoint = "http://rtupvdes.upv.es/rtupv-app/services/RegistroTelematicoDispatcherWS";                  
Service  service = new Service();
Call call= (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setOperationName(new QName("http://rtupvdes.upv.es/rtupv-app/services/RegistroTelematicoDispatcherWS", "lanzaDispatcher"));
call.setProperty(Call.USERNAME_PROPERTY, "usuario");
call.setProperty(Call.PASSWORD_PROPERTY, "password");
String ret = (String) call.invoke( new Object[] {xmlEntrada,ficheros} );

 


El ejemplo se ha realizado usando Apache Axis. Las dependencias para su uso son:

...

Operación

Consulta de registro

Parámetros de entrada

-          XML con datos a consultar

Datos de salida

-          XML con el resultado de la consulta

DTD de entrada:

<?xml version="1.0" encoding="iso-8859-1"?>

<!ELEMENT API_CONSULTAREGISTRO (DATOS_CONSULTA)>

<!ATTLIST API_CONSULTAREGISTRO

                        type CDATA #REQUIRED

                        formato CDATA #REQUIRED

                        identificador CDATA #REQUIRED

                        version CDATA #REQUIRED>

                        idioma_error CDATA #REQUIRED >

<!ELEMENT DATOS_CONSULTA (

                        NUMERO_REGISTRO,

                        FECHA_REGISTRO,

                        CLAVE_CONSULTA,

                        DEVOLVER_DOCUMENTOS,

                        DOCUMENTOS_FIRMADOS)>

<!ELEMENT NUMERO_REGISTRO (#PCDATA)>

<!ELEMENT FECHA_REGISTRO (#PCDATA)>

<!ELEMENT CLAVE_CONSULTA (#PCDATA)>

<!ELEMENT DEVOLVER_DOCUMENTOS (#PCDATA)>

<!ELEMENT DOCUMENTOS_FIRMADOS (#PCDATA)>

DTD de salida:

 El XML de salida será el mismo que el de entrada, pero con los resultados de la consulta.

 


<!ELEMENT RESULTADOS_CONSULTA (DATOS_ASIENTO)*>

<!ELEMENT DATOS_ASIENTO (

                                               NUMERO_REGISTRO,

                                               FECHA_PRESENTADO,

                                               FECHA_REGISTRADO,

                                               CSV,

                                               AMBITO_CREACION,

                                               AMBITO_ACTUAL,

                                               TIPO_ASIENTO,

                                               ESTADO

                                                ORGANO_DESTINO,

                                               CODIGO_ASUNTO,

                                             DESCRIPCION_ASUNTO,

                                              RESUMEN,

                                              NOMBRE_USUARIO,

                                              CODIGO_TIPO_TRANSPORTE,

                                               NUMERO_REGISTRO_ORIGEN,

                                               DATOS_INTERESADO*,

                                             DOCUMENTOS_ANEXOS*

                                               )>

<!ELEMENT NUMERO_REGISTRO (#PCDATA)>

<!ELEMENT FECHA_PRESENTADO (#PCDATA)>

<!ELEMENT FECHA_REGISTRADO (#PCDATA)>

<!ELEMENT CSV (#PCDATA)>

<!ELEMENT AMBITO_CREACION (#PCDATA)>

<!ELEMENT AMBITO_ACTUAL (#PCDATA)>

<!ELEMENT TIPO_ASIENTO (#PCDATA)>

<!ELEMENT ESTADO (#PCDATA)>

<!ELEMENT ORGANO_DESTINO (#PCDATA)>

<!ELEMENT CODIGO_ASUNTO (#PCDATA)>

<!ELEMENT DESCRIPCION_ASUNTO (#PCDATA)>

<!ELEMENT RESUMEN (#PCDATA)>

<!ELEMENT NOMBRE_USUARIO (#PCDATA)>

<!ELEMENT CODIGO_TIPO_TRANSPORTE (#PCDATA)>

<!ELEMENT NUMERO_REGISTRO_ORIGEN (#PCDATA)>

<!ELEMENT DATOS_INTERESADO(

                                               TIPO_DOCUMENTO,

                                               NUMERO_IDENTIFICACION,

                                               NOMBRE,

                                               APELLIDO1,

                                               APELLIDO2)>

<!ELEMENT DOCUMENTOS_ANEXOS(

                                               NOMBRE_FICHERO,

                                               CODIGO_DOCUMENTO?,

                                               DESCRIPCION_DOCUMENTO?,

                                               TIPO_DOCUMENTO?,

                                               CONTENIDO?)>

 


En la parte de los anexos se añadirá el contenido si así se indica en la consulta. El contenido del anexo estará codificado en BASE 64 se llamará <CONTENIDO>. Por ejemplo, la sección <DOCUMENTOS_ANEXOS> quedaría:

 


<DOCUMENTOS_ANEXOS>

                        <NOMBRE_FICHERO>prueba.pdf</NOMBRE_FICHERO>

                        <CODIGO_DOCUMENTO>000000320856_157c0dbf-105b-4698-b6fd-42452ccaf1b0</CODIGO_DOCUMENTO>

                        <DESCRIPCION_DOCUMENTO/>

                        <TIPO_DOCUMENTO>application/pdf</TIPO_DOCUMENTO>

                        <CONTENIDO>...</CONTENIDO>

</DOCUMENTOS_ANEXOS>

...

DATOS_CONSULTA

NUMERO_REGISTRO

Número de registro. Obligatorio ya que es el dato por el que se consulta en REGECO

FECHA_REGISTRO

Fecha de registro. En formato: YYYYMMDDHHMMSS

CLAVE_CONSULTA

Clave de consulta

DEVOLVER_DOCUMENTOS

S/N (indica si hay que devolver los documentos anexos).

DOCUMENTOS_FIRMADOS

No se usa

 


En REGECO sólo se puede filtrar por número de registro. Sin embargo mantenemos el resto de parámetros por si nos sirven para filtrar en caso de varios asientos con el número de registro por copia de asiento en GEISER, etc.

 


Ejemplo de uso del WS para la consulta de apuntes:

...

String endpoint = "http://rtupvdes.upv.es/rtupv-app/services/RegistroTelematicoDispatcherWS";
 

Service  service = new Service();
Call call;
String ret = "";
String consulta = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?> <API_CONSULTAREGISTRO… “;
 

try {
call = (Call) service.createCall();
        call.setTargetEndpointAddress( new java.net.URL(endpoint) );
        call.setOperationName(new QName("http://rtupvdes.upv.es/rtupv-app/services/RegistroTelematicoDispatcherWS", "lanzaDispatcher"));
        call.setProperty(Call.USERNAME_PROPERTY, "usuario");
call.setProperty(Call.PASSWORD_PROPERTY, "password");
        ret = (String) call.invoke( new Object[] {consulta} );
} catch (ServiceException e) {                        
// TODO Auto-generated catch block
        e.printStackTrace();
}

 


Anchor
M3d
M3d
d.Búsqueda de apuntes

...

DATOS_BUSQUEDA

TIPO_ASIENTO

ENTRADA/SALIDA

FECHA_REGISTRADO_DESDE

Fecha inicial de registro. Formato: YYYYMMDDHHMMSS

FECHA_REGISTRADO_HASTA

Fecha final de registro. Formato: YYYYMMDDHHMMSS

ORGANO_ORIGEN

Código DIR3 del órgano de origen

ORGANO_DESTINO

Código DIR3 del órgano de destino

FECHA_PRESENTADO

Fecha de presentación. Formato: YYYYMMDDHHMMSS

FECHA_PRESENTADO_DESDE

Fecha inicial de presentación. Formato: YYYYMMDDHHMMSS

FECHA_PRESENTADO_HASTA

Fecha final de presentación. Formato: YYYYMMDDHHMMSS

FECHA_EVENTO_DESDE

Fecha inicial del último evento en el asiento. Formato: YYYYMMDDHHMMSS

FECHA_EVENTO_HASTA

Fecha final del último evento en el asiento. Formato: YYYYMMDDHHMMSS

CODIGO_ASUNTO

Código del asunto

ESTADO

Estado del asiento. Los valores posibles se muestran en la tabla de estados.

IDENTIFICADOR_INTERESADO

Identificador del interesado.

DATOS_ASIENTO

NUMERO_REGISTRO

ENTRADA/SALIDA

FECHA_PRESENTADO

Fecha de presentación del registro. Formato: YYYYMMDDHHMMSS

FECHA_REGISTRADO

Fecha de registro. Formato: YYYYMMDDHHMMSS

CSV

CSV

AMBITO_CREACION

Ámbito (unidad u oficina) de creación del registro.

AMBITO_ACTUAL

Ámbito (unidad u oficina) donde se encuentra el registro

TIPO_ASIENTO

ENTRADA/SALIDA

ESTADO

Estado del asiento. Los valores posibles se muestran en la tabla de estados.

ORGANO_DESTINO

Código DIR3 del órgano destino del asiento

CODIGO_ASUNTO

Código del asunto

DESCRIPCION_ASUNTO

Descripción del asunto

NUMERO_REGISTRO_ORIGEN

Número de registro de origen (si el asiento deriva de otro)

 


Los estados posibles en que se puede encontrar un apunte son los siguientes:

ESTADOS

SIN_DATOS

No puede ser enviado porque no tiene todos los datos obligatorios.

PENDIENTE_ENVIO

Pendiente de envío al destino.

ENVIADO_PENDIENTE_CONFIRMACION

Enviado pendiente de confirmación (estado sólo visible desde origen).

ENVIADO_PENDIENTE_CONFIRMACION_MANUAL

Enviado pendiente de confirmación cuando el destino está desconectado (sólo visible desde origen).

RECIBIDO_PENDIENTE_CONFIRMACION

Recibido pendiente de confirmación (sólo visible desde destino).

RECIBIDO_PENDIENTE_CONFIRMACION_MANUAL

Recibido pendiente de confirmación cuando el destino está desconectado (sólo visible desde destino).

ENVIADO_CONFIRMADO

Confirmado en destino (sólo visible desde origen)

RECIBIDO_CONFIRMADO

Confirmado en destino (sólo visible desde destino)

ENVIADO_RECHAZADO

Rechazado en destino (sólo visible desde origen)

RECIBIDO_RECHAZADO

Rechazado en destino (sólo visible desde destino)

ANULADO

Anulado

REENVIADO

Reenviado.

EN_TRAMITE

Confirmado por unidad tramitadora

ASIGNADO

Asignado a un subórgano

FINALIZADO

Último estado de un asiento.

REENVIADO_RECHAZADO

Reenviado y rechazado por destino a la oficina del último reenvio.

RECTIFICADO

Modificado para su envío por SIR

ENVIO_PROCESO

Estado temporal pendiente de ser enviado.

RECIBIDO_RECHAZADO_CIUDADANO

Rechazado de una unidad a su oficina de registro con destino a un interesado.

 


Ejemplo de uso del WS para la búsqueda de apuntes:

...

String endpoint = "http://rtupvdes.upv.es/rtupv-app/services/RegistroTelematicoDispatcherWS";
           
Service  service = new Service();
Call call;
String ret = "";
String consulta = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?> <API_BUSCAREGISTRO… “;
 

try {
call = (Call) service.createCall();
        call.setTargetEndpointAddress( new java.net.URL(endpoint) );
        call.setOperationName(new QName("http://rtupvdes.upv.es/rtupv-app/services/RegistroTelematicoDispatcherWS", "lanzaDispatcher"));
        call.setProperty(Call.USERNAME_PROPERTY, "usuario");
call.setProperty(Call.PASSWORD_PROPERTY, "password");
        ret = (String) call.invoke( new Object[] {consulta} );
} catch (ServiceException e) {                        
// TODO Auto-generated catch block
        e.printStackTrace();
}

 


Si se quiere consumir el servicio desde PL/SQL, un ejemplo para usar el servicio de búsqueda sería el siguiente:

declare
  soap_request varchar2(30000);
  soap_respond clob;
  http_req utl_http.req;
  http_resp utl_http.resp;
  resp XMLType;
  i integer;
  l_header varchar2(1000);
  eob boolean:=false;
  buffer VARCHAR2(32767):='';
  v_offset number := 1;
  v_chunk_size number := 10000;
  l_xml clob:=EMPTY_CLOB();
begin
  dbms_lob.createtemporary(soap_respond, true);
  l_header:='Basic '||utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw('testUser:testPassword')));
  soap_request:= '<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:ws="http://ws.rt.upv.es" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
   <soapenv:Header/>
   <soapenv:Body>
      <ws:lanzaDispatcher soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <xmlEntrada xsi:type="xsd:string"><![CDATA[<?xml version="1.0" encoding="iso-8859-1"?>
            <API_BUSCAREGISTRO type="E" formato="" identificador="" version="" idioma_error="" validarFirma="">
            <DATOS_BUSQUEDA>
                <TIPO_ASIENTO>ENTRADA</TIPO_ASIENTO>
                <FECHA_REGISTRADO_DESDE></FECHA_REGISTRADO_DESDE>
                <FECHA_REGISTRADO_HASTA></FECHA_REGISTRADO_HASTA>
                <ORGANO_ORIGEN/>
                <ORGANO_DESTINO/>
                <FECHA_PRESENTADO/>
                <FECHA_PRESENTADO_DESDE/>
                <FECHA_PRESENTADO_HASTA/>
                <FECHA_EVENTO_DESDE/>
                <FECHA_EVENTO_HASTA/>
                <CODIGO_ASUNTO>UPV_0001</CODIGO_ASUNTO>
                <ESTADO/>
                <IDENTIFICADOR_INTERESADO/>
            </DATOS_BUSQUEDA>
            </API_BUSCAREGISTRO>]]>
         </xmlEntrada>
         <dataHandlers xsi:type="reg:ArrayOf_xsd_DataHandler" soapenc:arrayType="xsd:DataHandler[]" xmlns:reg="http://rtupvdes.upv.es/rtupv-app/services/RegistroTelematicoDispatcherWS"/>
      </ws:lanzaDispatcher>
   </soapenv:Body>
</soapenv:Envelope>
';
 

 http_req:= utl_http.begin_request
            ( 'http://rtupvdes.upv.es/rtupv-app/services/RegistroTelematicoDispatcherWS?lanzaDispatcher'
            , 'POST'
            , 'HTTP/1.1'
            );
  utl_http.set_header( http_req, 'Content-Type', 'text/xml; charset=UTF-8' );
  utl_http.set_header(http_req, 'Content-Length', length(soap_request));
  utl_http.set_header(http_req, 'SOAPAction', ''); -- required to specify this is a SOAP communication
  utl_http.set_header(http_req, 'Authorization', l_header);
  utl_http.write_text(http_req, soap_request);
  http_resp:= utl_http.get_response(http_req);

   -- LEEMOS LA RESPUESTA:
  while not(eob)
    loop
      begin
        utl_http.read_text(http_resp, buffer, 32767); -- buffer = VARCHAR2(32767)
        if buffer is not null and length(buffer)>0 then
          dbms_lob.writeappend(soap_respond, length(buffer), buffer);
 

        end if;
      exception when UTL_HTTP.END_OF_BODY then
        eob := true;
      end;
    end loop;

  utl_http.end_response(http_resp);

   -- PARSEAMOS LA RESPUESTA A XML Y OBTENEMOS EL CONTENIDO DEL SOAP ENVELOPE
  resp:= XMLType(soap_respond);

   l_xml := resp.getClobVal();

   if (l_xml is null) then
    dbms_output.put_line('Es nulo');
  else
  --IMPRIMIMOS LA RESPUESTA      
    loop
      exit when v_offset > dbms_lob.getlength(l_xml);
      dbms_output.put_line( dbms_lob.substr( l_xml, v_chunk_size, v_offset ) );
      v_offset := v_offset + v_chunk_size;
    end loop;
  end if;
end;

 


Anchor
ME
ME
3. Estructura de la base de datos.

...

La estructura de la base de datos es la siguiente:

 


 


El campo anexos_noderef de la tabla RT_APUNTES contendrá la referencia al nodo de alfresco correspondiente a la carpeta que contiene los anexos del apunte. Si el apunte no tiene anexos, este campo estará vacío.

...

Por ejemplo, el siguiente apunte está ya en tramitación y por tanto ha pasado por el estado ENVIADO_CONFIRMADO y actualmente está en el estado EN_TRAMITE:

 


Anchor
M3
M3
4.Adaptación de las aplicaciones existentes.

...