Data ultimo aggiornamento: 13/06/2012

Clicca per accedere al sito di NTS Informatica
Clicca per accedere all'argomento Clicca per accedere all'argomento Clicca per accedere all'argomento Clicca per accedere all'argomento
Clicca per accedere al sito di NTS Informatica

Esecuzione e schedulazione di elaborazioni 3-tier Classic Start

Come prima cosa occorre capire la differenza fra esecuzione e schedulazione di una elaborazione 3-tier, per esecuzione 3-tier intendiamo l'esecuzione di un processo da parte di un elaboratore richiesta da un altro elaboratore. Per esempio supponiamo che un operatore client abbia bisogno di elaborare una mole consistente di dati, tale operazione rischierebbe bloccare il client per lungo tempo e inoltre di caricare la rete in maniera eccessiva. Lanciando il programma in modalità elaborazione 3-tier tutta la parte elaborativa ricade sul server. Il client può quindi continuare a fare qualche altra cosa senza perdita di prestazioni. Alla fine dell'elaborazione il server rilascia il controllo del servizio e ne comunica l'esito. Per schedulazione di una elaborazione 3-tier si intende invece la possibilità di poter programmare il momento in cui lanciare il programma di cui sopra. Lo schedulatore di SQL Server è molto utile a questo scopo in quanto permette di impostare l'esecuzione del programma ad una determinata ora del giorno oppure periodicamente il tal giorno della settimana, del mese e così via. Una possibilità alternativa di schedulare una elaborazione è fornita anche dal comando "AT" di Windows, o utilizzare direttamente lo strumento di operazioni pianificate\unità di pianificazione.

Architettura 3-tier di Business

Alcune funzioni di menù di Business sono organizzate secondo una logica 3-tier, a tal scopo tali funzioni sono scomposte in 2 blocchi:

  • un blocco con il compito di richiedere l'imputazione dei campi di maschera e di memorizzarli localmente e sul server a seconda del elaborazione/schedulazione del programma (Ctrl+Alt+F5 per la creazione del file BUB nella Asc);
  • un blocco di elaborazione che contiene solo la parte "intelligente" del programma originario. Recupera i dati memorizzati dal blocco precedente e li processa.

Il primo continuerà ad essere richiamato nel modo consueto dal menù di Business, per esempio le elaborazioni statistiche (BSSTGENV), il secondo blocco potrà essere richiamato dal primo (BBSTGENV). Business continuerà così a chiamare, ad esempio, il programma di generazione statistiche di nome "BSSTGENV.DLL" di classe "CLSSTGENV" mentre quest'ultimo a sua volta si appoggerà al programma "BBSTGENV.DLL" di classe "CLBSTGENV".

Il terzo 'tier' è dato dal server di database SQL Server o MSDE.

In condizioni normali, se cioè non si impostano delle proprietà di registro, come vedremo, l'elaborazione viene eseguita da Business sul PC dove viene richiesto, sia il primo che il secondo blocco sono eseguiti cioè sul computer client (si dice anche che si ha pertanto una configurazione predefinita di tipo 2-tier).

Il programma Busbatch.exe

Per permettere un'esecuzione 3-tier o schedulata 3-tier è necessario per prima cosa eseguire il programma Busbatch.exe sia sul client che sul server. Tale programma dovrebbe già trovarsi all'interno della directory di installazione di Business. Busbatch non deve produrre nessun messaggio né deve eseguire elaborazioni. Lo scopo della sua esecuzione è quello di memorizzare alcune informazioni all'interno del registro di Windows (la classe BusBatch.CLS__BBAT). è importante accertarsi che tutti i computer abbiano la stessa versione del programma BusBatch.exe (la si può verificare cliccando con il pulsante destro del mouse sul nome del programma e poi visualizzarne le proprietà).

Busbatch può lanciare sia esecuzioni 3-tier che schedulazioni 3-tier. Il requisito di funzionamento di tutti questi processi è la preventiva installazione del DCOM. Per verificare che la classe BusBatch.CLS__BBAT sia stata registrata correttamente da Windows cercare il programma "dcomcnfg.exe" (si trova di solito nella directory di sistema). Dopo averlo lanciato verificare all'interno della lista la presenza della classe Busbatch.CLS__BBAT. NB: gli eventuali errori del programma BusBatch.exe sono loggati nel visualizzatore eventi di Windows.

Esecuzione Normale (2-tier)

