Propòsit
El propòsit del connector és proporcionar una interfície funcional reduida al connector de la Pica que simplifica l’utilització del servei de Notificacions Telemàtiques de la Generalitat.
Descripció Detallada
Aquest connector permet realitzar les següents funcionalitats referents a les notificacions telemàtiques:
Funcionalitats per a l’empleat públic:
- Enviar tramesa: Creació d’una nova tramesa de notificacions telemàtiques al sistema E-Notum per part del sistema requeridor de notificacions telemàtiques.
- Consultar estat tramesa: Consulta de l’estat d’una tramesa de notificacions telemàtiques per part del sistema requeridor de notificacions telemàtiques.
- Consultar notificacions destinatari: Consulta de les notificacions telemàtiques adreçades al destinatari.
- Consultar detall notificació: Visualització d’una notificació telemàtica per part d’un empleat públic.
- Consultar evidències notificació: Consulta de les evidències d’una notificació telemàtica gestionades per eNotum.
Funcionalitats per al ciutadà:
- Consultar detall notificació: Visualització d’una notificació telemàtica per part del destinatari.
- Consultar notificacions destinatari: Consulta de les notificacions telemàtiques adreçades al destinatari.
- Modificar estat notificació: Permet canviar l’estat d’una notificació telemàtica, per qüestions de seguretat un usuari només pugui canviar d’estat les seves pròpies notificacions.
Instal.lació i Configuració
Instal.lació
Per d’instal·lar el mòdul de notificacions electròniques, afegir manualment en el pom.xml de l’aplicació la següent dependència:
<dependency>
<groupId>cat.gencat.ctti</groupId>
<artifactId>canigo.integration.notificacions.electroniques</artifactId>
<version>${canigo.integration.notificacions.electroniques.version}</version>
</dependency>
<dependency>
<groupId>cat.gencat.ctti</groupId>
<artifactId>canigo.integration.pica</artifactId>
<version>${canigo.integration.pica.version}</version>
</dependency>
A la Matriu de Compatibilitats es pot comprovar la versió del mòdul compatible amb la versió de Canigó utilitzada.
Configuració
Son necessaris els següents arxius de configuració:
- application.yml
- pica.signature.properties
- client.axis2.xml
- modules.list
- rampart-1.3.mar
- certificats.jks
Alguns d’ells es troben en aquest zip adjunt. A continuació es descriu el detall de cadascun.
Ubicació: <PROJECT_ROOT>/src/main/resources/axis2client/conf/client.axis2.xml
Adjunt en el zip.
Ubicació: <PROJECT_ROOT>/src/main/resources/axis2client/conf/rampart-1.3.mar
Adjunt en el zip.
Ubicació: <PROJECT_ROOT>/src/main/resources/axis2client/conf/modules.list
Adjunt en el zip.
Ubicació: <PROJECT_ROOT>/src/main/resources/config/cert/certificats.jks
Adjunt en el zip.
Ubicació: <PROJECT_ROOT>/src/main/resources/config/cert/pica.signature.properties
| Propietat | Descripció |
|---|---|
| org.apache.ws.security.crypto.provider | Defineix el proveïdor de seguretat que s’utilitza per gestionar la criptografia |
| org.apache.ws.security.crypto.merlin.file | Ruta del keystore (JKS) que conté el certificat/clau privada. |
| org.apache.ws.security.crypto.merlin.keystore.type | Tipus d’emmagatzematge de claus, pot ser JKS, PKCS12, etc. |
| org.apache.ws.security.crypto.merlin.keystore.password | Contrasenya per accedir al keystore |
| org.apache.ws.security.crypto.merlin.keystore.provider | Proveïdor de Java que gestiona el keystore |
| org.apache.ws.security.crypto.merlin.keystore.alias | Àlies dins del keystore per identificar la clau/certificat |
| org.apache.ws.security.crypto.merlin.alias.password | Contrasenya per accedir a la clau privada associada a l’àlies anterior |
**Ubicació: <PROJECT_ROOT>/src/main/resources/config/props/application.yml
| Propietat | Requerit | Descripció |
|---|---|---|
| —————————– | ——– | ——— |
| pica.modes.passwordType | No | Tipus de password per a la PICA. Per defecte: PasswordText |
| pica.requirer.signatureFile | Sí | Arxiu de configuració de la seguretat |
| pica.requirer.petitionerId | Sí | Identificador del solicitant |
| pica.requirer.transmitionId | Sí | Identificador de la transmissió |
| pica.requirer.petitionerName | Sí | Nom del peticionari |
| pica.requirer.user | Sí | Usuari que vol consumir un producte/modalitat de la PICA |
| pica.requirer.password | Sí | Password de l’usuari que vol consumir un producte/modalitat de la PICA |
| pica.axisdefinition.location | Sí | Localització de l’arxiu d’axisdefinition |
| pica.trustStore.location | No | Localització de l’arxiu de certificats per a la configuració SSL |
| pica.trustStore.type | No | Tipus de keystore |
| pica.trustStore.password | No | Password de la keystore |
| notificacions.electroniques.picaServiceBeanName | No | Nom del bean de Spring per a PICA. Per defecte: picaService |
| notificacions.electroniques.urlPica | Sí | URL del servei de la PICA |
| notificacions.electroniques.nomEmissor | Sí | Nom de l’emissor |
| notificacions.electroniques.nifEmissor | Sí | Nif de l’emissor |
Exemple:
pica:
axis-definition: classpath:axis2client/
modalitats:
PADRO_MUNICIPI_RESIDENCIA:
signat: false
url-pica: http://preproduccio.pica.intranet.gencat.cat/pica_cataleg/AppJava/services/PADRO_MUNICIPI_RESIDENCIA
cod-certificado: PADRO_MUNICIPI_RESIDENCIA
cod-producto: PADRO
finalidad: PROVES
nif-emisor: Q0801175A
nombre-emisor: CONSORCI AOC
password-type: PasswordText
requeridor:
fitxer-signatura: classpath:config/cert/pica.signature.properties
id-solicitante: ID_SOLICITANTE
id-transmision: ID_TRANSMISION
nombre-solicitante: NOM_SOLICITANTE
password: USER_PASSWORD
user: PASSWORD
modes:
passwordType: PasswordText
requirer:
password: REQUIRER_PASSWORD
petitionerId: PETITIONER_ID
petitionerName: PETITIONER_NAME
signatureFile: classpath:config/cert/pica.signature.properties
transmitionId: TRANSMITION_ID
user: USER
trustStore:
location: classpath:config/cert/certificats.jks
type: JKS
notificacions:
electroniques:
finalitat: PROVES
nifEmisor: Q0801175A
nomEmisor: CONSORCI ADM. OBERTA ELECTRONICA DE CAT.
urlPica: http://preproduccio.pica.intranet.gencat.cat/pica_cataleg/AppJava/services/
Els valors de urlPica, nifEmisor i nomEmisor s’han de consultar a la OT PICA
Utilització del Mòdul
REST
Per a utilitzar aquest mòdul, cal crear un Controller i un Service:
EnotumService.java
Classe Java on es realitzarà la lògica de la operació a realitzar i es connecta amb el mòdul de Notificacions electròniques.
import conectores.notificacions.electroniques.NotificacionsElectroniquesConnector;
import cat.gencat.pica.api.peticio.beans.Funcionari;
import net.gencat.scsp.esquemes.productes.nt.PeticioNtConsultarEvidenciesNotificacio;
import net.gencat.scsp.esquemes.productes.nt.RespostaNtConsultarEvidenciesNotificacio;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class EnotumService {
private static final Logger log = LoggerFactory.getLogger(EnotumService.class);
@Autowired
private NotificacionsElectroniquesConnector enotum;
public String testEnotumEvidencies() {
String resultado;
try {
PeticioNtConsultarEvidenciesNotificacio entrada = new PeticioNtConsultarEvidenciesNotificacio();
entrada.setIdNotificacioNT("277558");
RespostaNtConsultarEvidenciesNotificacio respuesta = enotum.getServeisEmpleatPublic(getFuncionari())
.consultarEvidenciesNotificacio(entrada);
RespostaNtConsultarEvidenciesNotificacio.Evidencies evidencies = null;
if (respuesta.getErrors() != null) {
resultado = respuesta.getErrors().getPICAError().get(0).getCodiError();
System.out.println(respuesta.getErrors().getPICAError());
} else {
evidencies = respuesta.getEvidencies();
System.out.println(evidencies);
resultado = "OK";
}
} catch (Exception e) {
resultado = "Error al test: " + e.getMessage();
log.error(e.getMessage(), e);
}
return resultado;
}
private Funcionari getFuncionari() {
Funcionari funcionari = new Funcionari();
funcionari.setNombreFuncionario("Nom Funcionari");
funcionari.setNifFuncionario("55555555A");
funcionari.setEmailFuncionario("prova@gencat.com");
return funcionari;
}
}
EnotumController.java
Controller que publica les operacions disponibles per a qui hagi de consumir-les
import com.standalone.enotumtest.service.EnotumService;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/enotum")
public class EnotumController {
@Autowired
private EnotumService enotumService;
@Operation(summary = "Recupera tots el registres que hi ha",
description = "Recupera tots totes les dades de la EntidadSample i els llista. \n" +
"\n Retorna una llista EntidadSample")
@PostMapping(produces = { MediaType.APPLICATION_JSON_VALUE })
public String testEnotumEvidencies() throws Exception {
return enotumService.testEnotumEvidencies();
}
}