Skip to main content

6. Implementazione dei WS GISFO-XME e XME-GISFO

due nuovi WS: WS1 da GISFO a XME per chiedere le giornate, WS2 da XME a GISFO per inviare le giornate

Come anticipato, sarà necessario implementare una serie di Web Service per gestire tutte le comunicazioni da GisFo a XME e viceversa. In particolare, XME dovrà esporre un Web Service volto all' invio dei dati relativi alle giornate lavori e alle tratte da inserire in modo automatico :

  • WS1 da XME a GisFo per invio dati

Viceversa, GisFo dovrà esporre un Web Service volto alla ricezione delle giornate lavori inviate da XME, ossia:

  • WS2 da GisFo a XME per Ricezione ed Esito GDL 

Successivamente si descrivono nel dettaglio le mimiche, la struttura e le modalità di gestione degli errori di ciascun Web Service. Alla fine del capitolo sono riepilogati i possibili errori con relativo codice.

WS1 per Invio dati Giornale Lavori

Per ogni transazione, si avrà una comunicazione sul WS 1 a seguito della richiesta dell'operatore, evento che definisce la data di inizio Transazione.
Il WS esposto sarà di tipo RESTful, metodo HTTP POST, raggiungibile tramite il seguente URL:

La struttura dell’oggetto json inserito nel body dell'invio del WS 1 dovrà essere analoga alla seguente:

{
    "id_transaction":1234,
    "tratta_g4w": [ 
        {
            "nome_tratta": "ABI2ARIELLI00000",
            "giornate":[
                {
                    "data_gl": "2023-02-06",
                    "stato_cantiere":"Attivo",
                    "motivo_stato_cantiere": null,
                    "meteo": "Sereno",
                    "presenza_archeologo": true,
                    "ore_lavorate_arch": 1.5,
                    "cno":[
                        {
                            "nome_cno": "CNO1",
                            "lavorazioni":[
                                    {
                                        "lavorazione": "Minitrincea",
                                        "note_lavorazione": "Via Poggibonsi",
                                    }
                            ]
                        }
                    ],
                    "lavoratori":[
                            {
                                "nome":"Federico",
                                "cognome":"Rossi",
                                "cod_fisc":"FRTRSS90M111L",
                                "impresa":"12339760964",
                                "dettagli_lavoratore":[
                                    {
                                        "qualifica_lavoratore": "Operaio Comune",
                                        "tipologia_lavoratore": "Distacco",
                                        "ore_lavorate": 8
                                    }
                                ]
                            }
                    ]
                }
            ]
        }
    ]
}

 Tipologia CampoLunghezza maxObbligatorio
ID_TransactionTesto
SI
Tratta-progettoTesto600SI
CNOTesto SI
LavorazioniTesto SI
Note LavorazioniTesto NO
Data GLDate SI
Stato CantiereTesto SI
Motivo (Stato Cantiere: Non Attivo)Testo NO
MeteoTesto SI
Presenza ArcheologoBool NO
Ore lavorate ArcheologoIntero SI se presenza archologo 'SI'
Nome LavoratoreTesto100SI
Cognome LavoratoreTesto100SI
Codice fiscale LavoratoreTesto100SI
Impresa esecutrice LavoratoreTesto SI
Qualifica LavoratoreTesto SI
Tipologia LavoratoreTesto SI
Ore lavorate LavoratoreIntero SI

Per la parte riguardante la presenza archeologo, il controllo sarà tale che in caso il campo sia null GisFo compilerà il campo con NO.

Il WS esposto restituirà un HTTP CODE “200”. Dopo aver effettuato dei controlli sui dati ricevuti, GISFO ne dettaglierà l’esito all’interno del body JSON della risposta, che sarà strutturata come riportato di seguito. 

{
    “id_transaction”: “1234”,
    “result”: “KO”,
    “error_code”: “ERR_400_Bad Request”,
    “message”: ” La richiesta non può essere soddisfatta a causa di errori di sintassi.”

}

 Tipologia CampoLunghezza maxObbligatorioValori
id_transactionTesto50SI
resultBool2SI'ok/ko'
error_codeTesto 50SI
messageTesto100SI

Di seguito è riportato l’elenco dei controlli previsti per cui verrà restituito l'errore 'ERR_400_Bad Request':

  1. La tipologia di campo non è quella ammessa dalla tabella della caratteristiche json Riquest;
  2. La lunghezza del campo non è quella ammessa dalla tabella della caratteristiche json Riquest;
  3. Un campo obbligatorio non è stato popolato
  4.  Un campo non è conforme con le pick list condivise

WS2

{
    "id_transaction":1234,
    "tratta_g4w": [ 
        {
            "nome_tratta": "ABI2ARIELLI00000" ,
            "esito_tratta": "KO",
            "giornate":[
                {
                        "data_gl": "2023-02-06",
                        "esito": "OK",
                        "motivazione": ""
                }
                {
                        "data_gl": "2023-02-07",
                        "esito": "OK",
                        "motivazione": "Inserimento mezzi"
                }
                {
                        "data_gl": "2023-02-08",
                        "esito": "KO",
                        "motivazione": "Superamento ore Lavoratore,Ore Archeologo non compatibili,ecc"
                }
                {
                        "data_gl": "2023-02-09",
                        "esito": "Non Inserito",
                        "motivazione": "Giornata presente e approvata DL"
                }
            ]
        }
    ]
}

5.6 Elenco codici errore previsti
A valle della descrizione dei singoli Web Service, si riepiloga nella seguente tabella l’elenco dei possibili errori previsti in risposta alle comunicazioni ricevute da Geo4Wip.

 


error_code

error

ERR_WORKORDER_NOTFOUND

identificativo progetto non presente sul sistema

ERR_INVALID_FIELD

formato non valido/campo obbligatorio mancante per il campo nomecampo

ERR_INVALID_VALUE

valore non ammesso per il campo nomecampo

ERR_UNEXPECTED_EVENT

notifica non coerente con il flusso

ERR_REQUESTID_NOTFOUND

identificativo richiesta idrichiesta non presente a sistema

ERR_UNEXPECTED_DATE

nomecampodata non coerente con i dati a sistema

ERR_GENERIC

errore generico

 Verranno eventualmente aggiunti gli errori previsti da Geo4Wip in risposta alle Richieste provenienti da GISFO.