Il programma inizia e termina interamente sul client, il server viene cionvolto solo per la parte relativa alle elaborazioni del motore del database, tipicamente SQL Server. Il comportamento è lo stesso di qualsiasi altro programma di Business, viene però generato un file di testo che contiene i valori imputati in maschera dall'operatore e risiederà sul client nella sottocartella Asc di Business. Tale file avrà nome SCHE_NOMEDLL_OPERATORE.BUB (SCHE_BBSTGENV_admin.BUB se prendiamo l'esempio precedente dell'elaborazioni statistiche). Questo funzionamento si verifica:

  • se non vi sono informazioni specifiche nella sottocartella DCOM del programma in questione all'interno del registro di Business.
  • se la proprietà "BatchExecute" sempre all'interno di questa sottocartella ha valore '0'.

Esecuzione 3-tier

Il programma parte sul client, ma nel momento in cui viene lanciata l'elaborazione, ad esempio per eseguire una stampa, il client crea una istanza di Busbatch sul server che si preoccupa di portare a termine sul server il compito assegnatogli. Appare chiaro che un processo di questo tipo può essere finalizzato o ad una stampa diretta su carta o ad una elaborazione pura, le stampe su video non sono ammesse. Per poter eseguire una elaborazione 3-tier occorre:

  • CONFIGURAZIONE CLIENT
    • Nel caso si disponga del programma 'Remote Automation Connection Manager' (reso disponibile da Visual Basic):
      • Aprire il programma "Remote Automation Connection Manager" sul client.
      • Trovare la classe Busbatch.CLS__BBAT (se tale classe non è presente evidentemente non è stato lanciato almeno una volta il programma Busbatch.exe).
      • Specificare una modalità di esecuzione remota e non locale.
      • Spuntare l'opzione che indica un'esecuzione DCOM.
      • Indicare il nome del server su cui risiede BusBatch.
    • Nel caso non si disponga del programma 'Remote Automation Connection Manager':
      • Eseguire il programma "c:\Windows\System32\Dcomcnfg.exe";
      • Trovare la classe Busbatch.CLS__BBAT (se tale classe non è presente evidentemente non è stato lanciato il programma Busbatch.exe) e fare doppio click.
      • All'interno del tab "Locazione" lasciare come unica spunta quella associata ad "Esegui l'applicazione sul seguente computer" indicando il nome del server su cui risiede BusBatch.
  • CONFIGURAZIONE SERVER
    • Eseguire il programma "c:\Windows\System32\Dcomcnfg.exe".
    • Trovare la classe Busbatch.CLS__BBAT (se tale classe non è presente evidentemente non è stato lanciato il programma Busbatch.exe) e fare doppio click.
    • In corrispondenza del Tab "Identity" selezionare l'opzione "The interactive user".

Il tipo di esecuzione viene impostato tramite una particolare proprietà del registro di Business. Per poter eseguire un programma in maniera Batch occorre creare una sottocartella DCOM alla cartella del progetto in questione (per esempio BSSTGENV\DCOM). Inserire quindi la proprietà "BatchExecute" assegnandole il valore '–1'.

Il percorso del server deve essere indicato come valore della proprietà "ServerPath" all'interno della sottocartella DCOM (registro di Business) del progetto da eseguire. Se l'interfaccia dispone di controlli necessari all'elaborazione viene generato un file di testo che risiederà sul server nella sottocartella Asc di Business. Tale file avrà nome SCHE_NOMEDLL_OPERATORE.BUB (SCHE_BBSTGENV_admin.BUB se prendiamo l'esempio precedente dell'elaborazioni statistiche).

Gli errori possono essere gestiti attraverso il valore della proprietà HaltOnExecute della sottocartella DCOM (registro di Business) del progetto. Il valore –1 termina immediatamente l'elaborazione del programma sul server, mentre il valore 0 bypassa ogni errore.

Esecuzione Schedulata 3-tier (batch)

Il programma parte e termina sul Server. Per poter predisporre una elaborazione schedulata occorre aprire il progetto in esame e riempire gli eventuali controlli presenti sulla form, a questo punto eseguire la combinazione di tasti Ctrl+Alt+F5, verrà aperta una finestra all'interno della quale si potrà indicare quando avviare l'esecuzione del programma e si dovrà indicare il percorso sul server (è possibile anche specificare se bypassare l'errore o terminare l'esecuzione in fase di runtime). Se l'interfaccia dispone di controlli necessari all'elaborazione viene generato, in uscita alla form di gestione della schedulazione, un file di testo che risiederà sul server nella sottocartella Asc di Business. Tale file avrà nome SCHE_NOMEDLL_OPERATORE.BUB (SCHE_BBSTGENV_admin.BUB se prendiamo l'esempio precedente dell'elaborazioni statistiche).

