Sottomissione delle richieste tramite file 

Il lancio di richieste adonix mediante server batch può essere guidato da una funzione adonix dedicata: il lancio di richieste. Ma è anche possibile pilotare il lancio di richieste batch dal server utilizzando dei file ascii che contengono la definizione della richiesta in una directory definita nei parametri del server. Ciò permette anche di attivare delle richieste batch a partire da software di supervisione esterni. Questo documento descrive nel dettaglio i file da utilizzare e la cinematica di esecuzione di queste richieste.

Prerequisiti

Affinchè il lancio di richieste batch possa essere fatto tramite file, è necessario:

*    Che il parametro generale Utilizzo dei file batch sia uguale a Si nei parametri del server batch.

*    Che il parametro EXTBATCH sia uguale a Si. Questo parametro, che appartiene al gruppo SUP, può essere definito a livello dossier e utente. E' così possibile vietare completamente il lancio di richieste batch per un dato dossier, accordando se necessario un'eccezione a determinati utenti.

I file di richiesta (estensione .req)

Il lancio di una richiesta batch può essere realizzato tramite il deposito di un file di estensione .job nella directory dedicata a questi file. Questo file deve essere di tipo ascii, strutturato in righe chiuse da <CR> o <CR><LF>, ogni riga definisce il valore di un parametro sotto forma:

PARAMETRO=VALORE

Alcuni parametri sono obbligatori ed identificano il contedto di esecuzione della richiesta. Altri parametri dipendono dalla richiesta da lanciare; il loro nome corrisponde al nome dei parametri definiti nella videata associata al lancio della richiesta. In alcuni casi, un riquadro di parametri è definito nella videata; la sintassi è allora PARAMETRO(indice)=VALORE, dove indice è un valore numerico.

Per facilitare la creazione di un simile file, è possibile lanciare la richiesta dal software, contrassegnando la casella modello nella videata di lancio delle richieste. Se si fa ciò, nella directory di lancio sarà creato un file contenente la lista completa dei parametri di lancio e il loro valore. Questo file è creato con il nome della richiesta e l'estensione .mod.

Nella riquadro qui sotto si trovano il nome dei parametri obbligatori e la loro definizione.

PARAMETRO

DEFINIZIONE

DOSSIER

Il codice del dossier su cui deve essere lanciata la richiesta

UTIL

Il codice dell'utente di connessione al dossier

PASSE

Password criptata dell'utente

GRP

Il gruppo di richieste (se un gruppo viene lanciato)

TACHE

La richiesta (se viene lanciata una richiesta)

DATE

La data di lancio (nel formato AAAAMMGG)

HEURE

L’ora di lancio (nel formato HHMM)

Si noti che i valori del parametro sono indicati senza nessun separatore e che è possibile mettere delle righe di commenti prefissati dal carattere #. Così, si potrà mettere nel file delle richieste:

         # Parametri obbligatori

         DOSSIER=DEMO

         DATE=20020614

        …

       # Parametri complementari

       PARAM(1)=TEST

        PARAM(2)=ABC

Cinematica dell'elaborazione dei file di richiesta

Il server batch ispeziona a intervalli regolari il contenuto della directory dedicata ai file di richiesta. Al momento dell'ispezione, legge i file presenti nella directory prendendoli nell'ordine ascii. Si consiglia quindi di chiamare questi file con una radice fissa e un numero sequenziale su una lunghezza fissa. Si potrebbe per esempio nominarli REQ000001.req, REQ0000002.req

Durante l'elaborazione di ogni file, vengono creati dei file successivamente nelle varie directory definite dai parametri del server batch. Tali file sono definiti qui in basso:

FASE DI ELABORAZIONE

FILE AGGIORNATI

Deposito di una richiesta di elaborazione batch

Creazione del file xxxxx.job da un processo esterno, nella directory dedicata.

Il server batch considera la richiesta e aggiorna la sua tabella di richieste da lanciare.

Il file xxxxx.job  è rinominato in xxxxx.req (e spostato se le directory non sono le stesse)

