5.- Casos de uso SNT de ejemplo

En este apartado se describe cómo implementar los principales casos de uso que se pueden dar en la integración con SNT



1.- Emisión de notificación en un solo paso (Recomendado)


1.1.- Emisión de un borrador en un solo paso

En este ejemplo se va a crear una notificación y emitirla realizando un registro de salida, enviando el csv del documento de notificación firmado y almacenado previiamente en CCSV.

draftClient hace referencia al cliente de borradores de notificaciones que se habrá configurado previamente siguiendo el ejemplo de Anexo I





Ejemplo de código
// Objetos del servicio ParamCreateIssueRegisterNotificationWithOrganism paramCreateIssueRegisterNotification = new ParamCreateIssueRegisterNotificationWithOrganism(); ResultCreateIssueRegisterNotification resultCreateIssueRegisterNotification; // 1) SE INDICAN LOS RECEPTORES DE LA NOTIFICACIÓN //Se crea la lista de Receivers DraftReceiver[] draftReceivers = new DraftReceiver[1]; // Se crea un receiver DraftReceiver draftReceiver = new DraftReceiver(); draftReceiver.setReceiverId("11111111H"); draftReceiver.setName("name"); draftReceiver.setSurname1("surname1"); draftReceiver.setSurname2("surname2"); draftReceiver.setAddress("address"); draftReceiver.setEmail("correo@electronico.com"); draftReceivers[0] = draftReceiver; // 2) SE INDICAN LOS DATOS ESPECÍFICOS DE LA NOTIFICACIÓN Data[] specificDataList=new Data[4]; specificDataList[0] = new Data(SNTClientConstants.PARAM_NAME_CSV_NOTIFICATION,"CSV0W0P5HO55JXXXYPFI"); // Indicamos el documento de la notificacion (obligatorio) specificDataList[1] = new Data("CSV_Attached_1","CSV0W0P5HO55JXXXXPFI"); // Indicamos adjunto 1 (no obligatorio) specificDataList[2] = new Data("CSV_Attached_2","CSV0W0P5HO55JXXXXPFI"); // Indicamos adjunto 2 (no obligatorio) specificDataList[3] = new Data("keyA3","valueA3"); // Podemos indicar otros valores // 3) SE INDICA EL ORGANISMO APORTADOR DE LA NOTIFICACIÓN Organism organism = new Organism(); // Organismo aportador de la notificación organism.setCode("ORG14668"); organism.setName("Departamento de Economía y Hacienda"); // 4) SE INDICAN LOS ORGANISMOS GESTORES DE LA NOTIFICACIÓN // Se crea la lista de organismos gestores para que sea un borrador de tipo visibilidad compartida // (si la lista estuviese vacía, la notificación se crearía con visibilidad limitada) OrganismVisibility[] organismVisibilities = new OrganismVisibility[1]; OrganismVisibility organismVisibility = new OrganismVisibility(); organismVisibility.setOrganismCode("ORG14668"); organismVisibility.setTipoRelacion("ORGANISMO_GESTOR"); organismVisibilities[0] = organismVisibility; // Primer organismo gestor // 5) SE RELLENA EL OBJETO DRAFT DraftCreateIssueWithOrganism draft = new DraftCreateIssueWithOrganism(); draft.setDossier("20110224-01"); draft.setIssuerId("00000000T"); // Usuario emisor de la notificación draft.setCreatorId("00000000T"); // Usuario creador de la notificación draft.setDescription("20110224-01"); draft.setOrganism(organism); draft.setSpecificDataList(specificDataList); draft.setDraftReceiversList(draftReceivers); draft.setExpireTime(new Integer(10)); draft.setProcedure("1"); draft.setOrganismVisibilityList(organismVisibilities); //Se rellena el objeto ParamCreateIssueNotification paramCreateIssueRegisterNotification.setDraft(draft); // 6) SE HACE LA INVOCACIÓN try {     System.out.println("Se llama a SNT para emitir la notificación...");     resultCreateIssueRegisterNotification = draftClient.createIssueRegisterNotificationWithOrganism(paramCreateIssueRegisterNotification);     System.out.println("Fin llamada a SNT");     if(resultCreateIssueRegisterNotification!=null &&resultCreateIssueRegisterNotification.getNotificationId()!=null){         System.out.println("Se ha emitido correctamente la notificación, con ID: "+resultCreateIssueRegisterNotification.getNotificationId());     } } catch (SNTException e) {     System.out.println("Se ha producido un error en la emisión: ["+e.getCode()+"] "+e.getExtraInfo()); }







