Ciclo di vita di un add-on¶
Un add-on SAP B1 non è un programma "libero" che gira per conto suo — è un processo che si aggancia all'applicazione client SAP già in esecuzione, resta in ascolto di eventi, e deve terminare in modo pulito quando SAP si chiude.
Fasi principali¶
flowchart LR
A["<b>1. Avvio</b><br/><i>Connessione a SBO_Application</i>"] --> B["<b>2. Sottoscrizione</b><br/><i>Registrazione ItemEvent, MenuEvent, AppEvent</i>"]
B --> C["<b>3. Esecuzione</b><br/><i>Loop di ascolto eventi dell'utente</i>"]
C --> D["<b>4. Chiusura</b><br/><i>Intercettazione aet_ShutDown ed Exit pulito</i>"]
- Avvio: l'add-on parte (tipicamente lanciato da SAP stesso, oppure manualmente durante lo sviluppo) e si connette a
SBO_Application. - Sottoscrizione agli eventi: ci si aggancia ai canali di eventi (
ItemEvent,FormDataEvent,MenuEvent,AppEvent...). - Esecuzione: l'add-on resta in ascolto e reagisce agli eventi finché l'utente lavora.
- Chiusura: quando SAP si chiude, l'add-on deve ricevere la notifica e terminare — se non gestita, il processo può restare "appeso" in background.
L'evento AppEvent¶
Il canale AppEvent notifica eventi a livello di applicazione, incluso lo shutdown.
SBO_Application.AppEvent += new SAPbouiCOM._IApplicationEvents_AppEventEventHandler(SBO_Application_AppEvent);
private void SBO_Application_AppEvent(SAPbouiCOM.BoAppEventTypes EventType)
{
switch (EventType)
{
case SAPbouiCOM.BoAppEventTypes.aet_ShutDown:
case SAPbouiCOM.BoAppEventTypes.aet_CompanyChanged:
case SAPbouiCOM.BoAppEventTypes.aet_LanguageChanged:
// Chiusura pulita: rilasciare risorse, disconnettere, terminare il processo
System.Windows.Forms.Application.Exit();
break;
}
}
Attenzione
Se non gestisci aet_ShutDown, l'add-on può restare in esecuzione anche dopo che l'utente ha chiuso SAP Business One — un problema comune in fase di test, dove si accumulano processi "fantasma" da chiudere manualmente da Task Manager.