Il server individua un errore nel file dei parametri (password errata, codice job sconosciuto...)

Il file xxxxx.job  è rinominato in xxxxx.old (e spostato se le directory non sono le stesse) Viene creato un file xxxxx.sta nella directory dedicata. Contiene un codice errore che permette di sapere che il file di input era errato (vedere formato del file qui di seguito).

La richiesta è in corso di esecuzione poiché il server batch l'ha lanciata

Il file xxxxx.req  è rinominato in xxxxx.old (e spostato se le directory non sono le stesse) Viene creato un file chiamato xxxxx.run nella directory dedicata.

La richiesta è terminata (correttamente o con un errore)

Il file xxxxx.run è cancellato e viene creato un file xxxxx.sta nella directory dedicata: questo file contiene un stato di ritorno (vedere formato del file qui sotto).

Deposito di una richiesta di interruzione di richiesta batch (in attesa di lancio o già lanciata)

Creazione del file xxxxx.kil da un processo esterno, nella directory dedicata.

Presa in conto della richiesta di interruzione (se la richiesta non è ancora lanciata)

Il file xxxxx.req (o il file xxxxx.job se non fosse stato ancora preso in considerazione) è rinominato in xxxxx.old. Il file xxxxx.sta è creato nella directory dedicata. Contiene un codice errore che permette di sapere che la richiesta è stata interrotta senza essere stata lanciata. Il file xxxxx.kil viene cancellato.

Presa in considerazione della richiesta di interruzione (se la richiesta è già lanciata e non è ancora terminata)

La richiesta è interrotta da killadx, poi viene creato il file xxxxx.sta nella directory dedicata, con un codice errore che permette di sapere che la richiesta è stata interrotta. I file xxxxx.kil e xxxxx.run sono cancellati.

Tenuto conto delle priorità di esecuzione o dell'arresto del server batch, non è stato possibile lanciare la richiesta nei termini previsti (richiesta fuori termine)

