pn-delivery-push-workflow-service è un microservizio che gestisce l’intero workflow della notifica successivo alla fase di validazione nell’ecosistema SEND. Il servizio si occupa di orchestrare le diverse fasi del processo notificativo, integrando componenti sia digitali che analogici.
Riceve notifiche già validate e coordina le seguenti attività:
- Invio di messaggi di cortesia ai destinatari
- Scelta del canale di notificazione (digitale o analogico)
- Gestione della logica di business per il workflow digitale
- Gestione parziale del workflow analogico (con delega delle logiche principali al microservizio
pn-paper-channel) - Perfezionamento della notifica
- Visualizzazione delle notifiche
- Gestione della notificazione di pagamento (inserimento informativa in timeline)
- Gestione asincrona dell’annullamento della notifica (la parte sincrona è gestita da un altro microservizio)
Il workflow viene avviato tramite un unico punto di ingresso: al termine della validazione, un messaggio di tipo POST_ACCEPTED_PROCESSING_COMPLETED viene inviato sulla coda SQS pn-delivery-push-action.
Il completamento del processo varia in base al percorso notificativo specifico di ciascuna notifica.
Si compone di:
- Microservizio pn-delivery-push-workflow-service: gestisce l’orchestrazione del workflow notificativo successivo alla validazione, coordinando le interazioni tra i diversi canali (digitali e analogici) e i servizi esterni.
- Lambda pn-notificationCancellationActionInsert-workflow: si occupa della gestione asincrona delle richieste di annullamento notifica, inserendo le relative azioni nel workflow tramite eventi su stream Kinesis.
- Lambda pn-paperEventsCostUpdate-workflow: aggiorna i costi degli eventi relativi alle notifiche cartacee, leggendo gli eventi da uno stream Kinesis e propagando le informazioni verso i registri esterni tramite coda SQS.
https://excalidraw.com/#json=Hk7Qa4AjNhfcMAS_fbEjZ,7_8WMPSLNGf3nP-s7MzuWQ
- Legge sulle code SQS: DeliveryPushInputsQueue, ExternalChannelsOutputsQueue, ScheduledActionsQueue, NationalRegistries2DeliveryPushQueue
- Legge e scrive sulle tabelle DynamoDB: PaperNotificationFailedDynamoTable, DocumentCreationRequestTable
| Variabile Ambiente | Descrizione | Default | Obbligatorio |
|---|---|---|---|
| AWS_REGIONCODE | aws region | - | Si |
| PN_DELIVERYPUSHWORKFLOW_TOPICS_NEWNOTIFICATIONS | Queue to pull for inputs event | - | Si |
| PN_DELIVERYPUSHWORKFLOW_TOPICS_NATIONALREGISTRIESEVENTS | National Registries to delivery-push queue name | - | Si |
| PN_DELIVERYPUSHWORKFLOW_TOPICS_FROMEXTERNALCHANNEL | Pull external-channel messages from this Queue | - | Si |
| PN_DELIVERYPUSHWORKFLOW_TOPICS_SCHEDULEDACTIONS | Send and pull ready-to-do actions th this queue | - | Si |
| PN_DELIVERYPUSHWORKFLOW_EXTERNALCHANNELBASEURL=${ExternalChannelBaseUrl} | external channel base url | - | Si |
| PN_DELIVERYPUSHWORKFLOW_PAPERCHANNELBASEURL | paper channel base url | - | Si |
| PN_DELIVERYPUSHWORKFLOW_USERATTRIBUTESBASEURL | user attributes base url | - | Si |
| PN_DELIVERYPUSHWORKFLOW_SAFESTORAGEBASEURL | Safe storage base url | - | Si |
| PN_DELIVERYPUSHWORKFLOW_DELIVERYBASEURL | delivery base url | - | Si |
| PN_DELIVERYPUSHWORKFLOW_MANDATEBASEURL | mandate base url | - | Si |
| PN_DELIVERYPUSHWORKFLOW_EXTERNALREGISTRYBASEURL | external registry base url | - | Si |
| PN_DELIVERYPUSHWORKFLOW_TEMPLATESENGINEBASEURL | templates engine base url | - | Si |
| PN_DELIVERYPUSHWORKFLOW_TIMELINECLIENTBASEURL | timeline client base url | - | Si |
| PN_DELIVERYPUSHWORKFLOW_EMDINTEGRATIONBASEURL | emd integration base url | - | Si |
| PN_DELIVERYPUSHWORKFLOW_ACTIONMANAGERBASEURL | action manager base url | - | Si |
| PN_DELIVERYPUSHWORKFLOW_NATIONALREGISTRIESBASEURL | national registries base url | - | Si |
| PN_DELIVERYPUSHWORKFLOW_DATAVAULTBASEURL | data vault base url | - | Si |
| PN_DELIVERYPUSHWORKFLOW_DELIVERYPUSHBASEURL | delivery push base url | - | Si |
| PN_DELIVERYPUSHWORKFLOW_DOCUMENTCREATIONREQUESTDAO_TABLENAME | DynamoDb Table name | - | Si |
| PN_DELIVERYPUSHWORKFLOW_FAILEDNOTIFICATIONDAO_TABLENAME | DynamoDb Table name | - | Si |
| PN_CRON_ANALYZER | Cron for which you send the metric to CloudWatch | - | No |
| WIRE_TAP_LOG | Activation of wire logs | - | No |
| PN_DELIVERYPUSHWORKFLOW_PAPERTRACKERBASEURL | paper tracker base url | - | Si |
- Variabile d'ambiente:
PN_DELIVERYPUSHWORKFLOW_TOPICS_NEWNOTIFICATIONS - Tipo: Input
- Scopo: Gestisce eventi relativi al processo di visualizzazione o pagamento di una notifica.
- Trigger: Visualizzazione della notifica o pagamento.
- Variabile d'ambiente:
PN_DELIVERYPUSHWORKFLOW_TOPICS_NATIONALREGISTRIESEVENTS - Tipo: Input
- Scopo:Gestisce le risposte le risposte api asincrone di pn-national-registries per il recupero degli indirizzi digitali o cartacei.
- Trigger: Termine del processo di recupero indirizzo lato pn-national-registries.
- Variabile d'ambiente:
PN_DELIVERYPUSHWORKFLOW_TOPICS_SCHEDULEDACTIONS - Tipo: Input
- Scopo: Gestisce le action legate ai flussi del dominio di workflow.
- Trigger: Scheduling automatico o eventi di errore.
- Variabile d'ambiente:
PN_DELIVERYPUSHWORKFLOW_TOPICS_FROMEXTERNALCHANNEL - Tipo: Input
- Scopo: Gestisce tutti gli eventi relativi ai processi di invio notifiche su canali digitali o analogici.
- Trigger: Avanzamento del processo di invio
- Variabile d'ambiente:
PN_DELIVERYPUSHWORKFLOW_FAILEDNOTIFICATIONDAO_TABLENAME - Nome risorsa CloudFormation:
PaperNotificationFailedDynamoTableName - Tipo: Tabella DynamoDB
- Funzionalità: La tabella PaperNotificationFailedDynamoTable viene utilizzata per persistere tutte le notifiche cartacee che non sono state consegnate.
- Variabile d'ambiente:
PN_DELIVERYPUSHVALIDATOR_DOCUMENTCREATIONREQUESTDAO_TABLENAME - Nome risorsa CloudFormation:
DocumentCreationRequestTableName - Tipo: Tabella DynamoDB
- Funzionalità: La tabella DocumentCreationRequestTable viene utilizzata per persistere le informazioni della richiesta di creazione del legalFacts per poter effettuare successivamente una lookup dal responseHandler di SafeStorage
- Gestisce un messaggio stream Kinesis
CdcKinesisSourceStreame il fine è inserire un action richiamandopn-action-manager. - Elabora messaggi dallo stream Kinesis effettuando un filtro per recuperare eventi relativi a elementi di timeline relativi a una richiesta di annullamento notifica(
NOTIFICATION_CANCELLATION). - Inserisce le action di annullamento notifica (
NOTIFICATION_CANCELLATION), interagendo conpn-action-managerche le smisterà in modo asincrono sul ms dipn-delivery-push-workflowper portare avanti il processo di annullamento della notifica.
Questa Lambda gestisce l’inserimento asincrono delle azioni di annullamento notifica all’interno del workflow.
Riceve eventi da uno stream Kinesis, elabora le richieste di annullamento e interagisce con pn-action-manager per aggiornare lo stato della notifica.
| Variabile Ambiente | Descrizione | Default | Obbligatorio |
|---|---|---|---|
| REGION | aws region | - | Si |
| ACTION_MANAGER_BASE_URL | Action Manager base url | - | Si |
N.B. La lambda utilizzerà un meccanismo di feature flag temporizzato, basato sull’eventTimestamp di kinesis
che permetterà di attivare o disattivare le nuove in maniera programmatica.
I parametri utilizzati saranno i seguenti: NewWorkflowLambdasEnabledStart e NewWorkflowLambdasEnabledEnd
- gestisce un messaggio Kinesis
CdcKinesisSourceStreame il fine e inserire un messaggio su una coda letta dapn-external-registries. - Per ogni evento, estrae le informazioni necessarie per il calcolo o aggiornamento dei costi associati all’evento.
- Esegue la logica di calcolo/aggiornamento dei costi.
- Invia le informazioni aggiornate verso la coda SQS
DeliveryPushToExternalRegistriesQueueverrà letta sul mspn-external-registries.
Questa Lambda aggiorna i costi associati agli eventi delle notifiche cartacee. Processa gli eventi provenienti dallo stream Kinesis,
calcola o aggiorna i costi e invia le informazioni aggiornate verso pn-external-registries sulla sua coda SQS.
| Variabile Ambiente | Descrizione | Default | Obbligatorio |
|---|---|---|---|
| REGION | aws region | - | Si |
| QUEUE_URL | delivery-push to external-registries queue URL | - | Si |
N.B. La lambda utilizzerà un meccanismo di feature flag temporizzato, basato sull’eventTimestamp di kinesis
che permetterà di attivare o disattivare le nuove in maniera programmatica.
I parametri utilizzati saranno i seguenti: NewWorkflowLambdasEnabledStart e NewWorkflowLambdasEnabledEnd