Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

...

El ciudadano habrá creado un trámite y TTO generará eventos para las aplicaciones integradoras.  Para la recepción de los eventos a los que se haya suscrito la aplicación integradora, debe implementar un servicio rest, accesible por SGA, que implemente la interfaz NotificationManager


Code Block
languagejava
titleInterfaz NotificationManager
/**
  * Interfaz REST común para las aplicaciones que integren el sistema de eventos
  *
  */
public interface NotificationManagerpublic interface NotificationManager{    
    
    @PUT
    @Consumes    @PUT
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces    @Produces(MediaType.APPLICATION_JSON)
    Map<Long    Map<Long, Boolean> processNotification(RestEvent eventData);

}

La aplicación obtendrá un objeto JSON como el siguiente:

Code Block
languagejavapy
titleDatos SGA-Eventos
{
  number=10073;
  requestCode=100737Q9AYWCNQ9;
  signature=1774;
  requestCodeorigin=100737Q9AYWCNQ9"SUBSANACION"; # Sólo  signature=1774en los eventos finishedProcedureWithOrigin
}


Los datos que nos interesan

...

son requestCode

...

 y signature. Con estos datos:

  • Comprobaremos si la signatura se corresponde con la de un trámite que sea de interés.

  • En el caso de que la solicitud sea de interés, realizar una invocación al servicio get/getXml de TTO utilizando como parámetro de entrada requestCode.


Una vez terminado todo el proceso, el servicio tiene que devolver a SGA un mapa donde la clave sea ese id único y el valor el resultado de procesar los datos asociados (true → procesado con éxito; false → se ha producido algún error).


Info

Para más información acerca de los eventos, consulte la la documentación de SGA.


Ejemplo 2: consultar una solicitud finalizada

...

Una vez recibido un SGA-Evento de TTO, comprobaremos si el trámite es de interés para la aplicación. En el caso de que la solicitud sea de interés, realizar una invocación al servicio get/getXml de TTO utilizando como parámetro de entrada requestCode.

Code Block
languagejava
themeConfluence
titleInvocación get
collapsetrue
// PASO 1: Establecer los parámetros de búsqueda
// Id de la aplicación que está accediendo a TTO
String APPLICATION_ID = "XXX";
// identificador de la solicitud
String requestCode = "100737Q9AYWCNQ9";
 
// PASO 2: Establecer la conexión
URL url = new URL("https://aplicaciones.aragon.es/tto_core/rest/tramite/get?" +
"applicationId=" + APPLICATION_ID +
"&requestCode =" + requestCode);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/json");
 
// Gestionar respuesta incorrecta
if (connection.getResponseCode() != 202) {
    	System.out.println("Respuesta incorrecta");
}
 
// PASO 3: Convertir la respuesta del servicio en el objeto del trámite
StringBuilder responseStrBuilder = new StringBuilder();
BufferedReader streamReader = new BufferedReader(
        new InputStreamReader(connection.getInputStream(), "UTF-8"));
String inputStr;
while ((inputStr = streamReader.readLine()) != null) {
  responseStrBuilder.append(inputStr);
}
 
// Configurar GSON para recuperar las fechas con tiempo UNIX
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Date.class, (JsonDeserializer<Date>) (json, typeOfT, context) ->
            new Date(json.getAsJsonPrimitive().getAsLong()));
Gson gson = builder.create();
 
// Convertir la respuesta a ResultTramiteBean
ResultTramiteBean tramite = gson.fromJson(responseStrBuilder.toString(),
        ResultTramiteBean.class);
 
// PASO 4: Desconectar
connection.disconnect();


Code Block
theme
languagejava
ConfluencetitleInvocación getXml
collapsetrue
// PASO 1: Establecer los parámetros de búsqueda
// Id de la aplicación que está accediendo a TTO
String APPLICATION_ID = "XXX";
// identificador de la solicitud
String requestCode = "100737Q9AYWCNQ9";
 
// PASO 2: Establecer la conexión
URL url = new URL("https://aplicaciones.aragon.es/tto_core/rest/tramite/get?" +
"applicationId=" + APPLICATION_ID +
"&requestCode =" + requestCode);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/json");
 
// Gestionar respuesta incorrecta
if (connection.getResponseCode() != 202) {
 	   System.out.println("Respuesta incorrecta");
}
 
// PASO 3: Convertir la respuesta del servicio en el objeto del trámite
TransformXMLToObject transformer = new TransformXMLToObject();
ResultTramiteBean tramite = transformer.parseTramiteBeanFromFile(
            connection.getInputStream());
 
// PASO 4: Desconectar
connection.disconnect();


Ejemplo 3: obtener la información de un listado de solicitudes de un día concreto

...

El ejemplo de invocación que se muestra a continuación será de utilidad para consultar las solicitudes finalizadas en un día concreto. Así se podrá consultar si, por algún fallo técnico, la aplicación integradora no ha recibido alguna solicitud finalizada del trámite que nos interesa. Se va a tomar como ejemplo la signatura 1903 y el día 26/03/2020.

Code Block
languagejavathemeConfluence
titleInvocación list
collapsetrue
// PASO 1: Establecer los parámetros de búsqueda
// Id de la aplicación que está accediendo a TTO
String APPLICATION_ID = "XXX";
  
// Signaturas de los procedimientos a consultar
int signature = 1903;
// Se consultan las solicitudes registradas
boolean isRegistered = true;
// Se consultan únicamente la información básica de las solicitudes, no el formulario
boolean isSummaryInfo = true;
// Fecha inicio de registro de la solicitud
String registerStartDate = "26/03/2020";
// Fecha fin de registro de la solicitud
String registerEndDate = "26/03/2020";
 
  
// PASO 2: Preparar la conexión
URL url = new URL("https://aplicaciones.aragon.es/tto_core/rest/tramite/list?" +
        "applicationId=" + APPLICATION_ID +
        "&signature=" + signature1 +
        "&registered®istered=" + isRegistered +
        "&summaryInfo=" + isSummaryInfo +
		"&registerStartDate        "®isterStartDate =" + registerStartDate +
		"&registerEndDate
        "®isterEndDate =" + registerEndDate );
 
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/json");
  
if (connection.getResponseCode() != 202) {
 	   System.out.println("Respuesta incorrecta");
}
    
// PASO 3. Recuperamos la respuesta del servicio en formato String
StringBuilder responseStrBuilder = new StringBuilder();
BufferedReader streamReader = new BufferedReader(
        new InputStreamReader(connection.getInputStream(), "UTF-8"));
String inputStr;
while ((inputStr = streamReader.readLine()) != null) {
  responseStrBuilder.append(inputStr);
}
  
// PASO 4. Configurar GSON para recuperar las fechas desde formato UNIX
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Date.class, (JsonDeserializer<Date>) (json, typeOfT, context) ->
        new Date(json.getAsJsonPrimitive().getAsLong()));
Gson gson = builder.create();
  
// PASO 5. Convertir la respuesta al objeto del trámite
JsonArray json = gson.fromJson(responseStrBuilder.toString(), JsonArray.class);
ResultTramiteBean tramite = gson.fromJson(responseStrBuilder.toString(),
        ResultTramiteBean.class);
ResultTramiteBean tramiteList[] = gson.fromJson(json, ResultTramiteBean[].class);
  
// PASO 6. Desconectar
connection.disconnect();

...