Vai al contenuto

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>"]
  1. Avvio: l'add-on parte (tipicamente lanciato da SAP stesso, oppure manualmente durante lo sviluppo) e si connette a SBO_Application.
  2. Sottoscrizione agli eventi: ci si aggancia ai canali di eventi (ItemEvent, FormDataEvent, MenuEvent, AppEvent...).
  3. Esecuzione: l'add-on resta in ascolto e reagisce agli eventi finché l'utente lavora.
  4. 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.