En este apartado se van a explicar diferentes casos de uso y cómo podría implementarlos una aplicación integradora.
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.
Para que PFI pueda realizar la petición a SGA debe cumplir los siguientes requisitos:
-Estar dado de alta en PAU
-Tener permiso sobre el método createAdvice de SGA
-Tener la IP dada de alta en PAU
-Estar dado de alta como aplicación en SGA
// 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()); } } |
Para que PFI pueda realizar la petición a SGA debe cumplir los siguientes requisitos:
-Estar dado de alta en PAU
-Tener permiso sobre el método createAdviceSMS de SGA
-Tener la IP dada de alta en PAU
-Estar dado de alta como aplicación en SGA
// 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()); } |
Envío del documento al creador del mismo en PFI que se acaba de firmar.
Ejemplo utilizando el método createAdviceWithAttachment:
Para que PFI pueda realizar la petición a SGA debe cumplir los siguientes requisitos:
-Estar dado de alta en PAU
-Tener permiso sobre el método createAdviceWithAttachment de SGA
-Tener la IP dada de alta en PAU
-Estar dado de alta como aplicación en SGA
// 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()); } } |
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.
Ejemplo utilizando el método createAdviceSMS:
Para que SSS pueda realizar la petición a SGA debe cumplir los siguientes requisitos:
-Estar dado de alta en PAU
-Tener permiso sobre el método createAdviceSMS de SGA
-Tener la IP dada de alta en PAU
-Estar dado de alta como aplicación en SGA
// 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()); } |
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.
Para que SNT pueda enviar un evento debe cumplir los siguientes requisitos:
-Disponer de un método para enviar los eventos. Por ejemplo: sendEvent
-En SGA:
-En la sección de aplicaciones: Estar dada de alta como aplicación y tener añadido el método (sendEvent) para enviar los eventos
-En PAU:
-Tener permiso sobre el método sendNotification de SGA
-Tener dada de alta la IP
A continuación, se indica un ejemplo de envío de evento a través del método:
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; } } |
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:
@Controller @Path("notification") public class NotificationManagerImpl implements NotificationManager { // Método del servlet que recibe los eventos @Override public Map<Long, Boolean> processNotification(RestEvent eventData){ // Obtener datos del evento Map<Long, Boolean> res = new HashMap<Long, Boolean>(); for(Entry<Long, Map<String, String>> entry : eventData.getData().entrySet()) { boolean result = doSomething(entry.getValue()); res.put(entry.getKey(), result); } return res; } // Procesar datos del evento private boolean doSomething(Map<String, String> data){ //Procesa los datos aquí return true; } } |