Vai al contenuto

CoreCoordinator

Il CoreCoordinator rappresenta l'orchestratore centrale (singleton) per l'intero add-on sviluppato con il Framework Ribes. Gestisce l'inizializzazione dell'applicativo e fa da punto d'ingresso per la configurazione.

Pattern Singleton

Il framework utilizza il pattern singleton per garantire un'unica istanza. Si accede tramite il metodo CoreCoordinator.Istance():

CoreCoordinator coordinator = CoreCoordinator.Istance(Assembly.GetEntryAssembly());

Nota sul nome

Nel codice la chiamata è Istance() e non Instance().

Sequenza di Inizializzazione

Il metodo principale per avviare l'add-on è initApplication(). La sua esecuzione segue una sequenza ben precisa:

graph TD;
    A[SAPManager Inizializzazione] --> B[Creazione UDT/UDF da XML]
    B --> C[Inizializzazione DB]
    C --> D[Caricamento Traduzioni]
    D --> E[Registrazione Eventi]
    E --> F[Caricamento Menu da XML]
  1. Inizializzazione SAPManager: Connessione alle API SAP e recupero parametri base.
  2. Creazione UDT/UDF: Se necessario, vengono letti i file XML per creare le tabelle e i campi definiti dall'utente.
  3. Inizializzazione DB: Creazione di viste e funzioni specifiche.
  4. Caricamento Traduzioni: Lettura della tabella delle traduzioni per i campi personalizzati.
  5. Registrazione Eventi: Registra le classi che gestiscono gli eventi di sistema e dei form.
  6. Caricamento Menu (initMenuBatch): Tramite InitializeAllCustomMenus() i menu definiti in XML vengono caricati a blocchi su SAP.

Esiste anche una variante initApplicationDebug() che esegue la stessa sequenza ma effettua un benchmarking tramite Stopwatch, salvando un log dei tempi impiegati per ogni passaggio.

Sistema di Parametri

Il coordinatore permette di registrare varie configurazioni tramite il metodo Parameter.

  • Setter: Parameter(string key, object value)
  • Getter: Parameter(string key)

Costanti di Configurazione

È possibile configurare le seguenti costanti: - EVENT_CONFIGURATION: Lista delle classi di gestione eventi. - MENU_XML_PATH: Percorsi ai file XML dei menu. - UDT_XML_PATH: Percorsi ai file XML delle tabelle utente. - ADOON_NAME: Nome dell'add-on. - TRANSLATION_XML_FILE: File XML delle traduzioni. - QUERY_XML_FILE: File XML delle query di base. Viene processato da initQueryTranslation().

Esempio Pratico

Di seguito un esempio tipico di come usare il CoreCoordinator all'interno del Program.cs:

static void Main()
{
    CoreCoordinator cc = CoreCoordinator.Istance(Assembly.GetExecutingAssembly());

    // Aggiunta delle configurazioni
    cc.Parameter(CoreCoordinator.MENU_XML_PATH, "Menu.xml");
    cc.Parameter(CoreCoordinator.EVENT_CONFIGURATION, new MySalesOrderEvents());

    // Inizializzazione custom dell'add-on
    MyAddonInit init = new MyAddonInit(ref cc);

    // Avvio effettivo
    cc.initApplication();

    System.Windows.Forms.Application.Run();
}

Classe Base GenericInit

Un elemento strettamente collegato al CoreCoordinator è la classe astratta GenericInit.cs. Nello sviluppo di un nuovo add-on, solitamente si crea una classe che eredita da GenericInit e implementa i seguenti metodi: - AddCoreParameters(): Aggiunge i parametri e i file XML al CoreCoordinator. - InitReport(): Inizializza i report di Crystal Reports. - InitAuthorizations(): Gestisce la creazione degli alberi di autorizzazione. - initDB(): Script SQL custom da lanciare. - initFormattedSearch(): Inizializza le query e le ricerche formattate (FMS).