2.- Creación y emisión de un borrador de notificación por fases (No recomendado)


En los siguientes puntos se detallará el proceso de creación y emisión de borradores de notificaciones por fases.

Este proceso está dirigido a los integradores que deseen dejar los borradores en preparación para actualizarlos a posteriori. En el resto de casos, recomendamos realizar el proceso de emisión de notificación en un solo paso

draftClient hace referencia al cliente de borradores de notificaciones que se habrá configurado previamente siguiendo el ejemplo de Anexo I

2.1.- Creación del borrador

En primer lugar realizaremos la creación del borrador:



Ejemplo de código
// objetos del servicio ParamCreateDraftWithOrganism paramCreateDraft = new ParamCreateDraftWithOrganism(); ResultCreateDraft resultCreateDraft; // 1) SE INDICAN LOS RECEPTORES DE LA NOTIFICACIÓN //Se crea un receiver DraftReceiver draftReceiver = new DraftReceiver(); draftReceiver.setReceiverId ("11111111H"); draftReceiver.setName("name"); draftReceiver.setSurname1("surname1"); draftReceiver.setSurname2("surname2"); draftReceiver.setAddress("address"); draftReceiver.setEmail("email@email.com"); // Se crea la lista de Receivers DraftReceiver[] draftReceivers = new DraftReceiver[1]; draftReceivers[0] = draftReceiver; // 2) SE INDICAN LOS DATOS ESPECÍFICOS DE LA NOTIFICACIÓN Data[] specificDataList=new Data[4]; specificDataList[0] = new Data(SNTClientConstants.PARAM_NAME_CSV_NOTIFICATION_EXTERNAL,"CSV0W0P5HO55JXXXYPFI"); // Indicamos el documento de la notificacion (obligatorio) specificDataList[1] = new Data("CSV_Attached_1","CSV0W0P5HO55JXXXXPFI"); // Indicamos adjunto 1 (no obligatorio) specificDataList[2] = new Data("CSV_Attached_2","CSV0W0P5HO55JXXXXPFI"); // Indicamos adjunto 2 (no obligatorio) specificDataList[3] = new Data("keyA3","valueA3"); // Podemos indicar otros valores // 3) SE INDICA EL ORGANISMO APORTADOR DE LA NOTIFICACIÓN Organism organism = new Organism(); organism.setCode("ORG14668"); // 4) SE INDICAN LOS ORGANISMOS GESTORES DE LA NOTIFICACIÓN // Se crea la lista de organismos gestores para que sea un borrador de tipo visibilidad compartida // (si la lista estuviese vacía, la notificación se crearía con visibilidad limitada) OrganismVisibility[] organismVisibilities = new OrganismVisibility[1]; OrganismVisibility organismVisibility = new OrganismVisibility(); organismVisibility.setOrganismCode("ORG14668"); organismVisibility.setTipoRelacion("ORGANISMO_GESTOR"); organismVisibilities[0] = organismVisibility; // 5) SE RELLENA EL OBJETO DRAFT DraftWithOrganism draftCreate = new DraftWithOrganism(); draftCreate.setCreatorId("00000000T"); draftCreate.setDescription("20110224-01"); draftCreate.setOrganism(organism); draftCreate.setSpecificDataList(specificDataList); draftCreate.setDraftReceiversList(draftReceivers); draftCreate.setExpireTime(new Integer(10)); draftCreate.setContent("20110224-01"); draftCreate.setProcedure("1" ); draftCreate.setOrganismVisibilityList(organismVisibilities); // Se rellena el objeto ParamCreateDraft paramCreateDraft.setDraft(draftCreate); // 6) SE HACE LA INVOCACIÓN try { System.out.println("Se llama a SNT para crear el borrador..."); resultCreateDraft = draftClient.createDraftWithOrganism(paramCreateDraft); System.out.println("Fin llamada a SNT"); if(resultCreateDraft!=null && resultCreateDraft.getDraftId()!=null){ System.out.println("Se creado correctamente el borrador, con ID: "+resultCreateDraft.getDraftId()); return resultCreateDraft.getDraftId(); } } catch (SNTException e) { System.out.println("Se ha producido un error en la creacion: ["+e.getCode()+"] "+e.getExtraInfo()); } return null;





