JSup - Forlani

Invio email allarmi da JSup (Draft)

Appunti sull'implementazione

Una tabella di destinatari delle email strutturata come segue

Nominativo

Email

Gruppo 1

Gruppo 2

...

Alessandro Forlani

alessandro.forlani@myemail.it

...


Per l'invio è stata utilizzata la libreria JavaMail (javax.mail.*).

Guida all'utilizzo

Importare la libreria di JSup L:\SUPERVIS\JSup\Librerie\InvioEmailAllarmi.jsupLib nell'applicazione in cui si vuole gestire l'invio delle email di allarme.

Nello script di Startup, sia del dominio shared che del dominio user, chiamare initMailSend().

In JSup definire la proprietà sendemail.group=xxx (facendo riferimento alla tabella sopra xxx potrebbe essere Gruppo 1 o Gruppo 2) per i gruppi allarme per i quali si desidera che venga inviata l'email.
Eventualmente definire la proprietà sendemail.group=none (oppure un altro gruppo) per i sottogruppi allarmi per i quali si vuole disabilitare l'invio (oppure specificare un altro gruppo).


Nel file di configurazione di JSup (C:\Program Files (x86)\JSup\JSup.cfg) del PC che dovrà inviare le email definire il server SMTP per l'invio della posta, definendo la proprietà -Dmail.smtp.host=smtp.server.boh.

Nelle proprietà dell'applicazione JSup definire varie proprietà:
alarm.sendemail.default.


Le proprietà specificate sopra possono essere personalizzate per un gruppo allarmi (per esempio antincendio) utilizzando delle proprietà alarm.sendemail.group_antincendio.collectMinTime ecc.

Oltre alle proprietà elencate qui sopra per il default dei gruppi, è possibile definire:



Esempio di configurazione:

alarm.sendemail.default.body=ALLARMI NON ACQUISITI %2$S:\n%3$s\n\nEmail inviata automaticamente dal sistema di supervisione.\nSi prega di non rispondere.
alarm.sendemail.default.collectMaxTime=10
alarm.sendemail.default.collectMinTime=1
alarm.sendemail.default.event.ACKNOWLEDGE=-ACQUISIZIONE-
alarm.sendemail.default.event.ACTIVE=----ATTIVO----
alarm.sendemail.default.event.NORMAL=--NON ATTIVO--
alarm.sendemail.default.format=%4$15s %14$s %15$s %8$s [%6$s]
alarm.sendemail.default.from=allarmi.plantname@customer.com
alarm.sendemail.default.repetitionCheckTimeLen=60
alarm.sendemail.default.repetitionMaxCount=6
alarm.sendemail.default.sendForAck=0
alarm.sendemail.default.sendForOff=1
alarm.sendemail.default.sendUnackOnly=1
alarm.sendemail.default.subject=Allarme da supervisore XXXXX
alarm.sendemail.default.expireMin=2880

Gestione notifica allarmi

E' stata aggiunta la possibilità di gestire in maniera estesa la notifica degli allarmi via email.
Questo viene fatto tramite una gestione degli stati per ogni evento, che vengono gestiti e modificati da un oggetto che implementa l'interfaccia EventCollector.EventStateHandler, ovvero il metodo
int handleEvent( final AlarmEvent event, final int currentState )
che ottiene un evento da gestire, il suo stato corrente e deve ritornare il nuovo stato (o il medesimo se non cambia).
Gli stati base sono i seguenti (si tratta di costanti int):


Per definire e attivare l'hadler della notifica degli allarmi via email basta seguire il seguente esempio.
Nella funzione initMailSend(), prima di creare i gruppi di notifica allarmi via email (mailSendGroups = new MailSendGroups(...)), definire l'oggetto che si occuperà di gestire la notifica degli allarmi:

  // impostazione filtro eventi
  final AlarmEventStateHandler aesh = new AlarmEventStateHandler();
  setAlarmNotificationStateHandler( aesh );