En este apartado se van a explicar diferentes casos de uso y cómo podría implementarlos una aplicación integradora.
Table of Contents
Ejemplo 1: Crear un aviso por correo electrónico
...
En este ejemplo planteamos el caso en que una aplicación, PFI por ejemplo, desea enviar un correo al firmante propuesto cuando se crea un documento para que lo firme.
1.1 Ejemplo utilizando el método createAdvice:
Para que PFI pueda realizar la petición a SGA debe cumplir los siguientes requisitos:
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
// Se definen los objetos a usar ParamCreateAdvice pca = new ParamCreateAdvice(); Advice advice = new Advice(); ResultError resultError; // Aplicación que realizará la petición a SGA paramCreateAdvice.setIdApplication("PFI"); // Se rellenan los datos del aviso advice.setApplication("PFI"); // aplicación dada de alta en SGA advice.setEntityId(0L); // si no se especifica entidad, la entidad por defecto será la del Gobierno de Aragón (0) // Datos del correo advice.setAnagrama("tucorreo@oesia.com"); // correo o NIF de usuario de SIU con correo asociado advice.setMailSubject("Asunto del correo"); // Asunto del correo enviado advice.setDate("11/12/2018"); // Fecha en la que será enviado // Datos del aviso advice.setType("Tipo de aviso"); // Las avisos se agrupan y titulan en función a este campo advice.setSubject("Asunto del aviso"); // Título del aviso advice.setDescription("Descripción del aviso"); // Descripción del aviso // Asignar aviso a los parámetros pca.setoAdvice(advice); // Indicar el usuario que genera el aviso pca.setUser("00000000T"); // Petición a SGA resultError = adviceServiceWS.createAdvice(pca); // Gestión de la respuesta if ("false".equals(resultError.getError())) { System.out.println("Se ha enviado el aviso"); } else { System.out.println("Se ha producido un error en la petición"); if (resultError.getErrorCode() != null) { System.out.println("Error: " + resultError.getErrorCode() + ". Mensaje: " + resultError.getErrorMsg()); } } |
1.2.- Ejemplo utilizando el método createAdviceSMS
Para que PFI pueda realizar la petición a SGA debe cumplir los siguientes requisitos:
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
// Se definen los objetos a usar ParamCreateAdviceSMS paramCreateAdviceSMS = new ParamCreateAdviceSMS(); AdviceSMS adviceSMS = new AdviceSMS(); // Aplicación que realizará la petición a SGA paramCreateAdviceSMS.setIdApplication("PFI"); // Se rellenan los datos del aviso adviceSMS.setApplication("PFI"); // aplicación dada de alta en SGA adviceSMS.setEntityId(0L); // si no se especifica entidad, la entidad por defecto será la del Gobierno de Aragón (0) // Datos del correo adviceSMS.setAnagrama("tucorreo@oesia.com"); // correo o NIF de usuario de SIU con correo asociado adviceSMS.setMailSubject("Asunto del correo"); // Asunto del correo enviado adviceSMS.setDate("11/12/2018"); // Fecha en la que será enviado // Datos del aviso adviceSMS.setType("Tipo de aviso"); // Las avisos se agrupan y titulan en función a este campo adviceSMS.setSubject("Asunto del aviso"); // Título del aviso adviceSMS.setDescription("Descripción del aviso"); // Descripción del aviso // Indicamos que la petición es para enviar un correo adviceSMS.setRequestType(AdviceSMS.RequestType.MAIL.toString()); // Asignar aviso a los parámetros paramCreateAdviceSMS.setAdviceSMS(adviceSMS); // Indicar el usuario que genera el aviso paramCreateAdviceSMS.setUser("00000000T"); // Petición a SGA ResultErrorAdviceSMS resultErrorAdviceSMS = adviceServiceWS.createAdviceSMS(paramCreateAdviceSMS); if(resultErrorAdviceSMS.getError().equals(ResultErrorAdviceSMS.NO_ERROR)) { System.out.println("Proceso por canal MAIL realizado correctamente"); } else { System.out.println("Error al realizar el proceso por canal MAIL"); System.out.println("Código Error: " + resultErrorAdviceSMS.getMailErrorCode()); System.out.println("Mensaje Error: " + resultErrorAdviceSMS.getMailErrorMsg()); } |
Ejemplo 2: Crear un aviso con adjunto
...
Envío del documento al creador del mismo en PFI que se acaba de firmar.
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
// Se definen los objetos a usar ParamCreateAdviceWithAttachment pca = new ParamCreateAdviceWithAttachment(); Advice advice = new Advice(); ResultError resultError; // Aplicación que realizará la petición a SGA pca .setIdApplication("PFI"); // Se rellenan los datos del aviso advice.setApplication("PFI"); // aplicación dada de alta en SGA advice.setEntityId(0L); // si no se especifica entidad, la entidad por defecto será la del Gobierno de Aragón (0) // Datos de correo advice.setAnagrama("tucorreo@oesia.com"); // correo o NIF de usuario de SIU con correo asociado advice.setMailSubject("Asunto del correo"); // Asunto del correo enviado advice.setDate("11/12/2018"); // Fecha en la que será enviado // Datos del aviso advice.setType("Tipo de aviso"); // Las avisos se agrupan y titulan en función a este campo advice.setSubject("Asunto del aviso"); // Título del aviso advice.setDescription("Descripción del aviso"); // Descripción del aviso // Asignar aviso a los parámetros pca.setoAdvice(advice); // Indicar el usuario que genera el aviso pca.setUser("00000000T"); // Insertamos, en los parámetros, los códigos CSV de los adjuntos List<String> attachments = new ArrayList<>(); attachments.add("CSVL916KYX34D1601PFI"); attachments.add("CSVIW2QR9J65T1C01PFI"); pca.setAttachments(attachments); // Petición a SGA resultError = adviceServiceWS.createAdviceWithAttachment(pca); // Gestión de la respuesta if ("false".equals(resultError.getError())) { System.out.println("Se ha enviado el aviso"); } else { System.out.println("Se ha producido un error en la petición"); if (resultError.getErrorCode() != null) { System.out.println("Error: " + resultError.getErrorCode() + ". Mensaje: " + resultError.getErrorMsg()); } } |
Ejemplo 3: Crear un aviso por sms
...
En este ejemplo planteamos el caso en que una aplicación, por ejemplo SSS, quiere enviar un SMS al interesado cuando se abra un periodo de subsanación a su nombre.
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
// Se definen los objetos a usar ParamCreateAdviceSMS paramCreateAdviceSMS = new ParamCreateAdviceSMS(); AdviceSMS adviceSMS = new AdviceSMS(); // Aplicación que realiza la petición a SGA paramCreateAdviceSMS.setIdApplication("SSS"); adviceSMS.setPhoneNumber("6XXXXXXXX"); // Número de teléfono. Actualmente se permite envío a móviles españoles con 9 dígitos adviceSMS.setTextSMS("SMS de prueba"); // Texto del SMS, máximo 160 caracteres adviceSMS.setRequestType(AdviceSMS.RequestType.SMS.toString()); // Indicamos que es un SMS, ya que este método createAdviceSMS permite también enviar correos o ambos (correo y sms en una misma petición) // Asignar aviso a los parámetros paramCreateAdviceSMS.setAdviceSMS(adviceSMS); // Indicar el usuario que genera el aviso paramCreateAdviceSMS.setUser("00000000T"); // Realizar petición a SGA ResultErrorAdviceSMS resultErrorAdviceSMS = adviceServiceWS.createAdviceSMS(paramCreateAdviceSMS); // Gestión de la respuesta if(resultErrorAdviceSMS.getError().equals(ResultErrorAdviceSMS.NO_ERROR)) { System.out.println("Proceso por canal SMS realizado correctamente"); } else { System.out.println("Error al realizar el proceso por canal SMS"); System.out.println("Código Error: " + resultErrorAdviceSMS.getSmsErrorCode()); System.out.println("Mensaje Error: " + resultErrorAdviceSMS.getSmsErrorMsg()); } |
Ejemplo 4: Generar un evento
...
En este ejemplo planteamos el caso en que una aplicación, SNT por ejemplo, quiere generar un evento cuando un ciudadano acepte o rechace una notificación electrónica, con el fin de que la aplicación que ha enviado la notificación tenga conocimiento de esto.
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
public boolean sendEvent(NotificationData data){ // Crea el objeto de la petición Map<String String> dataMap = new LinkedHashMap<String, String>(); // Asignamos datos que queremos enviar en el evento. Clave y valor. La aplicación receptora sabrá las claves para obtener los valores dataMap.put(data.getKey1(), data.getVal1()); // Crear evento (aplicación que envía, método que provoca el evento de la aplicación que envía, mapeo de datos) Event event = new Event(data.getAppFrom(), data.getMethod(), dataMap); // Asignar evento a los parámetros e indicar la aplicación que va a recibir (si se quiere enviar a varias aplicaciones habrá que dejar el campo a null) ParamCreateEvent param = new ParamCreateEvent(event, data.getAppTo()); // Aplicación que realiza la petición a SGA param.setIdApplication("SNT"); // Realizar petición a SGA ResultError response = eventService.sendNotification(paramCreateEvent); if (response.getError().equals(Boolean.FALSE.toString().toLowerCase())) { System.out.println("Evento enviado correctamente.); return Boolean.TRUE; } else { System.out.println("Error al enviar evento. Código error: " + response.getErrorCode() + ". Mensaje error: " + response.getErrorMsg()); return Boolean.FALSE; } } |
Ejemplo 5: Procesar un evento de una aplicación
...
SNT genera un evento cuando se acepta o rechaza una notificación. En este ejemplo planteamos el caso en que una aplicación 'APP_B' tiene un servicio REST publicado y está suscrito a estos eventos
Para que una aplicación pueda recibir un evento debe cumplir los siguientes requisitos:
-Debe tener un método en un servlet para recibir los eventos que implemente NotificationManager. Esta es la url rest que se configura en SGA
-En SGA:
- La aplicación debe tener configurada la URL Rest del Servlet en el cual recibe los eventos
- La aplicación APP debe estar suscrita el método sendEvent de SNT
-Si la APP_B utiliza PAU para restringir sus llamadas:
-Dar permiso en PAU a la aplicación receptora sobre el método de la aplicación emisora.
-Añadir método de recepción en la aplicación receptora en PAU.
-Dar permiso en PAU a SGA para que pueda enviar al método de recepción de la aplicación receptora.
A continuación, se indica un ejemplo de recepción de evento:
...