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 Campo Lunghezza max Obbligatorio ID_Transaction Testo
SI Tratta-progetto Testo 600 SI CNO Testo   SI Lavorazioni Testo   SI Note Lavorazioni Testo   NO Data GL Date   SI Stato Cantiere Testo   SI Motivo (Stato Cantiere: Non Attivo) Testo   NO Meteo Testo   SI Presenza Archeologo Bool   NO Ore lavorate Archeologo Intero   SI se presenza archologo 'SI' Nome Lavoratore Testo 100 SI Cognome Lavoratore Testo 100 SI Codice fiscale Lavoratore Testo 100 SI Impresa esecutrice Lavoratore Testo   SI Qualifica Lavoratore Testo   SI Tipologia Lavoratore Testo   SI Ore lavorate Lavoratore Intero   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 Campo Lunghezza max Obbligatorio Valori id_transaction Testo 50 SI
result Bool 2 SI 'ok/ko' error_code Testo  50 SI
message Testo 100 SI

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

    La tipologia di campo non è quella ammessa dalla tabella della caratteristiche json Riquest; La lunghezza del campo non è quella ammessa dalla tabella della caratteristiche json Riquest; Un campo obbligatorio non è stato popolato  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.