In uscita dalla form vengono generati anche i due file batch:

  • StartBat.bat - può essere utilizzato come comando all'interno di uno schedulatore come quello di SQL Server o di Windows (operazioni pianificate\unità di pianificazione)

  • BusAtStore.bat - se eseguito genera un job di schedulazione utilizzando il comando "AT" di Windows servendosi dei parametri impostati tramite la maschera aperta con la combinazione di tasti Ctrl+Alt+F5 (opzioni di schedulazione), in Windows controllare che nei servizi di schedulazione sia specificato l'account con cui si è entrati in Windows, se si è entrati come "Roby" indicare di conseguenza "Roby" (questo vale per il comando AT)

Il file StartBat.bat indirizzato alla schedulazione gestisce la riga di comando che deve presentarsi in questa maniera:

Busbatch.exe /C NomeDellaClasse /F NomeFileBub /U NomeUtente /A NomeAzienda /E S o N (con S se bloccare l'esecuzione ad ogni errore)

Attenzione: il parametro /F NomeFileBub non è modificabile, indipendentemente dal nome del file indicato il programma va a leggere, nella cartella Asc, il file SCHE_NOMEDLL_OPERATORE.BUB, quindi qualora siano necessari 2 o più processi schedulati dello stesso programma occorre eseguirli col Busatch.exe su operatori di Business diversi, magari creati ad hoc.

Alcuni esempi:

"C:\Bus\BusBatch.exe" /C BBSTGENV /F SCHE_BBSTGENV_admin.BUB /U admin /A PROVA

"C:\Bus\BusBatch.exe" /C BBDWGEND /F SCHE_BBDWGEND_admin.BUB /U admin /A PROVAFASH

"C:\Bus\BusBatch.exe" /C BBSTGENV /F SCHE_BBSTGENV_roby.BUB /U roby /A PROVACRM /E N

"C:\Bus\BusBatch.exe" /C BBSTGENV /F SCHE_BBSTGENV_roby.BUB /U roby /A PROVACRM /E S

Controlli parametrizzabili

Al fine di rendere l'elaborazione schedulata il più flessibile possibile è stata data la possibilità di poter assegnare alle variabili in gioco dei valori in grado di automodificarsi nel tempo. Così ad esempio se una elaborazione statistica viene lanciata alla fine di ogni mese e si vuole per questo che il valore di mese finale di riferimento sia sempre il mese corrente è possibile assegnare al campo suddetto il parametro [#MESE ATTUALE]. Una routine di controllo sostituirà ogni volta il valore corretto. La parametrizzazione è comunque un processo del tutto trasparente che si attua nei seguenti passi:

  • Individuazione del controllo di Form, tipicamente TextBox, dipendente dal tempo.
  • Pressione della combinazione di tasti Ctrl+Alt+F4 si genera l'apertura della finestra di gestione dei controlli, selezionare quello in esame e spuntare il bottone in corrispondenza della colonna di parametrizzazione (l'ultima). Attenzione: prima di salvare applicare la dipendenza da operatore!
  • Ritornare alla Form di partenza e generare la combinazione di tasti Ctrl+Alt+F5. Viene aperta la form di schedulazione. Premere il bottone "Controlli Parametrici". All'apertura della seguente griglia, selezionare per ogni controllo potenzialmente parametrizzabile (selezionato dalla "Personalizzazione dei Controlli") il parametro desiderato.

Per ora sono 6 i parametri gestiti:

  • [#INIZIO ESERCIZIO]
  • [#DATA ODIERNA]
  • [#MESE ATTUALE]
  • [#ANNO ATTUALE]
  • [#MESE SCORSO]
  • [#ANNO SCORSO]

Gli eventuali errori dei processi eseguiti/schedulati sono loggati nel file <BusDir>\ErrLog.bub sulla macchina in cui vengono eseguiti i processi stessi. Tale file viene eliminato e ricreato quando raggiunge 100 KB.

Clicca per accedere al sito di NTS Informatica