2.2.- Emisión y registro de la notificación

En este paso realizamos la emisión y registro del borrador

draftClient hace referencia al cliente de borradores de notificaciones que se habrá configurado previamente siguiendo el ejemplo de Anexo I



Ejemplo de código
// 1) SE EMITE LA NOTIFICACION Y SE REALIZA ASIENTO REGISTRAL DE SALIDA // Objetos del servicio ParamIssueRegisterNotification paramIssueRegisterNotification = new ParamIssueRegisterNotification(); ResultIssueRegisterNotification result = new ResultIssueRegisterNotification(); paramIssueRegisterNotification.setDraftId(idBorrador); // Se indica la ID del borrador en tipo Long paramIssueRegisterNotification.setIssuerId("00000000T"); // Se indica el emisor de la notificación paramIssueRegisterNotification.setInvokingId("00000000T");// Se indica el identificador de la persona invocante paramIssueRegisterNotification.setOrganismRegister("ORG11335"); // Se indica el organismo de registro de salida // 2) SE HACE LA INVOCACIÓN try { System.out.println("Se llama a SNT para emitir el borrador..."); result = draftClient.issueRegisterNotification(paramIssueRegisterNotification); System.out.println("Fin llamada a SNT"); if(result!=null && result.getNotificationId()!=null){ System.out.println("Se creado correctamente la notificación, con ID: "+result.getNotificationId()); } } catch (SNTException e) { System.out.println("Se ha producido un error en la emisión: ["+e.getCode()+"] "+e.getExtraInfo()); }





3.- Consulta de notificaciones


A continuación se detalla la integración que se realiza para consultar notificaciones electróncias

3.1.- Consulta de notificación por ID

En este ejemplo vamos a consultar una notificación a través de su ID. La ID la obtenemos en el momento de creación de la notificación en la respuesta del servicio.

notificationClient hace referencia al cliente de borradores de notificaciones que se habrá configurado previamente siguiendo el ejemplo de Anexo I





Ejemplo de invocación





3.2.- Consulta de notificaciones por filtro

En este ejemplo vamos a consultar una lista de notificaciones a través de filtros.

Se van a filtrar todas las notificaciones creadas por el usuario 00000000T en los dos días anteriores a la fecha actual.

notificationClient hace referencia al cliente de borradores de notificaciones que se habrá configurado previamente siguiendo el ejemplo de Anexo I



Ejemplo de invocación







4.- Envío de una comunicación


En los siguientes puntos se detallará el proceso de creación y emisión de comunicaciones.

Al contrario que en las notificaciones, no es posible realizarlo todo en un mismo paso, habrá que utilizar previamente el servicio de creación y a continuación el servicio de envio.

4.1.- Creación del borrador de comunicación

En primer lugar realizaremos la creación del borrador:

communicationNTDraftClient hace referencia al cliente de borradores de notificaciones que se habrá configurado previamente siguiendo el ejemplo de Anexo I



Ejemplo de código





4.2.- Envío y registro de la comunicación

En este paso realizamos la emisión y registro del borrador

communicationNTDraftClient hace referencia al cliente de borradores de notificaciones que se habrá configurado previamente siguiendo el ejemplo de Anexo I



Ejemplo de código









5.- Consulta de comunicaciones


A continuación se detalla la integración que se realiza para consultar comunicaciones

5.1.- Consulta de comunicación por ID

En este ejemplo vamos a consultar una comunicación a través de su ID. La ID la obtenemos en el momento de creación de la comunicación en la respuesta del servicio.

communicationNTClient hace referencia al cliente de borradores de notificaciones que se habrá configurado previamente siguiendo el ejemplo de Anexo I



Ejemplo de invocación





5.2.- Consulta de comunicaciones por filtro

En este ejemplo vamos a consultar una lista de comunicaciones a través de filtros

Se van a filtrar todas las comunicaciones creadas por el usuario 00000000T en los dos días anteriores a la fecha actual.

communicationNTClient hace referencia al cliente de borradores de notificaciones que se habrá configurado previamente siguiendo el ejemplo de Anexo I



Ejemplo de invocación



6.- ANEXO I - Configuración del cliente


A continuación ofrecemos dos modos de configurar las instancias de los agentes de acceso

6.1.- Configuración del framework Spring y librerias Maven





XmlApplicationContext









POM



8.2.- Configuración directa con Java





Ejemplo de código