La richiesta non è lanciata, ma il file xxxxx.req (il file xxxxx.job all'occorrenza) è rinominato in xxxx.old e se necessario spostato. Viene creato un file xxxxx.sta nella directory dedicata. Contiene un codice errore che permette di sapere che non è stato possibile lanciare la richiesta.

Si noti che il fatto che un file xxxxx.run esista non significa necessariamente che la richiesta in questione giri. Infatti, se il server batch è stato arrestato senza arrestare le richieste che giravano, i file xxxxx.run corrispondenti esisteranno sempre anche se la richiesta avrà terminato la sua elaborazione. In questo caso, neanche il file xxxxx.sta verrà creato. Al contrario, quando il server sarà lanciato di nuovo, il file xxxxx.run verrà cancellato, un filexxxxx.stache contiene uno stato particolare viene allora creato.

Il numero di richieste batch in corso di elaborazione non deve necessariamente dedursi dal numero dei file xxxxx.run presenti nella directory dedicata.

Descrizione dei file XXX.sta, XXX.run, XXX.kil

Questi file sono dei file ascii, codificati in ascii 8 bits, presenti in diverse directory, secondo la parametrizzazione:

  • Il file .kil può essere vuoto o contenere un commento che sarà ripreso nel file di estensione .sta
  • Il file .run contiene una riga conforme alla struttura definita qui in basso, le informazioni indicate sono il numero della richiesta, la data e l'ora di inizio e il codice del job (le altre informazioni sono alimentate con degli 0 o degli spazi)
  • Il file .sta contiene una riga il cui formato è definito qui in basso, tutti i campi sono alimentati.

La struttura della riga unica contenuta nei file .run e .sta è la seguente:

  • La riga è composta da 8 campi di lunghezza fissa con dei separatori (il carattere due punti ‘ :’).
  • La lunghezza totale è di 154 o 155 caratteri

Lo schema esatto è il seguente:

N° stato

N° richiesta

Data e ora inizio

Data e ora fine

Codice dossier

Codice utente

Codice del job

Messaggio per esteso

Fine riga

NNNNN

NNNNNNNN

AAAAMMGGHHMMSS

AAAAMMGGHHMMSS

DDDDDDDDDD

UUUUU

TTTTTTTTTT

XXXXXXXXXXXXXXXXXX

<CR>
o <CR><LF>

5 cifre

(8 cifre)

(14 cifre)

(14 cifre)

(10 caratteri)

(5 caratteri)

(10 caratteri)

(80 caratteri)

(1 o 2 byte)

Il campo messaggio permette, se necessario, di spiegare il codice errore. E' memorizzato nella lunghezza fissa di 80 caratteri (il messaggio è completato, se necessario, da spazi)

Il numero di richiesta è memorizzato su 8 caratteri, se necessario prefissato da degli zero. Questo numero permette di conoscere il nome del file di traccia generato all'esecuzione della richiesta. Infatti, questo file si chiama RQTNNNNNNNN.tra (dove NNNNNNNN è il numero di richiesta su 8 caratteri). Lo si trova nella sottodirectory TRA del dossier SERVX3. Si noti che questo numero può essere nullo in alcuni casi di errore, se non è stato possibile lanciare nessuna richiesta.

Il codice del job corrisponde al job o al concatenamento di job lanciati, così come conosciuto nella tabella dei job o dei concatenamenti.

Il codice stato, su 5 caratteri numerici, permette di conoscere il risultato dell'esecuzione. La prima cifra determina il risultato globale dell'esecuzione, mentre le cifre successive forniscono delle informazioni complementari. Quando la richiesta è terminata senza errori e senza avvisi, si ha un codice errore uguale a 00000. Il dettaglio dei codici è fornito qui in basso:

Valore del codice errore su 5 cifre

Messaggio per esteso

Prima cifra

Significato

Complemento

Significato

 

0

Fine normale dell'elaborazione

0000

Senza avviso

RICHIESTA TERMINATA

NNNN

Con NNNNavvisi nella traccia (9999 se 9999 o più)

RICHIESTA TERMINATA CON AVVISI

1

 

 

Fine dell'elaborazione su errore

 

 

0000

Errore non specificato (per esempio se GOK = -1 e nessuna informazione supplementare)

RICHIESTA TERMINATA CON ERRORE SCONOSCIUTO

1NNN

Errore n° NNNNdel motore adonix (messaggio M)

FINE SU ERRORE ADONIX: M

 2000

Errore di lock (GOK=0)

ERRORE DI LOCK

 3NNN

Errore logico di elaborazione con: NNN =valore variabile GERRBATCH,
M = valore variabile GMESSBATCH

RICHIESTA TERMINATA CON ERRORE M

Note importanti :

  • le variabili GERRBATCH e GMESSBATCH permettono ad uno sviluppatore di qualificare in modo preciso delle condizioni di errore, e ciò è possibile sia su un job specifico, ma anche su un job standard utilizzando entry point.

  • Il valore della variabile GERRBATCH influisce sul seguito dell'elaborazione, quando questa è integrata in un gruppo di job. Infatti, se la variabile GERRBATCH è strettamente inferiore a 100, il job che segue sarà lanciato malgrado l'errore. Se invece GERRBATCH ha un valore maggiore o uguale, i job successivi nel gruppo non sono lanciati.

2

 

 

 

 

 

Elaborazione non lanciata

 

 

 

 

 

1000

Il job è stato programmato ad un'ora determinata, ma non è stato possibile lanciarlo nei termini previsti.

TERMINE SUPERATO

2000

Job inesistente

TTTJOB INESISTENTE

3000

Abilitazione (non specificata)

ELABORAZIONE NON LANCIATA PER PROBLEMA DI ABILITAZIONE NON SPECIFICATO

 3100

Abilitazione (utente U sconosciuto)

UTENTE USCONOSCIUTO

 3200

Abilitazione (password errata per utente U)

PASSWORD ERRATA PER L'UTENTE U

 3300

Abilitazione (rifiuto da entry point)

ELABORAZIONE NON LANCIATA PER DIRITTI RIFIUTATI DA ENTRY POINT

3400

Abilitazione (livello N del job vietato all'utente U insufficiente)

LIVELLO DI ACCESSO NNON AUTORIZZATO ALL'UTENTE U

3500

Abilitazione (funzione Fnon autorizzata all'utente U)

F FUNZIONE NON AUTORIZZATA ALL'UTENTE U

4NNN

Passaggio in modalità mono impossibile (NNNutenti in corso)

PASSAGGIO IN MODALITA' MONO IMPOSSIBILE PERCHE' NNNUTENTI CONNESSI

5000

ElaborazioneTinesistente

ELABORAZIONETINESISTENTE

3

Arresto dell'elaborazione

0000

Arresto dell'elaborazione, ragione sconosciuta (per esempio se un processo diverso dal server batch ha cancellato la richiesta)

RICHIESTA INTERROTTA (RAGIONE SCONOSCIUTA)

1000

Per file d’estensione .kil, che contiene il messaggio M

RICHIESTA INTERROTTA DAU PER IL MOTIVO M

Nota: nel caso di un kill per file, il codice utente può essere vuoto. Infatti, il sistema cerca, a partire dall'identificativo dell'utente che ha creato il file, se un codice utente adonix corrisponde o meno. Questa ricerca può non funzionare secondo i sistemi operativi utilizzati.

2000

Dalla gestione dei job e l'utente U: il messaggio inserito è M

RICHIESTA INTERROTTA DA U PER IL MOTIVO M

3000

Dal server batch causa time-out

ELABORAZIONE INTERROTTA DAL SERVER RAGIONE=SUPERAMENTO DEL TEMPO ACCORDATO

Osservazioni

Nel quadro della modellizzazione dei job batch (modello GTRAITE), occorre notare che l'utente dispone delle seguenti variabili, accessibili nei job specifici o in jobs standard tramite entry point :

  • La variabile GOK è uno stato aggiornato a partire dal lancio del job. Vale 1 se non ci sono problemi, 0 in caso di errore di lock, -1 su un errore grave e 2 su un errore grave di coerenza del server. Questa variabile è gestita dai jobs standard: se non vale 1 alla fine dell'elaborazione batch, il job appare in stato Errore in controllo dei jobs; in questo caso, se il job fa parte di un gruppo di jobs, i jobs successivi sono bloccati e non saranno mai lanciati.
  • La variabile GERREUR viene valorizzata solo in caso di errore all'esecuzione di un'istruzione (è il numero di errore che corrisponde ad un'eccezione elaborata dall'istruzione Onerrgo). Se questa variabile non è nulla alla fine del job, lo stato del job è posizionato su Fallito in controllo dei jobs, e i jobs che seguono sono bloccati, se il job fa parte di un gruppo.
  • La variabile GERRTRACE permette di contare il numero di righe di traccia di errore create dal job. E' gestita anch'essa dai jobs standard. Il fatto che sia positiva mette il job in Errore nel job di controllo, senza però bloccare il concatenamento dei jobs successivi in un gruppo. Infatti si tratta del conteggio di un numero di righe di errore che si suppongono non essere gravi.
  • La variabile GERRBATCH è una variabile numerica supplementare, che permette di dare un codice di errore che dipende dal job se si considera che il job non è terminato bene (indipendentemente dal fatto che delle righe di traccia di errore siano state o meno generate). Se il valore GERRBATCH è inferiore a 100, si considera che si tratta di uno stato di errore non grave. Se in compenso il valore di GERRBATCH è maggiore o uguale a 100, lo stato del job nella funzione di controllo dei job passa a Errore alla fine dell'esecuzione, e se il job fa parte di un gruppo, il concatenamento dei job successivi si interrompe. Questa variabile è stata creata per permettere una gestione di errore specifico tramite un entry point..
  • La variabile GMESSBATCH è una variabile alfanumerica che permette di dare un messaggio di errore complementare. Questo messaggio è inserito nel contenuto del file di estensione .sta se si verifica un errore.

Salvo errore di coerenza al lancio, i job batch standard del software considerano in tutti i casi che gli errori riscontrati non sono gravi e aggiornano semplicemente la traccia incrementando GERRTRACE. Ciò significa che ogni errore grave che deve interrompere l'elaborazione deve essere trattato in modo specifico tramite entry point, dando a GERRBATCH un valore superiore a 100.

Descrizione del file server.tra

Questo file, presente nella sotto-directory TRA della directory SERVX3, contiene la traccia del server. La struttura delle righe è conforme a quella di un file di traccia classico (testata normalizzata e stati numerici su 5 caratteri). Ogni riga è composta da un testo eventualmente prefissato da un numero (questo numero è lui stesso preceduto dal carattere < se si considera che si tratta di un errore, da = se si tratta di un avviso.

I numeri degli stati successivi esistono (sono prefissati da 4 e 5 per delle ragioni di continuità di numerazione con gli stati precedenti). Si osservi che gli stati che cominciano con 4 sono degli stati gravi che non dovrebbero capitare in una gestione normale (problemi di aggiornamento, di gestione dei jobs, di lock del server batch) e possono provenire da problemi sistemistici, sia da una cattiva installazione, o ancora da specifici. Gli stati che cominciano con 5 sono stati normali dell'attività del server batch:

ERRORI GRAVI DI COERENZA DEL SERVER

Stato

Spiegazione

Testo 

41000

Desincronizzazione job

ERRORE DESINCRONIZZAZIONE JOB

42000

Problema di accesso alla tabella dei job

ERRORE DI ACCESSO ALLA TABELLA DEI JOB

43000

Numero di richiesta inesistente

ERRORE RICHIESTA INESISTENTE

44000

Problema di accesso alla tabella dei parametri batch

 

 

MESSAGGI NORMALI DI GESTIONE DEL SERVER

50000

Avvio del server

AVVIO DEL SERVER BATCH

51000

Attivazione richiesta (process id P)

ATTIVAZIONE RICHIESTA PID=P

52NNN

Errore adonix NNNall'avvio server (messaggio di errore = M)

ERRORE ALL'AVVIO DEL SERVER M

53000

Altro errore all'avvio del server

ERRORE INDETERMINATO ALL'AVVIO DEL SERVER

54000

Lancio server quando è già attivo

SERVER GIA' ATTIVO

55000

Disattivazione server

 

Descrizione dei file RQTNNNNNNNN.tra

Questi file, presenti nella sotto-directory TRA della directory SERVX3, contengono la traccia associata alla richiesta stessa. La struttura delle righe è conforme a quella di un file di traccia classico (testata normalizzata e stati numerici su 5 caratteri). Ogni riga è composta da un testo eventualmente prefissato da un numero (questo numero è preceduto dal carattere < se si considera che si tratta di un errore o di un avviso). Questi file possono essere letti direttamente dal gestore delle richieste con un clic destro / Lettura traccia.

Superata la riga di testata, la prima riga di un tale file si presenta sotto forma di una riga dal seguente formato (integra lo stato Attivazione richiestadefinito qui in basso):

=51000 NNNNNNNNGG/MM/AA hh :mm :ss Attivazione richiesta (51000)

(NNNNNNNNrappresenta qui il numero del job)

Le righe di traccia classica del job seguono questa prima riga (se l'elaborazione in questione non è lanciata in batch, queste righe sarebbero scritte in un file di traccia classico FNNNNN.tra nella directory TRA del dossier di lancio). Poi, salvo nel caso in cui il job sia stato arrestato bruscamente (con un killadx, per esempio), si troverà una riga finale di struttura identica, ma il cui numero è conforme allo stato di fine corretto (00000) o di errore (1NNNN) descritto sopra.

Tabelle utilizzate

Le tabelle utilizzate dalla funzione sono le seguenti: