Realizzate le verifiche e effettuate le inizializzazioni, i file vengono sistemati nelle sotto-directory e della directory SERVX3:
Inoltre, si verifica il numero di richieste che possono essere lanciate simultaneamente, da una parte in funzione della parametrizzazione realizzata e d'altra parte in funzione del numero di processi batch autorizzati dalla licenza.
Il ciclo principale di funzionamento del serveur batch è riassunto qui in basso:
Si osservi che la presenza di un file kill nella directory FIL del dossier SERVX3 provoca l'arresto di tutti i job batch ancora in corso, e la presenza di un file stop in questa stessa directory provoca l'arresto del server. Se si vuole arrestare il server batch arrestando tutte le richieste, occorre posizionare i due file nella directory, iniziando dal primo, ma in modo ravvicinato (nel termine di 2 secondi), in modo che il server inizi ad arrestare i job per poi arrestarsi.
I job da eseguire sono ricercati in un ordine cronologico crescente: il primo è il più vecchio, fino a quando il ritardo ammissibile al lancio (così com'è definito, in ore, nella scheda job), non viene superato. Si noti a questo proposito che i vincoli orari dati definiscono un'ora di lancio programmata per il job. Vedere il capitolo che riguarda la >gestione dei vincoli degli orari qui di seguito.
Si noti che un tempo « di elaborazione » permette di definire un termine di tempo alla fine del quale il server si attiva periodicamente per elaborare le nuove richieste che arrivano (un termine compreso tra i 30 secondi ed 1 minuto è spesso ragionevole, con la consapevolezza che ogni 2 secondi si esegue un'elaborazione di polling che risponde alle sollecitazioni dei processi che interrogano il server per verificare che sia sempre in vita.
Il lancio di una richiesta si effettua come illustrato dallo schema qui in basso:
Sul dossier SERVX3, si lancia un processo ADONIX sul dossier giusto, e si recupera il numero del processo per aggiornare le informazioni corrispondenti. Se la richiesta è stata sottomessa da file, si aggiornao i file corrispondenti.
Sul dossier interessato, l'esecuzione del processo associato alla richiesta inizia con l'aprire la traccia, verificare i vincoli di esecuzione (si è in mono-utenza, l'utente ha sempre il diritto di esecuzione ?). Poi si lancia l'elaborazione o lo script, e si esegue l'elaborazione di fine job:
Si noti che oltre alla chiusura del file di traccia e l'aggiornamento dei file relativi ai lanci da file, la fine del job attiva il job successivo di un gruppo se non ci sono stati errori, e passa i job successivi allo stato fallito in caso contrario.
Le elaborazioni complementari non descritte qui in basso riguardano essenzialmente il polling (si cancella un file stat nella sotto-directory FIL del dossier SERVX3, se è stato creato da un job che desidera testare che il server sia sempre attivo), e l'elaborazione delle richieste in time-out. Si noti che può essere definito un termine superiore al primo termine di elaborazione, per evitare il test delle richieste che verifica se hanno superato il termine impartito. Essendo questa elaborazione pesante, si può proporre, per esempio, un termine nell'ordine di 5 minuti (si suppone che si ammetta un superamento al massimo di 5 minuti oltre il termine massimo autorizzato da questo job):
L'aggiornamento dell'elenco delle richieste può essere fatto utilizzando file esterni (è il box di lettura dei file della sottomissione di richieste indicato nel ciclo principale del serveur). Questa elaborazione è descritta tramite lo schema qui in basso:
Infine, l'ultima elaborazione presente nel ciclo di esecuzione del server riguarda l'elaborazione delle schedulazioni. Viene descritta qui di seguito:
E' possibile definire dei vincoli di orari per il lancio di un job o di un gruppo di job. Questi vincoli sono considerati solo per il lancio del job. Si prenda un esempio:
I vincoli di orario sono definiti da una tabella dedicata comune a tutti i dossier, che permette di definire degli orari per i giorni lavorativi e degli orari diversi per i giorni festivi. Può essere assegnato un codice di limitazione di orario ad un job, ma anche ad un gruppo di jobs. E' importante notare le seguenti regole:
Si osservi che le tabelle coinvolte sono presenti solo nel dossier supervisore, e questo dossier può assumere dei nomi diversi a seconda del prodotto installato: per esempio X3, ABELX3, GX. Sono quindi comuni a tutti i dossier.
Tabella | Descrizione Tabella |
ABATABT [ABA] | Server batch (schedulazioni) – testata |
ABATABTD [ABD] | Server batch (schedulazioni) – righe |
ABATCAL [ABC] | Calendario di esclusione |
ABATGRP [ABG] | Server batch (gruppi) |
ABATHOR [ABH] | Vincoli orari |
ABATPAR [ABP] | Parametri del server batch |
ABATRQT [ABR] | Richieste del server batch |
ABATTAC [ABT] | Server batch (job) |