5.- Casos de uso y ejemplos SRT
- Servicios Digitales de Aragón
En este apartado se van a explicar diferentes casos de uso y cómo podría implementarlos una aplicación integradora.
La aplicación integradora debe estar dada de alta en PAU y debe tener permiso sobre los servicios que desee utilizar.
1.- Creación de asiento registral
A continuación se detallan dos tipos de envío de asiento registral, uno con fichero adjunto y otro sin adjuntos
1.1.- Envío de asiento registral sin adjunto
// Objetos del servicio ResultSendFullEntry resultSendFullEntry = new ResultSendFullEntry (); ParamSendFullEntry paramSendFullEntry = new ParamSendFullEntry(); Person person = new Person(); // Información básica y común person.setNif("11111111H"); person.setAddress("C/Nueva, Zaragoza"); person.setMail("test@oesia.com"); person.setGivenName("Nombre"); person.setSurname1("Apellido1"); person.setSurname2("Apellido2"); // Se rellenan los datos especificos Data[] dataList = new Data[7]; dataList[0] = new Data("CSV_Request", "CSVDD1X36L2V6A200SRT"); dataList[1] = new Data("CSV_hash_Request", "/QzejY7NqZu8uZXDH9Y3D3Fbwb8="); dataList[2] = new Data("CSV_algorithm_Request", "SHA-1"); dataList[3] = new Data("Formato del justificante", "pdf"); dataList[4] = new Data("CSV_Attached_1", "CSV5H5GXS76VJAR00SCE"); dataList[5] = new Data("CSV_hash_Attached_1", "pTXyWjgL9YOsmNWcutppAXKl0tQ="); dataList[6] = new Data("CSV_algorithm_Attached_1", "SHA-1"); paramSendFullEntry.setSpecificData(dataList); try{ resultSendFullEntry = entryClient.sendFullEntry(params, null, null); }catch (SRTException e) { System.out.println("Se ha producido un error al enviar el asiento registral " + e.getCode() + ": " + e.getExtraInfo()); }
1.2.- Envío de asiento registral con adjunto
En el siguiente ejemplo se implementa el alta de un asiento registral con solicitud con un adjunto. Se genera el envío del asiento de salida en un asiento de salida
//Objetos del servicio ResultSendFullEntry resultSendFullEntry = new ResultSendFullEntry (); ParamSendFullEntry paramSendFullEntry = new ParamSendFullEntry(); //Información básica y común Info info = new Info(); info.setSubject("Test 1"); info.setRegister("REG_GA"); info.setOrganism("COG_ORG"); info.setRequestType(0); Calendar requestTime = Calendar.getInstance(); info.setRequestTime(requestTime); info.setProcessType("xxx"); Actor organism = new Organism("ORGXXXXX"); Actor person = new Person("NIF/CIF","Name","surmane1","surname2","Email","Adress"); Actor senderAgent = new Person("NIF/CIF","Name","surmane1","surname2","Email","Adress"); // Fichero a enviar byte[] arrayFile = FileCopyUtils.copyToByteArray(new File("URL Fichero")); String fileSoli = BASE64Encoder.encode(arrayFile); // Firma del fichero a enviar byte[] arraySign = FileCopyUtils.copyToByteArray(new File("URL Firma")); String detachedSignature = BASE64Encoder.encode(arraySign); RequestPromoter request = new RequestPromoter(); //Formato del Documento request.setMimeType("Formato"); request.setRequest(fileSoli); request.setFileName("Name"); request.setDetachedSignature(detachedSignature); //Formato de Firma request.setFormatSignature(SRTClientConstants.SIGN_TYPE_xxx); //Organismo Emisor Organism sender = new Organism("ORGXXXXX"); Actor senderAgent = new Actor(); //Datos Emisor senderAgent = new Person("NIF/CIF","Name","surmane1","surname2","Email","Adress"); Person receiver = new Person(); //Datos Destinatario receiver.setAddress("Adress"); receiver.setGivenName("Name"); receiver.setMail("Email"); receiver.setNif("NIF/CIF"); receiver.setSurname1("surname1"); receiver.setSurname2("surname2"); Actor[] receiverList = new Actor[1]; receiverList[0] = (Actor)receiver; // Datos especificos Data[] dataList = new Data[3]; dataList[0] = new Data("CSV_Request", "CSVDD1X36L2V6A200SRT"); dataList[1] = new Data("CSV_hash_Request", "/QzejY7NqZu8uZXDH9Y3D3Fbwb8="); dataList[2] = new Data("CSV_algorithm_Request", "SHA-1"); paramSendFullEntry.setInfo(info); paramSendFullEntry.setRequestPromoter(request); paramSendFullEntry.setSender(sender); paramSendFullEntry.setReceiver(receiverList); paramSendFullEntry.setSpecificData(dataList); paramSendFullEntry.setSenderAgent(senderAgent); paramSendFullEntry.setInvokingId("NIF"); // Adjunto Firmado FileDataSource dataSource = new FileDataSource(new File("URLAdjunto")); DataHandler file = new DataHandler(dataSource); FileInfo fileInfo = new FileInfo(); // Nombre del Documento fileInfo.setName("Nombre+"."+Extension"); // Descripción del Documento fileInfo.setDescription ("Descripcion"); // Tamaño del Documento en bytes fileInfo.setFileSize("Tamaño"); // Formato del Documento (mime-type) fileInfo.setMimeType("Formato"); // Formato de Firma fileInfo.setFormatSignature(SRTClientConstants.SIGN_TYPE_xxx); try{ resultSendFullEntry = entryClient.sendFullEntry(paramSendFullEntry,fileInfo, file); }catch(Exception e){ Sysmte.out.println("Error al enviar el asiento registral"); }
2.- Consulta de asientos registrales
A continuación se detalla la integración que se realiza para consultar asientos registrales.
2.1.- Búsqueda de asientos registrales
En el siguiente ejemplo se realiza una búsqueda de asientos registrales aplicando algunos filtros de búsqueda para acotar resultados.
// Objetos del servicio ResultListEntries resultListEntries = new ResultListEntries(); ParamListEntries paramListEntries = new ParamListEntries(); long timeBegin = System.currentTimeMillis(); // 1) Se crea el objeto info con los parámetros de búsqueda Info info = new Info(); // Codigo de Organismo info.setOrganism("DSSF_SPT"); // Codigo de Registro info.setRegister("REG_ORG001"); // Tipo de Entry (Entrada(0), Salida(1)) info.setRequestType(SRTClientConstants.REQUEST_TYPE_INPUT); // Fecha de creacion del Entry Calendar requestTime = Calendar.getInstance(); info.setRequestTime(requestTime); // 2) Se pasa el objeto info a los parámetros de búsqueda paramListEntries.setInfo(info); // 3) Se hace la invocación al servicio try{ System.out.println("Se hace la llamada al cliente para realizar la búsqueda"); resultListEntries = entryClient.listEntry(paramListEntries); System.out.println("Se ha realizado la búsqueda"); return resultListEntries; }catch(RemoteException e){ System.out.println("Se ha producido un error al realizar la búsqueda de saientos registrales"); }
3.2.- Búsqueda de asientos registrales por código del asiento registral
En el siguiente ejemplo se realiza una búsqueda de un asiento registral por su código de asiento e identificador del registro. Devolverá la información general del asiento
// Objetos del servicio ParamGetEntryDetails paramGetEntryDetails = new ParamGetEntryDetails(); ResultGetEntryDetails resultGetEntryDetails = new ResultGetEntryDetails(); // 1) Se indica el código de registro Código de registro y código de entrada paramGetEntryDetails.setRegisterId("REG_GA"); paramGetEntryDetails.setEntryId("RT_000005176/2013"); // 2) Se pasa el objeto info a los parámetros de búsqueda paramListEntries.setInfo(info); // 3) Se hace la invocación al servicio try{ System.out.println("Se hace la llamada al cliente para realizar la búsqueda"); resultGetEntryDetails = entryClient.getEntryDetails(paramGetEntryDetails); System.out.println("Se ha realizado la búsqueda"); return resultListEntries.getEntry(); }catch(RemoteException e){ System.out.println("Se ha producido un error al realizar la búsqueda de saientos registrales"); }
3.- ANEXO I - Configuración del cliente
A continuación ofrecemos dos modos de configurar las instancias de los agentes de acceso
3.1.- Configuración del framework Spring y librerias Maven
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- ID DE LA APLICACIÓN INTEGRADORA --> <bean id="applicationINT" class="java.lang.String"> <constructor-arg type="java.lang.String" value="SRT"/> <!-- Se indicará la ID de la aplicación integradora --> </bean> <!-- URL SERVICIOS DE SRT --> <bean id="urlServices" class="java.lang.String" > <constructor-arg type="java.lang.String" value="http://[entorno:puerto]/srt_core_v3/services"/> <!-- Se indicará el entorno --> </bean> <!-- CHUNKED TRANSFER PROPERTY --> <bean id="chunkedTransferProperty" class="java.lang.Boolean"> <constructor-arg value="false"/> </bean> <!-- WS DE SRT --> <!--ASIENTOS--> <!--Cliente de los servicios de gestión de asientos, se permite enviar, listar, ver el detalle y obtener sus adjuntos--> <bean id="entryClient" class="com.tbsolutions.srt.client.EntryClient"> <property name="applicationId" ref="applicationINT"/> <property name="url" ref="urlServices"/> <property name="chunkedTransfer" ref="chunkedTransferProperty"/> </bean> <!-- REGISTROS --> <bean id="registerClient" class="com.tbsolutions.srt.client.RegisterClient"> <property name="applicationId" ref="applicationINT"/> <property name="url" ref="urlServices"/> <property name="chunkedTransfer" ref="chunkedTransferProperty"/> </bean> <!-- Clase creada por el integrador donde se inyectan los clientes --> <bean id="srtIntegration" class="integration.SRTIntegrationImpl"> <property name="entryClient" ref="entryClient" /> <property name="registerClient" ref="registerClient" /> </bean> </beans>