Specifiche_All A
Transcript
Specifiche_All A
Specifiche di Integrazione della Piattaforma Logistica Nazionale (PLN) con altri Sistemi Informativi (SI) Web Service Interfaces ALLEGATO A AL CAPITOLATO TECNICO Prot. n. 1813/2014 i Sommario 1 2 Introduzione .............................................................................................................................................. 1 1.1 Scopo ................................................................................................................................................... 1 1.2 Struttura del Documento .................................................................................................................... 1 Modalità di Accesso e Sicurezza ................................................................................................................ 1 2.1 3 Anagrafica .................................................................................................................................................. 1 3.1 5 6 getAziendaDaPartitaIva ............................................................................................................... 2 3.1.2 getIndirizziPerAzienda ................................................................................................................. 3 POI ....................................................................................................................................................... 4 3.2.1 getPOIPubblici.............................................................................................................................. 4 3.2.2 getPOIPrivati ................................................................................................................................ 6 3.2.3 getPOIConGeolocalizzazione ....................................................................................................... 7 Missioni...................................................................................................................................................... 9 4.1 getStatus ........................................................................................................................................... 10 4.2 createMission .................................................................................................................................... 10 4.3 modifyMission................................................................................................................................... 13 4.4 deleteMission .................................................................................................................................... 13 4.5 activeMission .................................................................................................................................... 14 4.6 closeMission ...................................................................................................................................... 14 4.7 commodityTypeList ........................................................................................................................... 14 4.8 operationTypeList ............................................................................................................................. 15 Posizioni ................................................................................................................................................... 16 5.1 getStatus ........................................................................................................................................... 16 5.2 handleMultiTruckMessage................................................................................................................ 16 Allarmi...................................................................................................................................................... 20 6.1 7 Aziende................................................................................................................................................ 1 3.1.1 3.2 4 Autenticazione .................................................................................................................................... 1 FLMServerService .............................................................................................................................. 20 6.1.1 getStatus .................................................................................................................................... 22 6.1.2 handleAlertMessage .................................................................................................................. 22 Tabellone degli Arrivi ............................................................................................................................... 25 7.1 Descrizione Servizio .......................................................................................................................... 25 7.1.1 Web Service ............................................................................................................................... 25 7.1.2 Controllo sicurezza dati in input ................................................................................................ 25 ii 8 9 7.1.3 Selezioni missioni per l’output................................................................................................... 25 7.1.4 Ordinamento missioni nell’output............................................................................................. 25 7.1.5 Informazioni sulla prenotazione ................................................................................................ 25 7.2 getStatus ........................................................................................................................................... 25 7.3 Arrivals .............................................................................................................................................. 26 Servizio di Messaggistica ......................................................................................................................... 29 8.1 Mailbox ............................................................................................................................................. 30 8.2 putMessage ....................................................................................................................................... 31 8.3 getUnreadMessages ......................................................................................................................... 34 8.4 getMessage ....................................................................................................................................... 35 8.5 replyTo .............................................................................................................................................. 37 8.6 sendDraftMessage ............................................................................................................................ 37 8.7 updateDraftMessage ........................................................................................................................ 38 8.8 deleteDraftMessage.......................................................................................................................... 38 8.9 getChildrenMessage ......................................................................................................................... 38 8.10 Gestione delle eccezioni ................................................................................................................ 39 8.11 Casi d’uso....................................................................................................................................... 40 8.11.1 Invio di un Messaggio alla PLN ............................................................................................... 40 8.11.2 Ricezione dei Messaggi dalla PLN .......................................................................................... 42 Sistema di Gestione delle Prenotazioni ................................................................................................... 43 9.1 Accesso al Catalogo dei Servizi.......................................................................................................... 44 9.1.1 ListTypologies ............................................................................................................................ 44 9.1.2 DetailTypology ........................................................................................................................... 45 9.1.3 SchemaServiceByTipology ......................................................................................................... 48 9.1.4 ListServices................................................................................................................................. 49 9.1.5 DetailService .............................................................................................................................. 51 9.1.6 SchemaBookingByService .......................................................................................................... 53 9.1.7 ServiceState ............................................................................................................................... 54 9.2 Amministrazione dei Servizi .............................................................................................................. 55 9.2.1 InsertService .............................................................................................................................. 55 9.2.2 UpdateService ............................................................................................................................ 57 9.2.3 UpdateServiceState ................................................................................................................... 59 9.3 Gestione delle Prenotazioni .............................................................................................................. 60 iii 9.3.1 InsertBooking ............................................................................................................................. 60 9.3.2 UpdateBooking .......................................................................................................................... 62 9.3.3 UpdateBookingState .................................................................................................................. 63 9.3.4 BookingState .............................................................................................................................. 65 9.3.5 ListBookings ............................................................................................................................... 66 9.3.6 ListBookingsDocuments............................................................................................................. 68 9.3.7 DetailBooking ............................................................................................................................. 69 9.3.8 DetailBookingDocuments .......................................................................................................... 71 9.3.9 BookingNotify ............................................................................................................................ 75 9.3.10 BookingForward ..................................................................................................................... 75 9.3.11 BookingReminder ................................................................................................................... 76 9.4 Gestione delle Eccezioni ................................................................................................................... 76 9.4.1 ExceptionResponse .................................................................................................................... 76 9.5 Casi d’Uso .......................................................................................................................................... 78 9.6 Messaggi Specifici dei Servizi in Catalogo ......................................................................................... 80 9.6.1 9.6.1.1 Messaggi inviati alla piattaforma UIRNet............................................................................... 81 9.6.1.2 Messaggi ricevuti dalla piattaforma UIRNet .......................................................................... 93 9.7 10 Preavviso di Arrivo APGe ........................................................................................................... 80 Servizi di Prenotazione .................................................................................................................... 101 9.7.1 GetBookingDetail ..................................................................................................................... 101 9.7.2 ListPOIBookings ....................................................................................................................... 102 9.7.3 ListPOIServices ......................................................................................................................... 103 Documentale ...................................................................................................................................... 104 10.1 getDocsByMissionPOI.................................................................................................................. 105 iv 1 Introduzione La Piattaforma Logistica Nazionale (PLN) espone servizi per l’integrazione con altri Sistemi Informativi (SI) adottati nella filiera della logistica. 1.1 Scopo Il presente documento rappresenta una guida per l’integrazione dei SI con i servizi della PLN mediante l’uso dei Web Service esposti per tale scopo. 1.2 Struttura del Documento Il documento è suddiviso in 2 macroaree, la prima relativa ai servizi di fleet management e la seconda ai servizi di Booking. 2 Modalità di Accesso e Sicurezza La PLN espone dei Web Service su protocollo HTTPS in standard XML-SOAP per l’accesso alle funzionalità presenti da SI. 2.1 Autenticazione La PLN prevede un processo di autorizzazione delle aziende gestito dal Contact Center UIRNet. Il meccanismo di autenticazione delle comunicazioni con un SI avviene mediante l’assegnazione di credenziali specifiche per l’Azienda e per il SI. Ogni SI viene identificato mediante Id Azienda/username/CIM(pin) attribuito con le modalità definite da UIRNet (cfr. www.uirnet.it). L’onere di identificare l’utente che materialmente agisce sulla PLN tramite il SI è a carico di quest’ultimo, così come lo sono la gestione delle credenziali dei singoli utenti e la storicizzazione delle transazioni per la tracciabilità interna delle procedure. La PLN assume che l’operatore che adopera il SI sia autorizzato ed autenticato. Questa procedura è a carico esclusivamente del SI e la PLN non effettua alcuna verifica in merito. 3 Anagrafica 3.1 Aziende Ambiente URL Test https://test.uirnet.it/UIRNetServices/CompanyServices?wsdl Produzione https://www.uirnet.it/UIRNetServices/CompanyServices?wsdl 1 Tutti i webservice qui esposti restituiscono, nell’eventualità di errore durante la validazione utente/cim una struttura errore del tipo: Campo Tipo Direzione Descrizione statucCode xs:string Out Codice errore = 1 statusMsg xs:string Out Motivo errore 3.1.1 getAziendaDaPartitaIva Restituisce l’azienda avente partita IVA o codice fiscale corrispondente alla stringa in input. RICHIESTA: GETAZIENDADAPARTITAIVA Campo Tipo Descrizione Obbligatori userName xs:string Identificativo utente PLN S cim xs:string Pin di accesso ai Web Services S partitaIva xs:string Partita IVA dell’azienda da cercare S I parametri username e cim (pin) sono utilizzati per identificare il SI. RISPOSTA: GETAZIENDADAPARTITAIVARESPONSE Campo Tipo Descrizione return xs: getAziendaDaPartitaIvaResponse Dati azienda AZIENDAOUTPUT Campo Tipo azienda tns:azienda Descrizione AZIENDA Campo Tipo Descrizione idAzienda xs: long ID UIRNet dell’Azienda ragSociale xs:string Ragione Sociale dell’Azienda codiceFiscale xs:string Ragione Sociale dell’Azienda partitaIva xs:long Ragione Sociale dell’Azienda indirizzo tns:indirizzo Indirizzo dell’Azienda telefono xs:string Telefono dell’Azienda telefono2 xs:string Telefono dell’Azienda categoria xs:string Categoria dell’Azienda tipologia xs:int tipologiaDescr xs:string tipologiaAzienda tns:tipologiaAzienda 2 INDIRIZZO Campo Tipo Descrizione idIndirizzo xs: long ID UIRNet dell’indirizzo indirizzo xs:string Indirizzo civico xs:string Civico interno xs:string Interno particella xs:string Particella localita xs:string Localita citta xs:string Città provincia xs:string Provincia regione xs:string Regione nazione xs:string Nazione Campo Tipo Descrizione idTipologia xs:int ID UIRNet della tipologia di Azienda categoria xs:string tipologia xs:string principale xs:boolean TIPOLOGIAAZIENDA Vero se la tipologia è quella principale dell’Azienda La risposta include anche un codice di ritorno nel formato risultato. RISULTATO Campo Tipo Descrizione statusCode xs:int 0 ok 1 nessun elemento trovato 2 parametro input nullo statusMsg xs:string 3.1.2 getIndirizziPerAzienda Restituisce l’elenco degli indirizzi dell’azienda passata in input. RICHIESTA: GETINDIRIZZIPERAZIENDA Campo Tipo Descrizione Obbligatori userName xs:string Identificativo utente PLN S cim xs:string Pin di accesso ai Web Services S idAzienda xs:long ID UIRNet dell’Azienda S I parametri username e cim, pin del Servizio di Messaggistica, sono utilizzati per identificare il SI. L’id Azienda viene restituito dalla chiamata precedente getAziendaDaPartitaIVA. RISPOSTA: GETINDIRIZZIPERAZIENDARESPONSE Campo Tipo Descrizione 3 return xs: getIndirizziPerAziendaResponse Elenco indirizzi azienda Campo Tipo Descrizione indirizzoAzienda tns:indirizzo Cfr. § 3.1.1 INDIRIZZIAZIENDAOUTPUT La risposta include anche un codice di ritorno nel formato risultato. RISULTATO Campo Tipo Descrizione statusCode xs:int 0 ok 1 nessun elemento trovato 2 parametro input nullo statusMsg xs:string 3.2 POI Ambiente URL Test https://test.uirnet.it/UIRNetServices/POIServices?wsdl Produzione https://www.uirnet.it/UIRNetServices/POIServices?wsdl 3.2.1 getPOIPubblici Restituisce la lista di tutti I POI pubblici della piattaforma. RICHIESTA: GETPOIPUBBLICI Campo Tipo Descrizione Obbligatori userName xs:string Identificativo utente PLN S cim xs:string Pin di accesso ai Web Services S I parametri username e cim, pin del Servizio di Messaggistica, sono utilizzati per identificare il SI. RISPOSTA: GETPOIPUBBLICIRESPONSE Campo Tipo Descrizione return xs: getPoiPubliciResponse Elenco indirizzi POI pubblici Campo Tipo Descrizione indirizzoAzienda tns:indirizzoPOI [0..n] Elenco degli indirizzi dei POI pubblici Campo Tipo Descrizione descrizionePoi xs:string Descrizione del POI gestorePoi xs:string idAzienda xs:long ID PLN dell’Azienda titolare del POI identificativoPoi xs:long ID PLN del POI INDIRIZZIPOIAZIENDAOUTPUT INDIRIZZOPOI 4 latitudine xs:string Latitudine longitudine xs:string Longitudine mypoiFormaGiuridica xs:string Forma giuridica dell’Azienda titolare del POI mypoiNomeAzienda xs:string Ragione Sociale dell’Azienda titolare del POI mypoiPartitaiva xs:string Partita IVA dell’Azienda titolare del POI nomePoi xs:string Nome del POI pubblicoPrivato xs:string tempoAttraversamento xs:long tipoIndirizzo xs:string visibilita xs:string Tempo stimato per le operazioni di accesso-carico-scarico nel POI La struttura dati INDIRIZZOPOI estende la struttura INDIRIZZO che definisce i parametri di base per il geocoding. TIPO DI DATI COMPOSTO INDIRIZZOAZIENDA Campo Tipo Descrizione cap xs:string cap POI citta xs:string città POI civico xs:string numero civico POI idIndirizzo xs:long identificativo indirizzo POI indirizzo xs:string indirizzo POI interno xs:string interno indirizzo POI localita xs:string località POI nazione xs:string nazione POI particella xs:string particella POI provincia xs:string provincia POI regione xs:string regione POI descrizionePoi xs:string descrizione POI distance xs:double distanza del POI gestorePoi xs:string gestore del POI idAzienda xs:long id Azienda POI identificativoPoi xs:long identificativo del POI latitudine xs:string coordinata lat. POI longitudine xs:string coordinata long. POI mypoiFormaGiuridica xs:string forma giuridica myPOI mypoiNomeAzienda xs:string nome azienda myPOI mypoiPartitaiva xs:string partita iva del myPOI 5 nomePoi xs:string nome del POI pubblicoPrivato xs:string POI pubblico/privato ragioneSociale xs:string ragione sociale del POI statoIndirizzo xs:string stato dell’indirizzo del POI statoPoi xs:string stato del POI tempoAttraversamento xs:long tempo attraversamento del POI tipoIndirizzo xs:string tipo indirizzo POI visibilita xs:string visibilità POI 3.2.2 getPOIPrivati Restituisce la lista di tutti i POI dell’azienda ai quali l’utente in input ha diritti di accesso filtrati per la tipologia in ingresso. Se la tipologia è nulla verranno restituiti tutti i POI visibili. RICHIESTA: GETPOIPRIVATI Campo Tipo Descrizione Obbligatori userName xs:string Identificativo utente PLN S cim xs:string Pin di accesso ai Web Services S RISPOSTA: GETPOIPRIVATIRESPONSE Campo Tipo Descrizione return xs: getPoiPrivatiResponse Elenco dei POI privati dell’Azienda del SI (cfr. § 3.2.1) TIPO DI DATI COMPOSTO INDIRIZZOAZIENDA Campo Tipo Descrizione cap xs:string cap POI citta xs:string città POI civico xs:string numero civico POI idIndirizzo xs:long identificativo indirizzo POI indirizzo xs:string indirizzo POI interno xs:string interno indirizzo POI localita xs:string località POI nazione xs:string nazione POI particella xs:string particella POI provincia xs:string provincia POI regione xs:string regione POI descrizionePoi xs:string descrizione POI distance xs:double distanza del POI 6 gestorePoi xs:string gestore del POI idAzienda xs:long id Azienda POI identificativoPoi xs:long identificativo del POI latitudine xs:string coordinata lat. POI longitudine xs:string coordinata long. POI mypoiFormaGiuridica xs:string forma giuridica myPOI mypoiNomeAzienda xs:string nome azienda myPOI mypoiPartitaiva xs:string partita iva del myPOI nomePoi xs:string nome del POI pubblicoPrivato xs:string POI pubblico/privato ragioneSociale xs:string ragione sociale del POI statoIndirizzo xs:string stato dell’indirizzo del POI statoPoi xs:string stato del POI tempoAttraversamento xs:long tempo attraversamento del POI tipoIndirizzo xs:string tipo indirizzo POI visibilita xs:string visibilità POI 3.2.3 getPOIConGeolocalizzazione Restituisce una lista di tutti i POI in base ai parametri di input: se i parametri in input latitudine, longitudine, maxDistance (o uno di essi) sono nulli il WS restituisce la lista dei POI appartenenti all’azienda specificata con partitaIva e codiceFiscale in input; se invece viene fornito in input il solo punto (latitudine, longitudine, maxDistance) il WS fornirà la lista dei POI con distanza inferiore od uguale alla distanza massima specificata in input; se tutti i parametri in input sono presenti il WS restituirà lista dei POI con distanza inferiore od uguale alla distanza massima specificata in input ed appartenenti all’azienda specificata in input. RICHIESTA: GETPOICONGEOLOCALIZZAZIONE Campo Tipo Descrizione Obbligatori userName xs:string Identificativo utente PLN S cim xs:string Pin di accesso ai Web Services S companyPIVA xs:sring PIVA azienda S companyFC xs:string Codice fiscale azionda S latitude xs:string Latitudine S longitude xs:string Longitudine S maxDistance xs:string Distanza massima dal POI S RISPOSTA: GETPOICONGEOLOCALIZZAZIONE Campo Tipo Descrizione 7 getPoiConGeolocalizzazioneResponse xs: getPoiConGeolocalizzazioneResponse Elenco indirizzi POI VALORI DI RITORNO: Campo Tipo 0 ok 1 Nessun elemento trovato 10 Errore generico 11 Richiesta di input vuota 12 Coordinate omesse 14 Dati posizione non validi 15 Lista di POI troppo grande RETURN Campo Tipo Descrizione risultato xs:risultato Struttura “risultato” indirizzi xs:indirizzi Struttura elenco “indirizzi” INDIRIZZI Campo Tipo Descrizione cap xs:string cap POI citta xs:string città POI civico xs:string numero civico POI idIndirizzo xs:long identificativo indirizzo POI indirizzo xs:string indirizzo POI interno xs:string interno indirizzo POI localita xs:string località POI nazione xs:string nazione POI particella xs:string particella POI provincia xs:string provincia POI regione xs:string regione POI descrizionePoi xs:string descrizione POI distance xs:double distanza del POI gestorePoi xs:string gestore del POI idAzienda xs:long id Azienda POI identificativoPoi xs:long identificativo del POI latitudine xs:string coordinata lat. POI longitudine xs:string coordinata long. POI mypoiFormaGiuridica xs:string forma giuridica myPOI mypoiNomeAzienda xs:string nome azienda myPOI 8 mypoiPartitaiva xs:string partita iva del myPOI nomePoi xs:string nome del POI pubblicoPrivato xs:string POI pubblico/privato ragioneSociale xs:string ragione sociale del POI statoIndirizzo xs:string stato dell’indirizzo del POI statoPoi xs:string stato del POI tempoAttraversamento xs:long tempo attraversamento del POI tipoIndirizzo xs:string tipo indirizzo POI visibilita xs:string visibilità POI 4 Missioni Il MISSIONLISTENER è un WebService per l’acquisizione di messaggi di missione dei mezzi mobili. Il SI di fleet management invierà, attraverso il WebService esposto della piattaforma, informazioni su nuove missioni pianificate per i veicoli, modifica, cancellazioni, operazioni sugli stati della missione (attivazione, chiusura). Tutte le informazioni di anagrafica correlate alle missioni devono essere già note alla piattaforma (veicoli, conducenti, POI, ecc…). Il processo prevede l’invio di una missione pianificata, l’attivazione della stessa al momento della partenza. La chiusura della missione al momento della conclusione può essere effettuata dal SI tramite il Web Service di closeMission o demandare la chiusura al meccanismo automatico. Il meccanismo automatico, una volta che il veicolo ha raggiunto l’ultimo POI, verifica che tutti i punti di missione siano stati raggiunti e superati per procedere alla chiusura della missione. La regola per l’inserimento delle missioni è la seguente: La nuova missione viene scartata se il numero di missioni acquisite dall’azienda nel periodo corrente (il periodo è un parametro univoco su ALR, fissato di default a 7 giorni) è superiore a quello tollerabile; il numero di nuove missioni tollerabile è fissato come fattore-di-tolleranza (parametrico univoco su ALR, fissato di default a 1.1) * il numero massimo di missioni attese. Quest’ultimo valore è calcolato come nMaxMissioniPerVeicoloPerGiorno (parametro univoco di ALR, fissato a 4) * numero giorni del periodo corrente (7) * numero veicoli al momento in uso all’azienda. L’aggiornamento di missione viene scartato se il numero di aggiornamenti acquisiti dall’azienda nel periodo corrente ha raggiunto il livello tollerabile. La misura del numero di aggiornamenti tollerabile è dato dal numero di missioni tollerabile (calcolato come al punto 1) * numero massimo di aggiornamenti per singola missione (parametro univoco di ALR, fissato di default a 10). Ambiente URL Test https://test.uirnet.it/MDW-EA-MDW_EGW/EGWMissionService?wsdl Produzione https://www.uirnet.it/MDW-EA-MDW_EGW/EGWMissionService?wsdl 9 4.1 getStatus Restituisce lo stato di operatività dell’interfaccia software stessa. RICHIESTA: GETSTATUS Il messaggio GETSTATUS non prevede alcun parametro. RISPOSTA: GETSTATUSRESPONSE Campo Tipo Descrizione result xs:boolean Stato del servizio 4.2 createMission Il metodo inserisce una nuova missione nella PLN. RICHIESTA: CREATEMISSION Campo Tipo Descrizione Obbl. credentials tns:egwCredential Username PLN per l’accesso al servizio S missionRequest tns:egwMissionServiceRequest Dati della missione S Campo Tipo Descrizione Obbl. username xs:string Username PLN per l’accesso al servizio S cim xs:string Pin di accesso ai Web Services S Campo Tipo Descrizione mission tns:egwMission Parametri operativi della missione S missionCommodity tns:egwMissionCommodity Informazioni sulle merci e gli stakeholder N missionPoint tns:egwMissionPoint Elenco dei waypoint e dei punti missione S Campo Tipo Descrizione ownerId xs:long ID azienda S missionExtId xs:string ID della missione attribuito dal SI S missionName xs:string Nome della missione S missionDescription xs:string Descrizione della missione S fleetExtId xs:string ID della flotta attribuito dal SI (nella fase di registrazione al CRM) S vehicleExtId xs:string ID del veicolo attribuito dal SI (nella fase di registrazione al CRM), il veicolo deve avere stato “in uso” per essere utilizzato S hasCommodity xs:short Indica se la missione ha merce associata valori ammessi (0,1) S driverUname1 xs:string Username PLN del primo autista S driverUname2 xs:string Username PLN del secondo autista N EGWCREDENTIAL EGWMISSIONSERVICEREQUEST Obbl. EGWMISSION Obbl. 10 dateStart xs:dateTime Data e ora di inizio missione S dateEnd xs:dateTime Data e ora di fine missione S arrivalTs xs:dateTime data e ora di compilazione della missione S deliveryTs xs:dateTime Data e ora di invio da parte del SI S EGWMISSIONCOMMODITY Campo Tipo Descrizione Obbl. commodityExtId xs:string Identificativo della merce attribuito dal SI N charge_mission_point xs:long ID UIRNet del POI di carico (deve essere presente nella struttura EGWMISSIONPOINT) N discharge_mission_point xs:long ID UIRNet del POI di scarico (deve essere presente nella struttura EGWMISSIONPOINT) N commodityType xs:int Identifica il tipo di merce, i valori ammessi dalla piattaforma sono restituiti dal metodo COMMODITYTYPELIST (cfr. § 4.7) N commoditySubType xs:string Specifica la tipologia della merce N o Casse/Fusti/…/Altro se commodityType = merci varie o testo generico (libero) se commodityType = rotabili, cisterne, pallet commoditySubTypeDescription xs:string Descrizione testuale del tipo di merce N commodityIsoCode xs:string Codice ISO del contenitore N orderId xs:string bookingId xs:string Numero di prenotazione associato N seal xs:string Identificativo del sigillo N amount xs:long Quantità o numero N volume xs:double Volume della merce weight xs:double Peso della merce isEmpty xs:short Indica se che contenitore è vuoto, assume significato solo per container e casse mobili N stakeholder tns:egwStakeholder Elenco degli stakeholder della merce N note xs:string N N EGWSTAKEHOLDER Campo Tipo Descrizione Obbl. vatId xs:string P.Iva dello Stakeholder S volume xs:double Volume S weight xs:double Peso S hasVisibility xs:short visibilità missione allo Stakeholder S Campo Tipo Descrizione arrivalTs xs:dateTime Orario di arrivo pianificato EGWMISSIONPOINT Obbl. S 11 operationType xs:short Valore reperibile dal metodo commodityTypeList S POIId xs:long ID UIRNet del POI reperibila GetPOIPubblici - GetPOIPrivati servizio S operationTime (stoppingDischargeMin) xs:short Tempo presunto di esecuzione delle attività nel POI S wayPoint xs:short Identifica se il POI è un waypoint valori ammessi (0,1) S dal Restituisce una struttura dati di Acknowledgement RISPOSTA: CREATEMISSIONRESPONSE Campo Tipo Descrizione return tns:egwMissionServiceResponse Elenco dei codici di ritorno EGWMISSIONSERVICERESPONSE Campo Tipo Descrizione missionExtId xs:long ID della missione attribuito dal SI responseCode xs:string Codice di risposta responseDescription xs:string Descrizione della risposta Esempio di missione base (senza merce e senza stakeholder) <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bl="http://bl.mission.egw.mdw.uirnet.telespazio.com"> <soapenv:Header/> <soapenv:Body> <bl:createMission> <credentials> <cim>xxxxxx</cim> <username>XXXXXXXXXX</username> </credentials> <missionRequest> <mission> <arrivalTs>2013-05-03T00:00:00.000+02:00</arrivalTs> <dateEnd>2013-05-17T00:00:00.000+02:00</dateEnd> <dateStart>2013-05-10T00:00:00.000+02:00</dateStart> <deliveryTs>2013-05-17T00:00:00.000+02:00</deliveryTs> <driverUname1>xxxxx</driverUname1> <fleetExtId>xxxxxx</fleetExtId> <hasCommodity>0</hasCommodity> <missionDescription>xxxxxx</missionDescription> <missionExtId>xxxxxxx</missionExtId> <missionName>xxxxxxxi</missionName> <ownerId>xxxxx</ownerId> <vehicleExtId>xxxxxx</vehicleExtId> </mission> <!--Zero or more repetitions:--> <missionPoint> <arrivalTs>2013-05-10T00:00:00.000+02:00</arrivalTs> <operationType>2</operationType> <poiId>xxxxxxxxxxxx</poiId> 12 <stoppingDischargeMin>2</stoppingDischargeMin> <waypoint>0</waypoint> </missionPoint> <missionPoint> <arrivalTs>2013-05-17T00:00:00.000+02:00</arrivalTs> <operationType>2</operationType> <poiId>xxxxxxxxxx</poiId> <stoppingDischargeMin>1</stoppingDischargeMin> <waypoint>0</waypoint> </missionPoint> </missionRequest> </bl:createMission> </soapenv:Body> </soapenv:Envelope> Response <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Header/> <env:Body> <ns2:createMissionResponse xmlns:ns2="http://bl.mission.egw.mdw.uirnet.telespazio.com"> <return> <missionId>XXXXX</missionId> <responseCode>0</responseCode> <responseDescription>OK</responseDescription> </return> </ns2:createMissionResponse> </env:Body> </env:Envelope> 4.3 modifyMission Modifica i dati di una missione identificata mediante il campo missionExtId della struttura EGWMISSION all’interno della struttura EGWMISSIONSERVICEREQUEST. RICHIESTA: MODIFYMISSION Campo Tipo Descrizione Obbl. credentials tns:egwCredential Username PLN per l’accesso al servizio (cfr. § 4.2) S missionRequest tns:egwMissionServiceRequest Dati della missione (cfr. § 4.2) S Il servizio restituisce una struttura dati di Acknowledgement RISPOSTA: MODIFYMISSIONRESPONSE Campo Tipo Descrizione return tns:egwMissionServiceResponse Elenco dei codici di ritorno (cfr. § 4.2) 4.4 deleteMission Elimina una missione identificata mediante il campo missionId. 13 RICHIESTA: DELETEMISSION Campo Tipo Descrizione Obbl. credentials tns:egwCredential Username PLN per l’accesso al servizio (cfr. § 4.2) S missionId xs:long Identificativo della missione S Il servizio restituisce una struttura dati di Acknowledgement RISPOSTA: DELETEMISSIONRESPONSE Campo Tipo Descrizione return tns:egwMissionServiceResponse Elenco dei codici di ritorno (cfr. § 4.2) 4.5 activeMission Attiva una missione identificata mediante il campo missionId. RICHIESTA: ACTIVEMISSION Campo Tipo Descrizione Obbl. credentials tns:egwCredential Username PLN per l’accesso al servizio (cfr. § 4.2) S missionId xs:long Identificativo della missione S Il servizio restituisce una struttura dati di Acknowledgement. RISPOSTA: ACTIVEMISSIONRESPONSE Campo Tipo Descrizione return tns:egwMissionServiceResponse Elenco dei codici di ritorno (cfr. § 4.2) 4.6 closeMission Chiude una missione identificata mediante il campo missionId. RICHIESTA: CLOSEMISSION Campo Tipo Descrizione Obbl. credentials tns:egwCredential Username PLN per l’accesso al servizio (cfr. § 4.2) S missionId xs:long Identificativo della missione S Il servizio restituisce una struttura dati di Acknowledgement RISPOSTA: CLOSEMISSIONRESPONSE Campo Tipo Descrizione return tns:egwMissionServiceResponse Elenco dei codici di ritorno (cfr. § 4.2) 4.7 commodityTypeList Restituisce l’elenco dei tipi di merce supportati dalla piattaforma. RICHIESTA: COMMODITYTYPELIST Il messaggio COMMODITYTYPELIST non prevede alcun parametro. 14 RISPOSTA: COMMODITYTYPELISTRESPONSE Campo Tipo Descrizione return tns:egwNameValuePairResponse Coppie di codice commodity e descrizione EGWNAMEVALUEPAIRRESPONSE Campo Tipo Descrizione name xs:string Descrizione del valore value xs:int Valore identificativo dell’oggetto nella PLN 4.8 operationTypeList Restituisce l’elenco dei tipi di operazioni su POI supportati dalla piattaforma. RICHIESTA: OPERATIONTYPELIST Il messaggio OPERATIONTYPELIST non prevede alcun parametro. RISPOSTA: OPERATIONTYPELISTRESPONSE Campo Tipo Descrizione return tns:egwNameValuePairResponse Coppie di descrizione e codice operazione (cfr. § 4.7) 15 5 Posizioni Il POSITIONLISTER è il WebService per l’acquisizione di messaggi di posizione dei mezzi mobili e di eventuali altre informazioni collegate. Il SI di fleet management invierà, attraverso il WebService esposto della PLN, informazioni sulle posizioni dei mezzi mobili interessati precedentemente registrati sulla piattaforma stessa. Le posizioni dei veicoli che verranno trasmesse dal SI alla PLN ogni 10 minuti circa per ogni azienda (usando la coppia username-cim dell’azienda per l’autenticazione) e devono contenere tutti i messaggi di posizione acquisiti (al più uno ogni 5 minuti per veicolo) per tutti i veicoli in uso all’azienda. La regola è la seguente: Il burst viene scartato se il numero di messaggi in esso contenuto è maggiore di quello tollerabile; il numero di messaggi tollerabile è fissato come fattore-di-tolleranza (parametrico univoco su ALR, fissato di default a 1.5) * il numero dei messaggi attesi. Quest’ultimo valore è calcolato come nMessaggiNominaliPerMinutoPerVeicolo * numero minuti dall’invio dell’ultimo burst ‘accettato’ * numero veicoli al momento in uso all’azienda. Un burst non può comunque superare (indipendentemente da quanto alto è l’intervallo dal precedente burst accettato) un valore massimo pari a nMessaggiMaxPerVeicoloInUnicoBurst (parametro univoco su ALR, fissato di default a 2.5) * numero veicoli al momento in uso all’azienda. Ambiente URL Test https://test.uirnet.it/MDW-EA-MDW_EGW/EGWFEBean?wsdl Produzione https://www.uirnet.it/MDW-EA-MDW_EGW/EGWFEBean?wsdl 5.1 getStatus Restituisce lo stato di operatività dell’interfaccia software stessa. RICHIESTA: GETSTATUS Il messaggio GETSTATUS non prevede alcun parametro. RISPOSTA: GETSTATUSRESPONSE Campo Tipo Descrizione result xs:boolean Stato del servizio 5.2 handleMultiTruckMessage Acquisisce un insieme di messaggi di posizione, con eventuali attributi di carattere logistico, di un numero arbitrario di veicoli monitorati. RICHIESTA: HANDLEMULTITRUCKMESSAGE Campo Tipo Descrizione Obbl. userName xs:string Identificativo utente PLN S cim xs:string Pin di accesso ai Web Services S globalPositionPacks tns:globalPositionPack[0..N] Sequenza di messagi di posizione S 16 GLOBALPOSITIONPACK Campo Tipo Descrizione Obbl. currPositionMess tns:positionMessageS Messaggio di posizione del veicolo S currPositionMessAttributes tns:positionMessageAttributes Attributi di carattere logistico del messaggio N Campo Tipo Descrizione Obbl. companyId xs:string ID PLN dell’Azienda comunicato da UIRNet al momento della sottoscrizione del contratto o reperibile attraverso il Servizio getAziendaDaPartitaIVA S deliverytime xs:string Data e ora di invio del messaggio, espresse in UTC col formato ISO8601 “YYYY-MM-DDThh:mm:ssZ” S fleetExtId xs:string Codice univoco che il SI utilizza per identificare la flotta inserito al momento della registrazione nel CRM S unitExtId xs:string Codice univoco che il SI utilizza per identificare il suo mezzo mobile inserito al momento della registrazione nel CRM – il veicolo per essere utilizzato deve essere nello stato “in uso” S messageExtId xs:string Codice univoco che il SI utilizza per identificare il messaggio inviato alla PLN S position tns:positionS Dati di latitudine e longitudine, con datum WGS84, direzione, velocità ed altitudine S positiontime xs:string Data e ora di acquisizione dell’informazione sulla posizione del mezzo (es. acquisizione GPS), espresse in UTC col formato ISO8601 “YYYY-MMDDThh:mm:ssZ” S Campo Tipo Descrizione Obbl. latitude xs:string Valore decimale di latitudine S longitude xs:string Valore decimale di longitudine S elevation xs:string Altezza in metri slm N degree xs:string Direzione (0.0-360.0°, il Nord indicato con 0°) N speed xs:string Velocità espressa in Km/h S Campo Tipo Descrizione Obbl. attributeList tns:positionAttribute Attributidi carattere logistico S Campo Tipo Descrizione Obbl. attributeCode xs:string Codice per classificare l’informazione georeferenziata che viene trasmessa insieme al messaggio di posizione S attributeValue xs:string Valore eventualmente associato all’attributo N POSITIONMESSAGES POSITIONS POSITIONMESSAGEATTRIBUTES POSITIONATTRIBUTE 17 Esempio messaggio di posizione per un solo veicolo <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bl="http://bl.egw.mdw.uirnet.telespazio.com/"> <soapenv:Header/> <soapenv:Body> <bl:handleMultiTruckMessage> <username>xxxxxx</username> <cim>xxxxxx</cim> <globalPositionPacks> <currPositionMess> <companyId>xxxxx</companyId> <deliverytime>2013-05-15T13:05:37Z</deliverytime> <fleetExtId>xxxxx</fleetExtId> <messageExtId>123141234</messageExtId> <position> <degree>0</degree> <elevation>0</elevation> <latitude>45.00</latitude> <longitude>9.0</longitude> <speed>45</speed> </position> <positiontime>2013-05-15T13:05:37Z</positiontime> <unitExtId>xxxxxx</unitExtId> </currPositionMess> <currPositionMessAttributes> <!--Zero or more repetitions:--> <attributeList> <attributeCode>0</attributeCode> <attributeValue>0</attributeValue> </attributeList> </currPositionMessAttributes> </globalPositionPacks> </bl:handleMultiTruckMessage> </soapenv:Body> </soapenv:Envelope> Response <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Header/> <env:Body> <ns2:handleMultiTruckMessageResponse xmlns:ns2="http://bl.egw.mdw.uirnet.telespazio.com/"> <result> <correct>true</correct> <note>Msgs-[Successful=1] [Failure=0]</note> <responseCode>0</responseCode> </result> </ns2:handleMultiTruckMessageResponse> </env:Body> </env:Envelope> 18 La PLN attualmente riconosce e gestisce i seguenti attributi al messaggio di posizione: attributeCode attributeValue descrizione INFOTRAFFIC_DATEX_CODE Codice DATEX Codice DATEX dell’evento scatenante il messaggio di Infotraffico POIEVENT_POI_NAME Nome POI Nome POI non operativo POIEVENT_DESCRIPTION Descrizione Descrizione dell’anomalia sul POI in esame POIEVENT_POIALTERNATIVE_NAME Nome POI Nome del POI alternativo proposto in vece di quello non operativo GEOFENCING_AREA_ID Id area UIRNet Identificativo dell’area relativa all’allarme GEOFENCING_AREA_DESCRIPTION Descrizione area UIRNet Descrizione dell’area relativa all’allarme GEOFENCING_AREA_TYPE assume i valori: VIETATA o OBBLIGATORIA Tipo dell’area relativa all’allarme GEOFENCING_THRESHOLD Valore in metri Soglia impostata per il geofencing GEOFENCING_DISTANCE Valore in metri Distanza dal confine dell’area di geofencing CORRIDOR_MISSION_ID Id missione Identificativo della missione dal cui percorso il veicolo si è discostato CORRIDOR_THRESHOLD Valore in metri Soglia impostata per il servizio CORRIDOR_DISTANCE Valore in metri Distanza dal percorso DOC_MISSION_ID Id missione Identificativo della missione DOC_CONTAINER_ID Id container (codice ISO) Identificativo del container con documentazione carente Il servizio restituisce una struttura dati di acknowledgement: RISPOSTA: HANDLEMULTITRUCKMESSAGERESPONSE Campo Tipo Descrizione result tns:wsAck Elenco di acknowledgement Campo Tipo Descrizione correct xs:boolean note xs:string responseCode xs:int WSACK 19 6 Allarmi La PLN invia ai SI messaggi di informazione ed allarme sui veicoli mediante l’invocazione di un Web Service su protocollo HTTPS realizzato sulla base del WSDL allegato ed esposto da ciascun SI. L’identificazione dell’interfaccia pubblica da contattare è realizzata a livello di Flotta mediante l’indicazione della Gateway. La PLN prevede due modalità di gestione delle Gateway: 1. Gateway privata: ciascuna azienda può inserire nella PLN, mediante le funzioni offerte dal modulo CRM, una o più Gateway da associare alle proprie flotte. Tali Gateway hanno carattere privato, ossia sono disponibili esclusivamente per l’Azienda che le implementa. 2. Gateway pubblica: le Gateway pubbliche possono essere inserite solo dal Back Office UIRNet secondo le procedure vigenti. Tali Gateway rappresentano interfacce pubbliche disponibili per più Aziende afferenti alla PLN (ad es. Gateway offerte da Sistemi di Gestione Flotta sul Cloud). Tipicamente tali Gateway sono implementate dal gestore di un servizio multi-tenant. La PLN, contestualmente all’apertura o alla chiusura di un evento d’allarme per un servizio configurato e per il quale sia stata anche configurato il dispatch verso legacy, genera il messaggio d’allarme (v. formato e dettagli), contatta attraverso un client ad-hoc il Web Service esposto dal SI ed invia il messaggio. L’invio delle informazioni legate alle segnalazioni d’allarme avviene richiamando il metodo handleAlertMessage esposto dal Web Service FLMServerService del SI. Sebbene a carico del SI, l’interfaccia del Web Service deve essere quella stabilita dalla PLN (v. paragrafo seguente). 6.1 FLMServerService Il presente paragrafo illustra il Web Service che deve essere esposto dal SI per la ricezione dei messaggi di informazione e di allarme. Il WSDL del servizio è riportato di seguito: WSDL - Allarmi <?xml version="1.0" encoding="UTF-8"?> <definitions name="FLMServerService" targetNamespace="http://ws.fleetman.uirnet.telespazio.com" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.fleetman.uirnet.telespazio.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <types> <xs:schema targetNamespace="http://ws.fleetman.uirnet.telespazio.com" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="getStatus" type="tns:getStatus"/> <xs:element name="getStatusResponse" type="tns:getStatusResponse"/> <xs:element name="handleAlertMessage" type="tns:handleAlertMessage"/> <xs:element name="handleAlertMessageResponse" type="tns:handleAlertMessageResponse"/> <xs:complexType name="getStatus"> <xs:sequence/> </xs:complexType> <xs:complexType name="getStatusResponse"> <xs:sequence> <xs:element minOccurs="0" name="return" type="xs:string"/> </xs:sequence> 20 </xs:complexType> <xs:complexType name="handleAlertMessage"> <xs:sequence> <xs:element minOccurs="0" name="alarmMessage" type="tns:wsAlarmMessage"/> </xs:sequence> </xs:complexType> <xs:complexType name="wsAlarmMessage"> <xs:sequence> <xs:element minOccurs="0" name="alarmDescription" type="xs:string"/> <xs:element minOccurs="0" name="alarmId" type="xs:long"/> <xs:element minOccurs="0" name="alarmTS" type="xs:dateTime"/> <xs:element maxOccurs="unbounded" minOccurs="0" name="attributeList" nillable="true" type="tns:wsAlarmAttribute"/> <xs:element minOccurs="0" name="companyId" type="xs:long"/> <xs:element minOccurs="0" name="eventId" type="xs:long"/> <xs:element minOccurs="0" name="fleetExtId" type="xs:string"/> <xs:element minOccurs="0" name="serviceId" type="xs:string"/> <xs:element minOccurs="0" name="vehicleExtId" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="wsAlarmAttribute"> <xs:sequence> <xs:element minOccurs="0" name="attributeCode" type="xs:string"/> <xs:element minOccurs="0" name="attributeValue" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="handleAlertMessageResponse"> <xs:sequence> <xs:element minOccurs="0" name="return" type="tns:wsAlarmResponse"/> </xs:sequence> </xs:complexType> <xs:complexType name="wsAlarmResponse"> <xs:sequence> <xs:element minOccurs="0" name="responseCode" type="xs:string"/> <xs:element minOccurs="0" name="responseDescription" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:schema> </types> <message name="FLMServer_handleAlertMessage"> <part element="tns:handleAlertMessage" name="handleAlertMessage"/> </message> <message name="FLMServer_getStatusResponse"> <part element="tns:getStatusResponse" name="getStatusResponse"/> </message> <message name="FLMServer_getStatus"> <part element="tns:getStatus" name="getStatus"/> </message> <message name="FLMServer_handleAlertMessageResponse"> <part element="tns:handleAlertMessageResponse" name="handleAlertMessageResponse"/> </message> <portType name="FLMServer"> <operation name="getStatus" parameterOrder="getStatus"> <input message="tns:FLMServer_getStatus"/> <output message="tns:FLMServer_getStatusResponse"/> </operation> 21 <operation name="handleAlertMessage" parameterOrder="handleAlertMessage"> <input message="tns:FLMServer_handleAlertMessage"/> <output message="tns:FLMServer_handleAlertMessageResponse"/> </operation> </portType> <binding name="FLMServerBinding" type="tns:FLMServer"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="getStatus"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> <operation name="handleAlertMessage"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="FLMServerService"> <port binding="tns:FLMServerBinding" name="FLMServerPort"> <soap:address location="http://94.95.24.70/FLMServer"/> </port> </service> </definitions> 6.1.1 getStatus Il metodo consente di verificare la piena operatività della Gateway. RICHIESTA: GETSTATUS Il messaggio OPERATIONTYPELIST non prevede alcun parametro. RICHIESTA: GETSTATUSRESPONSE Campo Tipo Descrizione return xs:string Stato del servizio. Valori ammessi: OK, 6.1.2 handleAlertMessage Il metodo consente al SI di ricevere un messaggio di informazioni o di allarme. RICHIESTA: HANDLEALERTMESSAGE Campo Tipo Descrizione alarmMessage tns:wsAlarmMessage Messaggio informativo o di allarme trasmesso al SI 22 WSALARMMESSAGE Campo Tipo Descrizione alarmId xs:long ID PLN del messaggio alarmDescription xs:string Descrizione del messaggio companyId xs:long ID PLN dell’azienda impattata dall’evento d’allarme fleetExtId xs:string ID SI della flotta impattata dall’evento d’allarme come registrato nel CRM vehicleExtId xs:string ID SI del veicolo impattato dall’evento d’allarme come registrato nel CRM eventId xs:long ID PLN dell’evento d’allarme serviceId xs:string Identificativo del servizio d’allarme che ha generato l’evento (cfr. tabella seguente) attributeList tns:wsAlarmAttribute Lista di attributi che veicolano le informazioni proprie dello specifico messaggio dall’allarme del quale effettuare il dispatching alarmTS xs:dateTime timestamp relativo alla (apertura/chiusura evento) comunicazione inerente l’allarme SERVICEID Valore Descrizione CORRIDOR MONITORING servizio di Corridor Monitoring (S/S ALR) INFOTRAFFIC servizio di Infotraffico base e su missione (S/S ALR) DOC servizio di Monitoraggio stato documentazione (S/S ALR) TIME MONITORING servizio di Time Monitoring (S/S ALR) GEOFENCING servizio di Geofencing (S/S ALR) SENSOR servizio di monitoraggio sensori (S/S ALR) TERMINAL servizio di monitoraggio stato terminali (S/S ALR) POIEVENT servizio di monitoraggio stato POI (S/S ALR) WSALARM ATTRIBUTE Campo Tipo Descrizione attributeCode xs:string Codice dell’attributo (cfr. tabella seguente) attributeValue xs:string Valore dell’attributo ATTRIBUTECODE Campo CORRIDOR INFOTRAFFIC Tipo Descrizione CORRIDOR_MISSION_ID identificativo della missione CORRIDOR_THRESHOLD soglia impostata sul servizio d’allarme CORRIDOR_DISTANCE distanza effettivamente misurata tra posizione e percorso INFOTRAFFIC_DATEX_CODE codice DATEX dell’evento perturbatore scatenante INFOTRAFFIC_EVENT_START_TS timestamp apertura evento INFOTRAFFIC_EVENT_CLOSE_TS timestamp chiusura evento INFOTRAFFIC_ORIGINAL_EVENT_NODE1_LAT latitudine del primo/unico nodo 23 DOC TIME INFOTRAFFIC_ORIGINAL_EVENT_NODE1_LON longitudine del primo/unico nodo INFOTRAFFIC_ORIGINAL_EVENT_NODE2_LAT latitudine del secondo (eventuale) nodo INFOTRAFFIC_ORIGINAL_EVENT_NODE2_LON longitudine del secondo (ev.) nodo INFOTRAFFIC_ORIGINAL_EVENT_DESCRIPTION descrizione evento scatenante DOC_MISSION_ID identificativo della missione DOC_CONTAINER_ID identificativo del container impattato (nel solo caso di missioni derivate) TIME_MISSION_ID identificativo missione TIME_DELAY ritardo/anticipo accumulato TIME_THRESHOLD soglia configurata nel servizio TIME_POI_ID identificativo del POI della missione (eventualmente) impattato dall’evento TIME_POI_ARRIVAL_PLANNED tempo pianificato d’arrivo al POI TIME_POI_ARRIVAL_ESTIMATED tempo stimato d’arrivo al POI GEOFENCING_AREA_ID identificativo dell’area GEOFENCING_AREA_DESCRIPTION descrizione dell’area GEOFENCING_AREA_TYPE tipologia di area in relazione al servizio (obbligatoria, critica o vietata) GEOFENCING_THRESHOLD soglia di geofencing GEOFENCING_DISTANCE distanza misurata tra la posizione del veicolo e il confine dell’area SENSOR_ID identificativo del sensore SENSOR_TYPE tipo di sensore, legato alla grandezza misurata SENSOR_VALUE valore misurato dal sensore SENSOR_THRESHOLD_L limite inferiore della soglia (unica, per i sensori digitali) SENSOR_THRESHOLD_R limite superiore della soglia (solo per sensori analogici) GEOFENCING SENSOR TERMINAL POIEVENT RISPOSTA: HANDLEALERTMESSAGERESPONSE Campo Tipo Descrizione return tns:wsAlarmResponse Struttura dati di risposta all’invio del messaggio informativo o di allarme Campo Tipo Descrizione responseCode xs:string responseDescription xs:string WSALARMRESPONSE 24 7 Tabellone degli Arrivi Il S/S ALR deve esporre un WS verso sistemi legacy per fornire le funzionalità del tabellone arrivi a sistemi esterni. L’azienda del sistema esterno deve essere dotato di pacchetto Control Tower. Ambiente URL Test https://test.uirnet.it/ALR_ExportWS/ArrivalsTabEnhancedWS?wsdl Produzione https://www.uirnet.it/ALR_ExportWS/ArrivalsTabEnhancedWS?wsdl 7.1 Descrizione Servizio 7.1.1 Web Service Il WS riceve in ingresso i seguenti dati: Id azienda, username, cim Dati del filtro di ricerca e restituisce in uscita i seguenti dati: Lista missioni in arrivo al POI selezionato, ordinate per arrivo stimato. Per ogni missione: informazioni generali sulla missione, sullo stato documentale, sulla merce da movimentare, ecc.. 7.1.2 Controllo sicurezza dati in input Sono implementati i controlli di sicurezza sulla base dei dati in input, come da paragrafo seguente 7.1.3 Selezioni missioni per l’output La selezione degli arrivi (missioni) viene effettuata su filtro di date (inserite esplicitamente dal legacy o considerando il range di default); vengono prese in considerazione tutte e sole le missioni che hanno data pianificata o data stimata/effettiva d’arrivo al POI selezionato inclusa nell’intervallo. Le missioni che presentano il POI ma non hanno né data stimata né data prevista in relazione al POI selezionato, non vengono prese in considerazione nel risultato. Il range temporale dovrà avere un’ampiezza massima di M giorni, M parametro di sistema non configurabile dall’utente (default=7) 7.1.4 Ordinamento missioni nell’output La lista degli arrivi (missioni) sarà ordinata per data di arrivo stimato al POI (per tutte quelle missioni che non presentato tale valore, ad esempio per tutte quelle pianificate, viene considerata la data pianificata). 7.1.5 Informazioni sulla prenotazione Le informazioni sulle prenotazioni associate al POI e alla missione sono accessibili da una Vista condivisa in dBLink dal S/S PRT (ALR_BOOKINGS). 7.2 getStatus Restituisce lo stato di operatività dell’interfaccia software stessa. RICHIESTA: GETSTATUS Il messaggio GETSTATUS non prevede alcun parametro. 25 RISPOSTA: GETSTATUSRESPONSE Campo Tipo Descrizione result xs:boolean Stato del servizio 7.3 Arrivals RICHIESTA:GETARRIVALSBOARD Campo Tipo Descrizione Obbl. userName xs:string Identificativo utente PLN S cim xs:string Pin di accesso ai Web Services S ReqId xs:string Identificativo richiesta N IdAzienda xs:long identificativo azienda S IdPOI xs:long identificativo POI S Targa veicolo xs:string targa veicolo N Stato missione xs:string N Data Inizio xs:dateTime Stato missione: (se non inserito considera “A”) ‘A’=attive, ‘P’=pianificate, ‘C’=chiuse, ‘AP’=attive o pianificate ‘T’=tutte data e ora di inizio range temporale N se non presente considerare default=now Data Fine xs:dateTime data e ora di fine range temporale N se inizio range valorizzato: inizio range + 1 giorno se inizio range non valorizzato: now +1 giorno) RISPOSTA:GETARRIVALSBOARDRESPONSE Campo Tipo Descrizione resultId xs:integer Id risultato resultCode xs:string codice risultato ReqId xs:string Identificativo richiesta Arrivi Lista di arrivo Lista delle missioni di arrivo Campo Tipo Descrizione Id missione xs:long Id missione nome missione xs:string nome della missione pianificazioneArrivo xs:string Identificativo richiesta Stima arrivo Lista di arrivo Lista delle missioni di arrivo Stato missione xs:string stato della missione ARRIVI 26 Targa xs:string targa del veicolo primo conducente xs:string primo conducente secondo conducente xs:string secondo conduente tel ref azienda xs:string telefono referente aziendale stato doc xs:string stato documentazione associata alla missione note doc xs:string note documentazione associata alla missione doc associati xs:string documentazione associata n prenotazioni xs:int numero prenotazioni della missione associata al POI selezionato posizione veicolo tns:posizioneVeicolo Posizione del veicolo Lista merce lista merce lista della merce da movimentare al POI Campo Tipo Descrizione Latitude xs:double Latitudine longitude xs:double longitudine indirizzo veicolo xs:string indirizzo posizione veicolo Campo Tipo Descrizione idMerce xs:string id merce tipo Merce xs:string tipologia della merce id ordine xs:string identificativo dell’ordine id prenotazione xs:string identificativo della prenotazione associata alla merce POSIZIONE VEICOLO MERCE VALORI DI RITORNO resultId 0 resultCode descrizione OK Operazione eseguita con successo 1000 TOO_MANY_REQUEST Troppe richieste nell’unità di tempo effettuate dall’azienda per il POI 1001 VOID_REQUEST_INPUT Dati in ingresso non valorizzati 1002 INVALID_USERNAME 1003 INVALID_CIM 1010 AUTHENTICATION_FAILURE 2000 POI_NOT_ALLOWED 2010 INPUT_NOT_COMPLETED 2020 RANGE_TOO_BIG Username non valido CIM non valido Autenticazione negata: username-cim-azienda non compatibili Il POI inserito non è consentito, perché non pubblico, non di proprietà diretta e non appartenente ad aziende figlie Parametri obbligatori in input non forniti Range temporale troppo ampio (max=7 giorni) 27 2030 RANGE_WRONG 2031 INVALID_MISSION_STATE 2032 INVALID_COMPANY_ID 2033 INVALID_POI_ID Identificativo POI non valido 9999 GENERIC_ERROR Errore generico, non specificato da altri codici Range temporale errato (data iniziale successiva a quella finale, date non valide,..) Stato missioni richieste sconosciuto Identificativo azienda non valido Esempio messaggio per il tabellone degli arrivi <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.export.alr.uirnet.telespazio.com/"> <soapenv:Header/> <soapenv:Body> <ws:arrivals> <!--Optional:--> <arrivalsInput> <!--Optional:--> <reqID>emihfsakjh</reqID> <username>xxxxxxx</username> <cim>xxxxxx</cim> <idAzienda>xxxxx</idAzienda> <idPOI>xxxxxx</idPOI> <!--Optional:--> <targaVeicolo></targaVeicolo> <!--Optional:--> <statoMissione>T</statoMissione> <!--Optional:--> <dataIniziale> xxxx-xx-xxTxx:xx:xxZ </dataIniziale> <!--Optional:--> <dataFinale>xxxx-xx-xxTxx:xx:xxZ</dataFinale> </arrivalsInput> </ws:arrivals> </soapenv:Body> </soapenv:Envelope> Response (presenza di una sola missione pianificata) <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Header/> <env:Body> <ns2:arrivalsResponse xmlns:ns2="http://ws.export.alr.uirnet.telespazio.com/"> <arrivalsOutput> <reqID>emihfsakjh</reqID> <resultId>0</resultId> <resultCode>OK</resultCode> <listaArrivi> <arrivo> <idMissione>xxxxx</idMissione> <nomeMissione>xxxxxxx</nomeMissione> <pianificazioneArrivo>2013-09-06 18:00</pianificazioneArrivo> <statoMissione>P</statoMissione> <targa>xxxxxx</targa> <telRefAziendale>xxxxxxxx</telRefAziendale> <statoDocumentazione>KO</statoDocumentazione> <documentiAssociati>NO</documentiAssociati> 28 <nPrenotazioni>0</nPrenotazioni> <listaMerce> <merce> <id>xxxxxxxxx</id> <tipo>CONTAINER</tipo> <idPrenotazione>xxxxxxxx</idPrenotazione> </merce> </listaMerce> </arrivo> </listaArrivi> </arrivalsOutput> </ns2:arrivalsResponse> </env:Body> </env:Envelope> 8 Servizio di Messaggistica La PLN espone un Servizio di Messaggistica basato su Web Service sicuri su protocollo HTTPS. Tale servizio è deputato alla gestione delle comunicazioni da e verso il SI ed è il supporto di comunicazione per i Servizi di Prenotazioni (§ 8.11). I messaggi nel MDW EDI sono organizzati mediante dei Centro Messaggi, ovvero raggruppamenti logici di folder opportunamente nominati. Un centro messaggi è composto dai folder Inbox, Outbox e Draft e viene assegnato ad ogni azienda (utenza) che intenda scambiare messaggi con gli altri utenti della piattaforma. Il metodo di gestione dinamica dei messaggi è del tipo store-and-forward a 2 passi; un messaggio diretto da un utente ad un altro viene depositato (store) nel folder Outbox dell'utente mittente e poi spostato (forward) nel folder Inbox dell'utente destinatario. Le aziende che usufruiscono del servizio Middleware hanno 2 centro messaggi di default: INFO ed ERROR e una serie di centro messaggi dipendenti dai servizi sottoscritti forniti a supporto dalle applicazioni interne; questi centro messaggi vengono stabiliti dalle applicazioni stesse e sono specificati nei paragrafi dedicati alle applicazioni interne. Sia le aziende censite nel CRM che le applicazioni interne vengono identificate tramite codice univoco assegnato dal CRM. Per la comunicazione con i Servizi di Messaggistica sono esposti tre servizi fondamentali: putMessage per l’invio di un messaggio al MDW EDI. getUnreadMessages per ottenere la lista degli ID dei messaggi non letti getMessage per il recupero del messaggio identificato dall’ID. Sono inoltre presenti servizi per l’accesso a funzioni non essenziali per la realizzazione della comunicazione, ma utili per la gestione del processo: replyTo per rispondere ad un messaggio sendDraftMessage per inviare un messaggio “draft” updateDraftMessage per aggiornare lo stato di un messaggio “draft” getChildrenMessage per ottenere la lista degli ID dei messaggi correlati a quello specificato Le funzionalità ed i servizi della piattaforma sono usufruibili dai SI mediante invio e ricezione di messaggi strutturati; a questo scopo ciascun servizio pubblica una serie di messaggi ben definiti. Essi sono in formato 29 standard, ovvero XML, e sono veicolati dal Servizio di Messaggistica nel campo bodyXml della struttura travellingMessage. Richieste e risposte vengono elencate nei paragrafi che seguono con evidenziati classesottoclasse-codice. Inoltre, come già accennato, i moduli interni hanno un identificativo CRM che li contraddistingue nella comunicazione mediante il Servizio di Messaggistica; esso viene qui indicato assieme al centro messaggi usato per l’invio e la ricezione dei messaggi. Acronimo Applicazione Centro messaggi di invio/ricezione Id CRM ALR ALERT MANAGEMENT SERVER_ALERT_MNGMT 1 PRT PRENOTAZIONE SERVER_PRENOTAZIONE 7 MRP MARKETPLACE SERVER_MRP 8 MPE MERCI PERICOLOSE SERVER_MPE 9 I Web Server sicuri sono accessibili ai seguenti indirizzi: Ambiente URL Test https://test.uirnet.it/B2BBusinessLogic/publishedServices/b2BWsMessage?wsdl Produzione https://www.uirnet.it/B2BBusinessLogic/publishedServices/b2BWsMessage?wsdl 8.1 Mailbox La PLN assegna a ciascuna Azienda le Mailbox predefinite collegate ai Moduli di Gestione dei Servizi attivi. Le Mailbox vengono utilizzate da ciascun Modulo per inviare le comunicazioni inerenti la propria operatività. MAILBOX Nome Modulo Descrizione ALR_CM Corridor Monitor Mailbox per la ricezione degli allarmi relativi al corridor monitoring ALR_DM_EF Documentazione incompleta containerEasy fleet Mailbox per la ricezione degli allarmi relativi alla documentazione incompleta lato Azienda di trasporto (Smart Truck) ALR_DM_CT Documentazione incompleta containerControl Tower Mailbox per la ricezione degli allarmi relativi alla documentazione incompleta lato nodo logistico ALR_GF Geofencing Mailbox per la ricezione degli allarmi relativi al geofencing ALR_PE Routing Mailbox per la ricezione degli allarmi relativi a eventi in corso su POI di missione ALR_SM Sensor monitoring ALR_TE Evento traffico, traffico su missione ALR_TM Ricalcolo stimato tempo di arrivo Mailbox per la ricezione degli allarmi al tempo stimato di arrivo ALR_TS Stato terminali Mailbox per la ricezione degli allarmi relativi allo stato dei terminali ALR_VE Traffico anomalo verso nodo logistico Mailbox per la ricezione degli allarmi relativi al numero di veicoli diretti verso un nodo logistico ERROR MDW Mailbox dedicata alla comunicazione dei messaggi di errore del Sistema di Messaggistica Mailbox per la ricezione degli allarmi relativi al Monitoraggio sensori Evento Mailbox per la ricezione degli allarmi relativi ad eventi perturbativi della viabilità 30 INFO MDW MARKETPLACE MRP PRENOTAZIONI PRT NEWSLETTER Mailbox dedicata alla comunicazionecon il Sistema di Gestione delle Prenotazioni Mailbox per la ricezione della newsletter informativa periodica TRANSLATION 8.2 putMessage Il servizio putMessage consente l’invio di un messaggio ad uno o più destinatari, siano questi utenti o servizi della PLN. La chiamata prevede una serie di parametri: RICHIESTA: PUTMESSAGE Campo Tipo Descrizione message tns:TravellingMessage Messaggio da inviare userName xs:string Identificativo utente PLN cim xs:string Pin di accesso ai Web Services folderType xs:string Folder (Outbox,Inbox,Draft) Il parametro folderType identifica la cartella a cui effettuare il delivery della putMessage (per messaggi in uscita il valore del campo deve essere Outbox, per il salvataggio di una bozza del messaggio il valore deve essere Draft) Il parametro message contiene le indicazioni circa il destinatario del messaggio ed il contenuto del messaggio da inviare. Tale struttura dati, rappresentata da un complexType XML, è così costituita: TRAVELLINGMESSAGE Campo Tipo Descrizione header tns:header Informazioni sul routing del messaggio body tns:body Corpo del messaggio La struttura dati HEADER contiene le informazioni per l’instradamento del messaggio e la descrizione del suo formato: HEADER Campo Tipo Descrizione messageCode xs:string Codice messaggio messageClass xs:string Classe messaggio messageSubClass xs:string Sottoclasse messaggio priority xs:long Priorità messaggio (default 1) timestamp xs:dateTime Data-ora invio originalFormat xs:string Formato messaggio callerId xs:long Id Azienda (CRM CompanyId) composer xs:string Utente (CRM userName = userId) 31 mailboxSender xs:string Centro messaggi di riferimento receivers tns:msgReceiverWithFormat Lista destinatari subject xs:string Soggetto messaggio Il parametro MSGRECEIVERWITHFORMAT è una sequence che identifica i destinatari del messaggio, consentendo anche di impostare formati di transcodifica differenti per ciascun destinatario: MSGRECEIVERFORMAT Campo Tipo Descrizione receiverId xs:long Identificativo del destinatario mailboxName xs:string Centro messaggi formatName xs:string Formato del messaggio La struttura dati BODY contiene il corpo del messaggio ed eventuali attachment: BODY Campo Tipo Descrizione bodyNatural xs:string Messaggio da inviare: formato nativo body Xml xs:string Messaggio da inviare: formato xml di piattaforma incapsulato in un tag CDATA attachments tns:attachments Lista allegati Ciascun ATTACHMENT è identificato da due parametri: ATTACHMENT Campo Tipo Descrizione fileName xs:string Nome allegato file Body xs:string Corpo allegato entrambi obbligatori e di lunghezza non inferiore ad 1. Il parametro fileBody deve essere codificato Base64 per la trasmissione. RISPOSTA: PUTMESSAGERESPONSE Campo Tipo Descrizione return xs:long Progressivo del messaggio inserito Tale valore deve essere memorizzato dal SI per identificare il messaggio inviato per eventuali riferimenti in future comunicazioni. Nell’esempio sotto viene riportata una chiamata per uno specifico messaggio diretto al sistema Prenotazione; in particolare si tratta di una richiesta della lista dei servizi prenotabili. Da notare che il campo <bodyXml> contiene a sua volta un messaggio in formato XML di piattaforma così come si attende il sistema Prenotazioni. Esempio 32 <pub:putMessage> <message> <header> <msgId xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:nil='true'/> <messageCode>LISTA_SERVIZI</messageCode> <messageClass>PRT</messageClass> <messageSubClass>INQUIRY</messageSubClass> <priority>0</priority> <timestamp>2012-05-02T12:00:00</timestamp> <originalFormat>UirnetFormat</originalFormat> <callerId>xxxxx</callerId> <composer>xxxx</composer> <mailboxSender>PRENOTAZIONI</mailboxSender> <!—Zero or more repetitions:--> <receivers> <receiverId>7</receiverId> <mailboxName>SERVER_PRENOTAZIONE</mailboxName> <formatName>UirnetFormat</formatName> </receivers> <subject>Lista dei servizi di booking</subject> </header> <body> <bodyXml><![CDATA[<?xml version="1.0" encoding="UTF-8"?> <ns0:ListServices xmlns:ns0="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <requestId>R123ap</requestId> <serviceState>1</serviceState> </ns0:ListServices>]]></bodyXml> </body> </message> <folderType>Outbox</folderType> <userName>xxxxx</userName> <cim>xxxxx</cim> </pub:putMessage> Response <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Header/> <env:Body> <ns2:putMessageResponse xmlns:ns2="http://ws.bll.b2b.elsagdatamat.com/"> <return>1079180</return> </ns2:putMessageResponse> 33 </env:Body> </env:Envelope> 8.3 getUnreadMessages Il servizio fornisce l’elenco degli ID dei messaggi da leggere per la mailbox indicata di proprietà dell’utente autenticato. RICHIESTA: GETUNREADMESSAGES Campo Tipo Descrizione companyId xs:long ID Uirnet dell’azienda mailboxContainer xs:string Centro messaggi (PRENOTAZIONI, ERROR, INFO,..) folderType xs:string Folder (Outbox, Inbox) userName xs:string Nome utente – username accesso PLN cim xs:string Pin di accesso ai Web Services I seguenti parametri sono utilizzati per individuare il centro messaggi da cui recuperare la lista dei messaggi non letti: companyId: identifica l’azienda (Id Azienda) mailboxSender: identifica il centro messaggi da interrogare folderType: identifica la cartella da interrogare RISPOSTA: GETUNREADMESSAGESRESPONSE Campo Tipo Descrizione return xs: List<Long> Lista degli ID dei messaggi non letti La risposta è costituita dall’elenco dei messaggi non letti del centro messaggi specificato dal parametro return, una sequenza di messageId dei messaggi non letti. Se ai parametri della richiesta non corrisponde alcun messaggio la risposta è una lista vuota. Qui sotto viene riportato un esempio di chiamata per ottenere la lista dei messaggi non letti contenuti nel folder Inbox del centro messaggi INFO. Esempio <pub:getUnreadMessages> <companyId>xxxxx</companyId> <mailboxSender>INFO</mailboxSender> <folderType>Inbox</folderType> <userName>xxxx</userName> <cim>xxxxx</cim> </pub:getUnreadMessages> Response 34 <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Header/> <env:Body> <ns2:getUnreadMessagesResponse xmlns:ns2="http://ws.bll.b2b.elsagdatamat.com/"> <return>155866</return> <return>155871</return> <return>155876</return> <return>155883</return> <return>155886</return> <return>155893</return> </ns2:getUnreadMessagesResponse> </env:Body> </env:Envelope> 8.4 getMessage Il servizio restituisce il messaggio con l’id specificato nella richiesta. RICHIESTA: GETMESSAGE Campo Tipo Descrizione middlewareMsgId xs:long ID messaggio userName xs:string Username PLN per l’accesso al servizio cim xs:string Pin di accesso ai Web Services Il parametro middlewareMsgId identifica il messaggio da recuperare. RISPOSTA: GETMESSAGERESPONSE Campo Tipo Descrizione return xs:ExtendedTravellingMessage Messaggio Il parametro return della risposta contiene il messaggio caratterizzato dai seguenti parametri: EXTENDEDTRAVELLINGMESSAGE Campo Tipo Descrizione travellingMessage xs:travellingMessage Vedi descrizione in par. 0Errore. L'origine riferimento non stata trovata. mifId xs:long wrongMsgInFolder xs:long ancestorMsgInFolder xs:long globalAncestorMsgInF older xs:long replyOfMsgInFolder xs:long Inserted xs:date firstAccess xs:date Campi ad uso interno (riservati) 35 error xs:boolean errorManaged xs:date ruleNotApplied xs:date read xs:date deleted xs:date L’esempio sotto mostra una chiamata per ottenere il messaggio numero 970044 (in grigetto i campi dell’ ExtendedTravellingMessage recanti informazioni inerenti le elaborazioni subìte dal messaggio). Esempio <pub:getMessages> <middlewareMessageId>970044</middlewareMessageId> <userName>xxxxx</userName> <cim>xxxxx</cim> </pub:getMessages> Response <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Header/> <env:Body> <ns2:getMessageResponse xmlns:ns2="http://ws.bll.b2b.elsagdatamat.com/"> <return> <header> <msgId>970044</msgId> <messageCode>WSRESPONSE</messageCode> <messageClass>TAA</messageClass> <messageSubClass>EPORT</messageSubClass> <priority>0</priority> <timestamp>2012-03-20T15:32:59.518+01:00</timestamp> <originalFormat>UirnetFormat</originalFormat> <callerId>xxx</callerId> <composer>xxx</composer> <mailboxSender>INFO</mailboxSender> <receivers> <receiverId>11081</receiverId> <mailboxName>INFO</mailboxName> <formatName>UirnetFormat</formatName> </receivers> <subject>Invio integrazione 001</subject> </header> <body> 36 <bodyNatural>Prova invio massivo da az. 313 verso az.11081</bodyNatural> </body> <mifId>970044</mifId> <wrongMsgInFolder>0</wrongMsgInFolder> <ancestorMsgInFolder>969334</ancestorMsgInFolder> <globalAncestorMsgInFolder>969334</globalAncestorMsgInFolder> <replyOfMsgInFolder>0</replyOfMsgInFolder> <inserted>2012-03-20T15:33:03.477+01:00</inserted> <firstAccess>2012-05-07T16:26:29.271+02:00</firstAccess> <error>false</error> <ruleNotApplied>2012-03-20T15:33:17.429+01:00</ruleNotApplied> <read>2012-05-07T16:26:29.271+02:00</read> </return> </ns2:getMessageResponse> </env:Body> </env:Envelope> 8.5 replyTo Invia una risposta al messaggio indicato. RICHIESTA: REPLYTO Campo Tipo Descrizione middlewareMsgId xs:long ID messaggio message tns:TravellingMessage Messaggio da inviare userName xs:string Username PLN per l’accesso al servizio cim xs:string Pin di accesso ai Web Services Il parametro middlewareMsgId identifica il messaggio a cui si sta rispondendo e il parametro message la risposta da inviare RISPOSTA: REPLYTORESPONSE Campo Tipo Descrizione return xs:long Progressivo del messaggio inserito Tale valore deve essere memorizzato dal SI per identificare il messaggio inviato per eventuali riferimenti in future comunicazioni. 8.6 sendDraftMessage Il servizio provvede ad inviare un messaggio bozza precedentemente salvato nella mailbox dell’utente. RICHIESTA: SENDDRAFTMESSAGE Campo Tipo Descrizione middlewareMsgId xs:long ID messaggio userName xs:string Username PLN per l’accesso al servizio 37 cim xs:string Pin di accesso ai Web Services Il parametro middlewareMsgId identifica il messaggio in bozza da inviare. RISPOSTA: SENDDRAFTMESSAGERESPONSE Il messaggio di ritorno non contempla alcun parametro. 8.7 updateDraftMessage Il servizio consente di inserire o modificare un messaggio in bozza nel Servizio di Messaggistica. RICHIESTA: UPDATEDRAFTMESSAGE Campo Tipo Descrizione middlewareMsgId xs:long ID messaggio message tns:TravellingMessage Messaggio userName xs:string Username PLN per l’accesso al servizio cim xs:string Pin di accesso ai Web Services Il parametro middlewareMsgId identifica il messaggio da aggiornare e il parametro message il contenuto aggiornato da memorizzare. RISPOSTA: UPDATEDRAFTMESSAGERESPONSE Il messaggio di ritorno non contempla alcun parametro. 8.8 deleteDraftMessage Elimina il messaggio in bozza specificato. RICHIESTA: DELETEDRAFTMESSAGE Campo Tipo Descrizione middlewareMsgId xs:long ID messaggio userName xs:string Username PLN per l’accesso al servizio cim xs:string Pin di accesso ai Web Services Il parametro middlewareMsgId identifica il messaggio in bozza da inviare. RISPOSTA:DELETEDRAFTMESSAGERESPONSE Il messaggio di ritorno non contempla alcun parametro. 8.9 getChildrenMessage Ottiene gli ID dei figli del messaggio specificato RICHIESTA: GETCHILDRENMESSAGES Campo Tipo Descrizione middlewareMsgId xs:long ID messaggio userName xs:string Username PLN per l’accesso al servizio cim xs:string Pin di accesso ai Web Services Il parametro middlewareMsgId identifica il messaggio in bozza da inviare. 38 RISPOSTA: GETCHILDRENMESSAGESRESPONSE Campo Tipo Descrizione return xs:list<long> Lista degli ID dei messaggi collegati La risposta è costituita dall’elenco dei messaggi collegati a quello specificato nel parametro return, una sequenza di messageId dei messaggi figli. Se ai parametri della richiesta non corrisponde alcun messaggio la risposta è una lista vuota. 8.10 Gestione delle eccezioni In caso di errore viene restituito la struttura dati WSEXCEPTION caratterizzato dal seguente schema: WSEXCEPTION Campo Tipo Descrizione errCode xs:string Codice eccezione message xs:string Chiave messaggio Di seguito vengono presentati i codici di errore restituiti dalle chiamate ai Web Services. L’informazione e’ completata dallo stack trace dell’errore avvenuto. ERRCODE Codice eccezione Chiave eccezione Descrizione B2B_SLE_0070 MAILBOX_NOT_FOUND Centro Messaggi indicato non esistente B2B_SLE_0071 MESSAGECODE_NOT_FOUND Codice Messaggio indicato non esistente B2B_SLE_0090 MAE_ACTION_LOADING_FAILED Errore in fase di caricamento di una azione B2B_SLE_0120 MAE_ERROR_HTTP_CONNECTION Errore di connessione HTTP B2B_SLE_0130 MAE_ERROR_CREATING_XMLDOC_FROMSTRING Errore di trasformazione XML. B2B_SLE_0150 ERROR_DURING_MESSAGEINFOLDER_LOADING Errore di caricamento messaggio B2B_SLE_0230 MESSAGE_WRONG_PARAMETER_FORMAT Errore nel formato dei parametri della chiamata B2B_SLE_0290 MESSAGE_NOT_FOUND Messaggio non trovato B2B_SLE_0300 COMPANY_NOT_FOUND Azienda indicata non esistente SLE_0000 GENERIC Errore generico SLE_0001 GENERIC_WITH_MESSAGE Errore generico nel messaggio SLE_0010 ENTITY_NOT_FOUND Entita’ non trovata SLE_0020 DB_ERROR_DATAINTEGRITY Errore di integrita’ database SLE_0030 DB_ERROR_OPTIMISTIC_LOCK Errore di lock ottimistico database SLE_0040 ENTITY_PROPERTY_NOT_FOUND Proprieta’ non trovata SLE_0050 MISSING_ARGS Argomenti alla chiamata mancanti SLE_0060 FILE_NOT_FOUND File non trovato SLE_0130 GENERIC_IO Errore generico di I/O SLE_0160 TYPING_CAST_EXCEPTION Errore di cast tipo dato SLE_0180 MANDATORY_PROPERTY_NOT_SET Proprieta’ obbligatoria 39 SLE_0200 XML_TRANFORMATION_ERROR Errore nella trasformazione XML SLE_0210 XML_STRING_TO_DOC_ERROR Errore di conversione da XML a documento. SLE_0212 XML_DOC_TO_STRING_ERROR Errore di conversione da Documento a stringa SLE_0212 XML_MARSHALLING_OBJ_ERROR Errore di Marshalling SLE_0213 XML_VALIDATION_ERROR Errore di validazione corpo messaggio xml SLE_0220 EXCEPTION_IDENTIFIER_INVALID Identificatore non valido 8.11 Casi d’uso In questo paragrafo vengono rappresentati alcuni casi d’uso del Sistema di Messaggistica della PLN al fine di meglio chiarire le modalità di implementazione dell’integrazione dei SI con tale servizio. 8.11.1 Invio di un Messaggio alla PLN Il presente caso d’uso è legato all’invio di un messaggio strutturato alla PLN per l’accesso ad uno dei servizi esposti dalla Piattoforma. Obiettivo Invio di un messaggio alla PLN Precondizioni Il SI dispone delle credenziali per interoperare con la PLN (Username e PIN di accesso e ID azienda) Postcondizione di successo Il WS restituisce un messaggio PLN Postcondizione di fallimento Il WS restituisce un errore nella forma WSEXCEPTION Estende il caso d’uso NA Specializza il caso d’uso NA Include il caso d’uso NA Sequenza di azioni 1. 2. 3. PUTMESSAGERESPONSE con l’identificativo del messaggio acquisito dalla Il SI predispone il messaggio secondo il formato previsto dalla PLN Il SI richiama il servizio PUTMESSAGE della PLN e trasmette il messaggio Il servizio PUTMESSAGE risponde alla richiesta del SI 40 Sequence Diagram 41 8.11.2 Ricezione dei Messaggi dalla PLN 42 9 Sistema di Gestione delle Prenotazioni La PLN offre un sistema di gestione delle prenotazioni a supporto degli autotrasportatori e dei nodi logistici. Il Sistema di Gestione delle Prenotazioni si integra con i SI degli autotrasportatori e dei nodi logistici mediante l’uso di messaggi strutturati. Essi sono in formato standard, ovvero XML, e sono veicolati dal Servizio di Messaggistica nel campo bodyXml della struttura TRAVELLINGMESSAGE. Richieste e risposte vengono elencate nei paragrafi che seguono con evidenziati classe-sottoclasse-codice. Inoltre, come già accennato, i moduli interni hanno un identificativo CRM che li contraddistingue nella comunicazione mediante il Servizio di Messaggistica; Per inviare messaggi al Sistema di Gestione delle Prenotazioni i parametri del messaggio PUTMESSAGE sono: HEADER Campo Valore originalFormat UirnetFormat mailboxSender PRENOTAZIONI RECEIVERS Campo Valore mailboxName SERVER_PRENOTAZIONE receiverId 7 formatName UirnetFormat Le comunicazioni del Sistema di Gestione delle Prenotazioni vengono archiviate nella MailBox PRENOTAZIONI/Inbox dell’Azienda se la policy di dispatching ai SI è attiva. Il Sistema di Gestione delle Prenotazioni permette di configurare i servizi e le richieste di prenotazione agli stessi. L’operatività dell’interfaccia Web è replicata in massima parte nella messaggistica, consentendo l’implementazione dei processi di Prenotazione anche da SI esterni. Il Sistema di Gestione delle Prenotazioni definisce i seguenti messaggi suddivisi per tipologia di attività: Catalogo dei servizi o ListTypologies o DetailTypology o SchemaServiceByTipology o ListServices o DetailService o SchemaBookingByService o ServiceState Amministrazione dei servizi o InsertService 43 o UpdateService o UpdateServiceState Gestione della prenotazioni o InsertBooking o UpdateBooking o UpdateBookingState o ListBookings o ListBookingsDocuments o BookingState o DetailBooking o DetailBookingDocuments o BookingNotify o BookingForward o BookingReminder 9.1 Accesso al Catalogo dei Servizi I messaggi di questa categoria consentono di interrogare il Catalogo dei Servizi al fine di ottenere informazioni circa le tipologie ed i servizi pubblicati, con i dettagli e le informazioni sullo stato, nonché gli schemi xsd delle componenti specifiche dei messaggi per tipologia o servizio. 9.1.1 ListTypologies Consente di ottenere la lista delle tipologie di servizi definite nella piattaforma. L’interrogazione è consentita ad utenze con ruolo Fornitore Booking. Campo Valore messageCode LISTA_TIPOLOGIE messageClass PRT messageSubClass INQUIRY RICHIESTA: LISTTYPOLOGIES Campo Tipo Descrizione Obbl. requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione N serviceClassId xs: long Identificativo Classe di Servizi N RISPOSTA: LISTTYPOLOGIESRESPONSE Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione 44 listTypologiesResponse xs:ServicesTypeInfo[0..n] Lista delle Tipologia di Servizi Campo Tipo Descrizione serviceClassId xs:long Identificativo Classe di Servizi serviceTypeCode xs:string Codice della tipologia di servizio serviceTypeDescription xs:string Descrizione della tipologia di servizio serviceTypeId xs:long Identificativo della tipologia di servizi serviceTypeName xs:string Nome della tipologia di servizi SERVICESTYPEINFO ESEMPIO Lista delle tipologie di servizi (bodyXml) <ns0:ListTypologiesxmlns:ns0="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <requestId>Req8958</requestId> <serviceClassId>1</serviceClassId> </ns0:ListTypologies> Messaggio di risposta <ns2:ListTypologiesResponse xmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <requestId> Req8958</requestId> <return> <serviceClassId>1</serviceClassId> <serviceTypeCode>SRVTYPES 56</serviceTypeCode> <serviceTypeDescription>servizio cinquantasei</serviceTypeDescription> <serviceTypeId>56</serviceTypeId> <serviceTypeName>serv_typ</serviceTypeName> </return> <return> <serviceClassId>1</serviceClassId> <serviceTypeCode>SRVTYPES62</serviceTypeCode> <serviceTypeDescription>prova visualizzazione car.</serviceTypeDescription> <serviceTypeId>62</serviceTypeId> <serviceTypeName>provavis</serviceTypeName> </return> </ns2:ListTypologiesResponse> 9.1.2 DetailTypology Restituisce i dettagli di una tipologia. 45 Richiesta autorizzata al solo ruolo Fornitore Booking. Campo Valore messageCode DETTAGLIO_TIPOLOGIA messageClass PRT messageSubClass INQUIRY RICHIESTA:DETAILTYPOLOGY Campo Tipo Descrizione Obbl. requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione N serviceTypeId xs:long Identificativo della tipologia di servizi S RISPOSTA:DETAILTYPOLOGYRESPONSE Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione return xs: typologyDetail Stato del servizio Campo Tipo Descrizione serviceTypeId xs:long Identificativo della tipologia di servizi serviceClassId xs:long Identificativo Classe di Servizi code xs:string Codice del servizio name xs:string Nome del servizio description xs:string Descrizione del servizio operationDate xs:dateTime Data di inserimento/modifica regNumber xs:long Versione tipologia regNumberf xs:long Versione tipologia precedente state xs:int Stato del servizio userName xs:string Username PLN per l’accesso al servizio flagConfirmDate xs:boolean Flag conferma manuale prenotazione attributes tns:Attributes Caratteristiche proprie del servizio richiesto TYPOLOGYDETAIL ESEMPIO Dettaglio tipologia (bodyXml) <ns0:DetailTypology xmlns:ns0="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <requestId>R123ap</requestId> <serviceTypeId>2</serviceTypeId> </ns0:DetailTypology> 46 Messaggio di risposta <ns2:DetailTypologyResponsexmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <requestId>R123ap</requestId> <return> <srvTypesId>2</srvTypesId> <srvClassId>2</srvClassId> <code>SRVTYPES2</code> <name>Aree di Sosta</name> <description>Aree di sosta</description> <operationDate>2011-02-14T13:24:13.181+01:00</operationDate> <regNumber>2</regNumber> <regNumberf>0</regNumberf> <state>1</state> <userName>user</userName> <flagConfirmDate>false</flagConfirmDate> <attributes> <customAttributes> <truckData> <sd type="string" /> <shipowner type="string" /> <terminalVoyageId type="string" /> <asas type="string" /> <portOfArrivalCode type="string" /> <arrivalDate type="date" /> <typevehicles type="string"> <values> <value>Autotreni</value> <value>Motrici</value> <value>Rimorchi</value> <value>Rimorchi</value> <value>Semirimorchi</value> </values> </typevehicles> </truckData> <caratteristiche> <commodityType type="string" /> 47 <prova type="string"> <values> <value>a</value> </values> </prova> <etd type="dateTime" /> <shipIMONumber type="string" /> <containerList> <container type="repeater"> <shipCallSign type="string" /> <asas type="string" /> <externalScannerInspection type="boolean" /> <shipownerBicCode type="string" /> </container> </containerList> <licenzevehicles type="string" /> <externalScannerInspection type="boolean" /> <eta type="dateTime" /> <asas type="string" /> <ADRclass type="string" /> <terminalCode type="string" /> </caratteristiche> </customAttributes> </attributes> </return> </ns2:DetailTypologyResponse> 9.1.3 SchemaServiceByTipology Consente di ottenere lo schema di un serviziodefinito sulla piattaforma, specificandone la tipologia. Campo Valore messageCode SCHEMA_SERVIZIO messageClass PRT messageSubClass INQUIRY RICHIESTA: SCHEMASERVICEBYTYPOLOGY Campo Tipo Descrizione Obbl. requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione N typeId xs:long Identificativo Tipologia del Servizio N 48 RISPOSTA: SCHEMASERVICEBYTYPOLOGYRESPONSE Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione return xs: string Schema del Servizio ESEMPIO Elenco prenotazioni (bodyXml) <ns0:SchemaServiceByTypology xmlns:ns0="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <requestId>R123ap</requestId> <typeId>145</typeId> </ns0:SchemaServiceByTypology> Messaggio di risposta <ns2:SchemaServiceByTypologyResponse xmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <requestId>R123ap</requestId> <return> <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="com.elsagdatamat.uirnet.prenotazioni.messageclass"> Schema xml del servizio richiesto </xs:schema> </return> </ns2:SchemaServiceByTypologyResponse> 9.1.4 ListServices Restituisce l’elenco dei servizi che corrispondono alle condizioni date. Campo Valore messageCode LISTA_SERVIZI messageClass PRT messageSubClass INQUIRY RICHIESTA:LISTSERVICES Campo Tipo Descrizione Obbl. requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione N sellerId xs:long Identificativo del Fornitore N 49 serviceTypeId xs:long Identificativo della tipologia di servizio N serviceState xs:integer Stato del servizio N poiId xs:long Identificativo del POI N RISPOSTA: LISTSERVICESRESPONSE Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione listServicesResponse xs:ServiceInfo[0..n] Lista dei Servizi Campo Tipo Descrizione sellerId xs:long Identificativo del Fornitore serviceId xs:long Identificativo del Servizio serviceCode xs:string Codice del Servizio serviceDescription xs:string Descrizione del Servizio serviceState xs:int Stato del Servizio servicesTypeId xs:long Identificativo della Tipologia di Servizi SERVICEINFO ESEMPIO Lista dei servizi attivi (stato=1) sulla piattaforma (bodyXml) <ns0:ListServices xmlns:ns0="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <requestId>Req123</requestId> <serviceState>1</serviceState> </ns0:ListServices> Messaggio di risposta <ns2:ListServicesResponse xmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <requestId>Req123</requestId> <return> <sellerId>11086</sellerId> <serviceCode>TAA-WEB</serviceCode> <serviceDescription>preavviso di arrivo web modificato</serviceDescription> <serviceId>2</serviceId> <serviceState>1</serviceState> <serviceTypeId>1</serviceTypeId> </return> 50 <return> <sellerId>11086</sellerId> <serviceCode>TAA-WAR</serviceCode> <serviceDescription> preavviso di arrivo web con acquisizione automatica </serviceDescription> <serviceId>3</serviceId> <serviceState>1</serviceState> <serviceTypeId>1</serviceTypeId> </return> </ns2:ListServicesResponse> 9.1.5 DetailService Restituisce i dettagli di un servizio presente nella piattaforma. Campo Valore messageCode DETTAGLIO_SERVIZIO messageClass PRT messageSubClass INQUIRY RICHIESTA: DETAILSERVICE Campo Tipo Descrizione Obbl. requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione N serviceId xs:long Identificativo del Servizio N RISPOSTA:DETAILSERVICERESPONSE Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione detailServiceResponse xs: serviceDetail Dettaglio dei servizio Campo Tipo Descrizione srvId xs:long Identificativo del Servizio srvTypesId xs:long Identificativo Tipologia di Servizio srvTypesCode xs:string Codice della Tipologia di servizio operationDate xs:dateTime Data di inserimento/modifica description xs:string Descrizione del servizio shortDescription Xs:string Descrizione sintetica del servizio code xs:string Codice del servizio SERVICEDETAIL 51 sellerId xs:long Identificativo del Fornitore state xs:integer Stato del servizio Costs xs:string Tariffe del servizio policyChanges xs:string Politiche di modifica/cancellazione locationId xs:long Identificativo indirizzo fornitura userName xs:string Identificativo utente flagOrigine xs:string Origine inserimento/modifica (W per Web, L per Legacy, C per Schedulatore CRON) startDate xs:dateTime Data di inizio validità del servizio endDate xs:dateTime Data di fine validità del servizio pv xs:string Provincia di fornitura del servizio automaticAccept xs:boolean Servizio ad accettazione automatica della prenotazione limit xs:string Limitazioni al servizio addressUrl xs:string Link al sito del fornitore times xs:string Orari del servizio closingPeriods xs:periodInfo Periodi di non prenotabilità del servizio attributes Caratteristiche proprie del servizio richiesto PERIODINFO Campo Tipo Descrizione startDate xs:dateTime Data inizio endDate xs:dateTime Data fine Dettaglio servizio (bodyXml) <ns0:DetailServicexmlns:ns0="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <requestId>R676</requestId> <serviceId>3</serviceId> </ns0:DetailService> Messaggio di risposta <ns2:DetailServiceResponse xmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <requestId>R676</requestId> <return> <srvId>3</srvId> <srvTypesId>1</srvTypesId> <srvTypesCode>SRVTYPES1</srvTypesCode> 52 <operationDate>2011-09-19T14:44:29.070+02:00</operationDate> <description>preavviso di arrivo web con acquisizione automatica</description> <shortDescription>preavviso di arrivo web acq. automatica</shortDescription> <code>TAA-WAR</code> <sellerId>11086</sellerId> <state>3</state> <locationId>10607</locationId> <userName> user</userName> <flagOrigine>W</flagOrigine> <pv>TORINO</pv> <automaticAccept>false</automaticAccept> <attributes> <customAttributes> (…) Lista di attributi definiti sul servizio </customAttributes> </attributes> </return> </ns2:DetailServiceResponse> 9.1.6 SchemaBookingByService Consente di ottenere lo schema di una prenotazione specificando il servizio definito sull piattaforma. Campo Valore messageCode SCHEMA_PRENOTAZIONE messageClass PRT messageSubClass INQUIRY RICHIESTA: SCHEMABOOKINGBYSERVICE Campo Tipo Descrizione Obbl. requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione N serviceId xs:long Identificativo del Servizio N RISPOSTA: SCHEMABOOKINGBYSERVICERESPONSE Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione return xs: string 53 ESEMPIO Schema prenotazione (bodyXml) <ns0:SchemaBookingByService xmlns:ns0="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <requestId>R123ap</requestId> <serviceId>145</serviceId> </ns0: SchemaBookingByService> Messaggio di risposta <ns2:SchemaBookingByServiceResponse xmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <requestId>R123ap</requestId> <return><?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xs=http://www.w3.org/2001/XMLSchema targetNamespace="com.elsagdatamat.uirnet.prenotazioni.messageclass"> Schema xml della prenotazione dipendente dal servizio richiesto </xs:schema> </return> </ns2:SchemaBookingByServiceResponse> 9.1.7 ServiceState Consente di ottenere lo stato di un servizio. Campo Valore messageCode STATO_SERVIZIO messageClass PRT messageSubClass INQUIRY RICHIESTA:SERVICESTATE Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito l’individuazione della conversazione serviceId xs:long Identificativo del servizio Obbl. dal SI per N S RISPOSTA:SERVICESTATERESPONSE Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione return xs: serviceStateInfo Stato del servizio 54 SERVICESTATEINFO Campo Tipo Descrizione serviceId xs:long Identificativo del servizio serviceStateCode xs:string Stato del servizio ESEMPIO Stato servizio (bodyXml) <ns0: ServiceState xmlns:ns0="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <requestId>R123ap</requestId> <serviceId>262</serviceId> </ns0: ServiceState> Messaggio di risposta <ns2:ServiceStateResponse xmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <requestId>R123ap</requestId> <return> <serviceId>262</serviceId> <serviceStateCode>1</serviceStateCode> </return> </ns2:ServiceStateResponse> 9.2 Amministrazione dei Servizi 9.2.1 InsertService Inserimento di un servizio sulla piattaforma. Campo Valore messageCode INSERIMENTO messageClass PRT messageSubClass SERVIZI RICHIESTA:INSERTSERVICE Campo Tipo Descrizione Obbl. requestId xs:long Identificativo richiesta attribuito l’individuazione della conversazione sellerId xs:long Identificativo del Fornitore S locationId xs:long Identificativo indirizzo fornitura S srvTypesId xs:long Identificativo Tipologia di Servizio S code xs:string Codice del servizio S dal SI per N 55 description xs:string Descrizione del servizio S shortDescription xs:string Descrizione breve S costs xs:string Tariffe del servizio N policyChanges xs:string Politiche di modifica/cancellazione N startDate xs:dateTime Data inizio N endDate xs:dateTime Data fine N pv xs:string Provincia di fornitura del servizio N automaticAccept xs:boolean Accettazione automatica N limit xs:string Limitazioni al servizio N addressUrl xs:string Link al sito del fornitore N times xs:string Orari del servizio N closingPeriods xs:periodInfo Periodi di non prenotabilità del servizio N Caratteristiche proprie del servizio richiesto S attributes PERIODINFO Campo Tipo Descrizione startDate xs:dateTime Data inizio endDate xs:dateTime Data fine RISPOSTA:INSERTSERVICERESPONSE Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione insertServiceResponse xs: serviceStateInfo Stato del servizio Campo Tipo Descrizione serviceId xs:long Identificativo del servizio serviceStateCode xs:string Stato del servizio SERVICESTATEINFO ESEMPIO Inserimento nuovo servizio (bodyXml) <ns0:InsertService xmlns:ns0="com.elsagdatamat.uirnet.prenotazioni.messageclass" > <sellerId>xxxxx</sellerId> <locationId>xxxxx</locationId> <srvTypesId>33</srvTypesId> <code>SRV-LAV</code> <description>Lavaggio mezzi</description> <shortDescription>Lavaggio mezzi (da legacy)</shortDescription> <pv>FI</pv> 56 <automaticAccept>1</automaticAccept> <missionDerived>1</missionDerived> <attributes> <customAttributes/> </attributes> </ns0:InsertService> Messaggio di risposta <ns2:InsertServiceResponse xmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <return> <serviceId>262</serviceId> <serviceStateCode>0</serviceStateCode> </return> </ns2:InsertServiceResponse> 9.2.2 UpdateService Aggiorna le caratteristiche di un servizio della piattaforma. Campo Valore messageCode AGGIORNAMENTO messageClass PRT messageSubClass SERVIZI RICHIESTA: UPDATESERVICE Campo Tipo Descrizione Obbl. requestId xs:long Identificativo richiesta attribuito dal SI per l’individuazione della conversazione N srvId xs:long Identificativo del servizio S sellerId xs:long Identificativo del Fornitore S locationId xs:long Identificativo indirizzo fornitura S description xs:string Descrizione estesa del servizio S shortDescription xs:string Descrizione breve del servizio S costs xs:string Tariffe del servizio N policyChanges xs:string Politiche di modifica/cancellazione N startDate xs:dateTime Data inizio N endDate xs:dateTime Data fine N pv xs:string Provincia di fornitura del servizio S automaticAccept xs:boolean Accettazione automatica S 57 missionDerived xs:boolean Servizio con creazione missione derivata S limit xs:string Limitazioni al servizio N addressUrl xs:string Link al sito del fornitore N times xs:string Orari del servizio N closingPeriods xs: periodInfo Periodi di non prenotabilità N Caratteristiche proprie del servizio richiesto S attributes PERIODINFO Campo Tipo Descrizione startDate xs:dateTime Data inizio endDate xs:dateTime Data fine RISPOSTA:UPDATESERVICERESPONSE Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione UpdateServiceResponse xs: serviceStateInfo SERVICESTATEINFO Campo Tipo Descrizione serviceId xs:long Identificativo del servizio serviceStateCode xs:string Stato del servizio ESEMPIO Aggiorna servizio (bodyXml) <ns0:UpdateService xmlns:ns0="com.elsagdatamat.uirnet.prenotazioni.messageclass" > <srvId>262</srvId> <sellerId>xxxxxx</sellerId> <locationId>xxxxxx</locationId> <description>Lavaggio mezzi & mezzi</description> <shortDescription>Lavaggio mezzi (da legacy)</shortDescription> <pv>FI</pv> <automaticAccept>0</automaticAccept> <missionDerived>0</missionDerived> <attributes> <customAttributes/> </attributes> </ns0:UpdateService> Messaggio di risposta 58 <ns2:UpdateServiceResponsexmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <return> <serviceId>262</serviceId> <serviceStateCode>2</serviceStateCode> </return> </ns2:UpdateServiceResponse> 9.2.3 UpdateServiceState Cambia lo stato di un servizio della piattaforma (servizio in stato sospeso). Campo Valore messageCode SERVIZI messageClass PRT messageSubClass CAMBIOSTATO RICHIESTA: UPDATESERVICESTATE Campo Tipo Descrizione Obbl. requestId xs:string Identificativo richiesta attribuito l’individuazione della conversazione serviceId xs:long Identificativo servizio S stateCode xs:int Stato servizio S notes xs:string Note di cambio stato N originalResponse xs:OriginalResponse Messaggio originale inviato dal sistema del fornitore N dal SI per N RISPOSTA: UPDATESERVICESTATERESPONSE Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione UpdateServiceStateResponse xs: serviceStateInfo Stato del servizio Campo Tipo Descrizione serviceId xs:long Identificativo del servizio serviceStateCode xs:string Stato del servizio SERVICESTATEINFO ESEMPIO Cambia lo stato di un servizio (bodyXml) <ns0:UpdateServiceState xmlns:ns0="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <requestId>R123ap</requestId> <serviceId>192</serviceId> 59 <stateCode>2</stateCode> </ns0:UpdateServiceState> Messaggio di risposta <ns2:UpdateServiceStateResponse xmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <requestId>R123ap</requestId> <return> <serviceId>192</serviceId> <serviceStateCode>2</serviceStateCode> </return> </ns2:UpdateServiceStateResponse> 9.3 Gestione delle Prenotazioni 9.3.1 InsertBooking Inserisce una prenotazione sulla piattaforma. Campo Valore messageCode INSERIMENTO messageClass PRT messageSubClass PRENOTAZIONI RICHIESTA: INSERTBOOKING Campo Tipo Descrizione Obbl. requestId xs:string Identificativo richiesta attribuito l’individuazione della conversazione buyerId xs:long Identificativo del committente S locationId xs:long Identificativo indirizzo fornitura S serviceId xs:long Identificativo servizio S notes xs:string Note N expiredDate xs:dateTime Data scadenza N fruitionStartDate xs:dateTime Data inizio fruizione S fruitionEndDate xs:dateTime Data fine fruizione S flagConfirmDate xs:boolean Flag conferma manuale prenotazione N contact xs:string Contatto N phone xs:string Numero di telefono N attributes tns:Attributes Parametri specifici del servizio richiesto S dal SI per N 60 ATTRIBUTES Campo Tipo Descrizione customAttributes xs:string Parametri specifici del servizio richiesto in formato XML incapsulati in un tag CDATA RISPOSTA:INSERTBOOKINGRESPONSE Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione return xs: bookingStateInfo Stato della prenotazione Campo Tipo Descrizione bookingId xs:long Identificativo della prenotazione bookingStateCode xs:string Stato della prenotazione BOOKINGSTATEINFO ESEMPIO Inserisce una prenotazione (bodyXml) <ns0:InsertBooking xmlns:ns0="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <requestId>001-2012</requestId> <buyerId>xxxxx</buyerId> <locationId>xxxxx</locationId> <serviceId>237</serviceId> <notes>TAA WEB</notes> <fruitionStartDate>2012-05-03T11:59:00</fruitionStartDate> <fruitionEndDate>2012-05-05T23:59:00</fruitionEndDate> <attributes> <customAttributes> (…) Lista di attributi definiti sul servizio </customAttributes> </attributes> </ns0:InsertBooking> Messaggio di risposta <ns2:InsertBookingResponse xmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <requestId>001-2012</requestId> <return> <bookingId>1388</bookingId> 61 <bookingStateCode>1</bookingStateCode> </return> </ns2:InsertBookingResponse> 9.3.2 UpdateBooking Aggiorna i dati di una prenotazione sulla piattaforma (contestualmente alla risposta viene inviata al fornitore del servizio la prenotazione modificata). Campo Valore messageCode AGGIORNAMENTO messageClass PRT messageSubClass PRENOTAZIONI RICHIESTA: UPDATEBOOKING Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito l’individuazione della conversazione bookingId xs:long Numero di prenotazione S buyerId xs:long Identificativo del Committente S locationId xs:long Identificativo indirizzo CRM S serviceId xs:long Identificativo servizio S notes xs:string Note N expiredDate xs:dateTime Data scadenza N fruitionStartDate xs:dateTime Data inizio fruizione S fruitionEndDate xs:dateTime Data fine fruizione S flagConfirmDate xs:boolean Flag conferma manuale prenotazione N contact xs:string Contatto N phone xs:string Numero di telefono N Caratteristiche proprie del servizio richiesto S attributes Obbl. dal SI per N RISPOSTA: UPDATEBOOKINGRESPONSE Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione return xs: bookingStateInfo Stato della prenotazione Campo Tipo Descrizione bookingd xs:long Identificativo della prenotazione bookingStateCode xs:string Stato della prenotazione BOOKINGSTATEINFO 62 ESEMPIO Aggiorna una prenotazione (bodyXml) <ns0:UpdateBooking xmlns:ns0="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <requestId>R123ap</requestId> <bookingId>1388</bookingId> <buyerId>xxxx</buyerId> <locationId>xxxxx</locationId> <serviceId>237</serviceId> <fruitionStartDate>2012-05-04T15:59:00</fruitionStartDate> <fruitionEndDate>2012-05-05T23:59:00</fruitionEndDate> <attributes> <customAttributes> (…) Lista di attributi definiti sul servizio </customAttributes> </attributes> </ns0:UpdateBooking> Messaggio di risposta <ns2:UpdateBookingResponse xmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <requestId>R123ap</requestId> <return> <bookingId>1388</bookingId> <bookingStateCode>1</bookingStateCode> </return> </ns2:UpdateBookingResponse> 9.3.3 UpdateBookingState Cambia lo stato di una richiesta di prenotazione che è stata effettuata nella piattaforma. Campo Valore messageCode CAMBIOSTATO messageClass PRT messageSubClass PRENOTAZIONI RICHIESTA: UPDATEBOOKINGSTATE Campo Tipo Descrizione Obbl. 63 requestId xs:string Identificativo richiesta attribuito l’individuazione della conversazione bookingId xs:string Identificativo della Prenotazione S stateCode xs:int Stato prenotazione S limitConfirmationDate xs:string Data limite di conferma prenotazione N notes xs:string Note di cambio stato N originalResponse tns:originalResponse Messaggio originale inviato dal sistema del fornitore N originalBookingId xs:string Identificativo originale della prenotazione N Campo Tipo Descrizione bookingId xs:long Identificativo della prenotazione dal SI per N BOOKINGSTATEINFO RISPOSTA: UPDATEBOOKINGSTATERESPONSE Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione return xs: bookingStateInfo Stato della prenotazione Campo Tipo Descrizione bookingId xs:long Identificativo della prenotazione bookingStateCode xs:string Stato della prenotazione BOOKINGSTATEINFO BOOKINGSTATECODE Campo Tipo stakeholder INSERITA 0 Committente INOLTRATA 1 Committente CANCELLATA 2 Committente SCADUTA 3 RIFIUTATA 4 Fornitore ACCETTATA 5 Fornitore CONFERMATA 6 Committente IN_LAVORAZIONE 7 Fornitore CHIUSA 8 Fornitore IN_SOLLECITO 9 RITARDO_AUTORIZZATO 10 Fornitore CHIUSURA_NON_EVASA 11 Fornitore CHIUSURA_NON_CONFERMATA 12 64 ESEMPIO Cambia lo stato di una prenotazione (bodyXml) <ns0:UpdateBookingState xmlns:ns0="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <requestId>R123ap</requestId> <bookingId>94</bookingId> <stateCode>8</stateCode> </ns0:UpdateBookingState> Messaggio di risposta <ns2:UpdateBookingStateResponsexmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <requestId>R123ap</requestId> <return> <bookingId>94</bookingId> <bookingStateCode>8</bookingStateCode> </return> </ns2:UpdateBookingStateResponse> 9.3.4 BookingState Consente di ottenere lo stato di una prenotazione. Campo Valore messageCode STATO_PRENOTAZIONE messageClass PRT messageSubClass INQUIRY RICHIESTA:BOOKINGSTATE Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito l’individuazione della conversazione bookingId xs:long Identificativo della Prenotazione Obbl. dal SI per N S RISPOSTA:BOOKINGSTATERESPONSE Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione return xs: bookingStateInfo 65 BOOKINGSTATEINFO Campo Tipo Descrizione bookingId xs:long Identificativo della prenotazione bookingStateCode xs:string Stato della prenotazione ESEMPIO Stato prenotazione (bodyXml) <ns0: BookingState xmlns:ns0="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <requestId>R123ap</requestId> <bookingId>1558149</bookingId> </ns0:BookingState> Messaggio di risposta <ns2:BookingStateResponse xmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <requestId>R123ap</requestId> <return> <bookingId>1558149</bookingId> <bookingStateCode>1</bookingStateCode> </return> </ns2:BookingStateResponse> 9.3.5 ListBookings Consente di ottenere la lista delle prenotazioni che sono state effettuate nella piattaforma. Campo Valore messageCode LISTA_PRENOTAZIONI messageClass PRT messageSubClass INQUIRY RICHIESTA: LISTBOOKINGS Campo Tipo Descrizione Obbl. requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione N sellerId xs:long Identificativo del Fornitore N buyerId xs: long Identificativo del Committente N serviceTypeId xs: long Identificativo Tipologia di Servizio N serviceId xs: long Identificativo del Servizio N bookingStateId xs: long Identificativo dello stato della prenotazione N 66 dateFrom xs:dateTime Data inizio periodo N dateTo xs:dateTime Data fine periodo.Senonspecificata ma specificata dateFrom, si assume che sia la data in cui è fatta la richiesta N Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione listBookingsResponse xs: bookingInfo [0..n] Lista delle Prenotazioni Campo Tipo Descrizione bookingId xs:long Identificativo della Prenotazione bookingStateId xs:long Identificativo dello stato della Prenotazione buyerId xs:long Identificativo del Committente serviceId xs:long Identificativo del Servizio sellerId xs: long Identificativo del Fornitore Campo Tipo Descrizione bookingId xs:long Identificativo della Prenotazione tripId xs:long Identificativo missione Campo Tipo Descrizione bookingId xs:long Identificativo della Prenotazione alertId xs:long Identificativo notifica RISPOSTA: LISTBOOKINGRESPONSE BOOKINGINFO TRIPINFO ALERTINFO ESEMPIO Elenco prenotazioni azienda (bodyXml) <ns0:ListBookings xmlns:ns0="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <requestId>R123ap</requestId> <buyerId>11058</buyerId> </ns0:ListBookings> Messaggio di risposta <ns2:ListBookingsResponse xmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <requestId>R123ap</requestId> 67 <return> <bookingId>198</bookingId> <bookingStateId>3</bookingStateId> <buyerId>xxxxx</buyerId> <serviceId>13</serviceId> <sellerId>xxxx</sellerd> </return> <return> <bookingId>199</bookingId> <bookingStateId>3</bookingStateId> <buyerId>xxxxx</buyerId> <serviceId>13</serviceId> <sellerId>xxxxx</sellerd> </return> <return> <bookingId>200</bookingId> <bookingStateId>3</bookingStateId> <buyerId>xxxxx</buyerId> <serviceId>13</serviceId> <sellerId>xxxxx</sellerd> </return> </ns2:ListBookingsResponse> 9.3.6 ListBookingsDocuments Consente di ottenere la lista dei documenti associati ad una prenotazione. Campo Valore messageCode LISTA_DOCUMENTI messageClass PRT messageSubClass INQUIRY RICHIESTA: LISTBOOKINGDOCUMENTS Campo Tipo Descrizione Obbl. requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione N bookingId xs:long Identificativo della Prenotazione S RISPOSTA:LISTBOOKINGDOCUMENTSRESPONSE Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione 68 return xs:documentInfo Dettaglio dei documenti Campo Tipo Descrizione bookingId xs:long Identificativo della Prenotazione documentName xs:string Nome del documento documentId xs:string Identificativo del documento documentUrl xs:string Link al documento DOCUMENTINFO ESEMPIO Lista documenti (bodyXml) <ns0:ListBookingDocuments xmlns:ns0="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <requestId>R123ap</requestId> <bookingId>1558149</bookingId> </ns0:ListBookingDocuments> Messaggio di risposta <ns2:ListBookingDocumentsResponse xmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <requestId>R123ap</requestId> <return> <bookingId>1558149</bookingId> <documentName> Listino_tariffe_servizio.pdf</documentName> <documentId>workspace://SpacesStore/5722535d-311a-4802-9857-9b8f6daa1468</documentId> <documentUrl>/d/a/workspace/SpacesStore/5722535d-311a-4802-98579b8f6daa1468/Il_giornalista_hacker.pdf</documentUrl> </return> </ns2:ListBookingDocumentsResponse> 9.3.7 DetailBooking Consente di ottenere i dettagli di una prenotazione che è stata effettuata nella piattaforma. Campo Valore messageCode DETTAGLIO_PRENOTAZIONE messageClass PRT messageSubClass INQUIRY RICHIESTA:DETAILBOOKING Campo Tipo Descrizione requestId xs:string Identificativo Obbl. richiesta attribuito dal SI per N 69 l’individuazione della conversazione bookingId xs:long Identificativo della Prenotazione N RISPOSTA:DETAILBOOKINGRESPONSE Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione detailBookingResponse xs: bookingDetail Dettaglio della prenotazione Campo Tipo Descrizione serviceId xs:long Identificativo del servizio srvTypesId xs:long Identificativo Tipologia di Servizio srvTypesCode xs:string Codice della tipologia di servizio stateId xs:int Stato del servizio userName xs:string Identificativo utente operationDate xs:dateTime Data di inserimento/modifica buyerId xs:long Identificativo del Committente locationId xs:long Identificativo indirizzo fornitura bookingId xs:long Identificativo della Prenotazione notes xs:string Note flagOrigine xs:string Origine inserimento/modifica (W per Web, L per Legacy, C per Schedulatore CRON) expiredDate xs:dateTime Data scadenza fruitionStartDate xs:dateTime Data inizio fruizione fruitionEndDate xs:dateTime Data fine fruizione flagConfirmDate xs:boolean Flag conferma manuale prenotazione confirmDate xs:dateTime Data conferma contact xs:string Contatto phone xs:string Numero di telefono BOOKINGDETAIL attibutes Caratteristiche proprie del servizio richiesto ESEMPIO Elenco prenotazioni (bodyXml) <ns0:DetailBooking xmlns:ns0="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <requestId>R123ap</requestId> <bookingId>1558149</bookingId> </ns0:DetailBooking> 70 Messaggio di risposta <ns2:DetailBookingResponse xmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <requestId>R123ap</requestId> <return> <serviceId>32</serviceId> <srvTypesId>8</srvTypesId> <srvTypesCode>SRVTYPES 8</srvTypesCode> <stateId>1</stateId> <userName> user</userName> <operationDate>2012-05-09T10:38:43.861+02:00</operationDate> <buyerId>xxxxxx</buyerId> <locationId>xxxxxx</locationId> <bookingId>1558149</bookingId> <flagOrigine>W</flagOrigine> <fruitionStartDate>2012-05-09T10:40:00.000+02:00</fruitionStartDate> <fruitionEndDate>2012-05-16T00:00:00.000+02:00</fruitionEndDate> <flagConfirmDate>false</flagConfirmDate> <attributes> <customAttributes> <caratteristiche> <eta>2012-04-26T00:00:00</eta> <etd>2012-04-27T00:00:00</etd> <typevehicles>Autotreni</typevehicles> <generalCargoId>1</generalCargoId> <generalCargoItems>102</generalCargoItems> <generalCargoWeight>3</generalCargoWeight> </caratteristiche> </customAttributes> </attributes> </return> </ns2:DetailBookingResponse> 9.3.8 DetailBookingDocuments Consente di ottenere i documenti allegati ad una prenotazione effettuata nella piattaforma. Campo Valore messageCode DETTAGLIO_DOCUMENTI 71 messageClass PRT messageSubClass INQUIRY RICHIESTA: DETAILBOOKINGDOCUMENTS Campo Tipo Descrizione Obbl. requestId xs:string Identificativo richiesta attribuito l’individuazione della conversazione bookingId xs:long Identificativo della Prenotazione S documentId xs:string Identificativo del Documento N dal SI per N RISPOSTA: DETAILBOOKINGDOCUMENTSRESPONSE Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione return xs:documentInfo Dettaglio dei documenti Campo Tipo Descrizione bookingId xs:long Identificativo della Prenotazione documentName xs:string Nome del documento documentId xs:string Identificativo del documento documentUrl xs:string Link al documento DOCUMENTINFO ESEMPIO Elenco prenotazioni (bodyXml) <ns0:DetailBookingDocuments xmlns:ns0="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <requestId>R123ap</requestId> <bookingId>1558149</bookingId> <documentId> workspace://SpacesStore/5722535d-311a-4802-9857-9b8f6daa1468 </documentId> </ns0:DetailBookingDocuments> Messaggio di risposta <ns2:DetailBookingDocumentsResponse xmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <requestId>R123ap</requestId> <return> <bookingId>1558149</bookingId> <documentName>Listino_tariffe_servizio.pdf</documentName> 72 <documentId> workspace://SpacesStore/5722535d-311a-4802-9857-9b8f6daa1468 </documentId> <documentUrl> /d/a/workspace/SpacesStore/5722535d-311a-4802-98579b8f6daa1468/Listino_tariffe_servizio.pdf </documentUrl> </return> </ns2:DetailBookingDocumentsResponse> Per ottenere fisicamente il documento allegato occorre usare il servizio getMessage di MDW EDI, invocato col numero messaggio della risposta precedente. ESEMPIO Ottieni documento allegato (bodyXml) <pub:getMessages> <middlewareMessageId>1079277</middlewareMessageId> <userName>user</userName> <cim>123456</cim> </pub:getMessages> Messaggio di risposta <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Header/> <env:Body> <ns2:getMessageResponse xmlns:ns2="http://ws.bll.b2b.elsagdatamat.com/"> <return> <header> <msgId>1079277</msgId> <messageCode>DETTAGLIO_DOCUMENTI</messageCode> <messageClass>PRT</messageClass> <messageSubClass>INQUIRY</messageSubClass> <priority>0</priority> <timestamp>2012-05-09T11:02:06.065+02:00</timestamp> <originalFormat>UirnetFormat</originalFormat> <callerId>7</callerId> <composer>prenotazioni</composer> <mailboxSender>SERVER_PRENOTAZIONE</mailboxSender> <receivers> 73 <receiverId>10966</receiverId> <mailboxName>PRENOTAZIONI</mailboxName> <formatName>UirnetFormat</formatName> </receivers> <subject>RESPONSE</subject> </header> <body> <bodyXml><![CDATA[<?xml version="1.0" encoding="UTF-8"?> <ns2:DetailBookingDocumentsResponse xmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <requestId>R123ap</requestId> <return> <bookingId>1558149</bookingId> <documentName> Listino_tariffe_servizio.pdf</documentName> <documentId>workspace://SpacesStore/5722535d311a-4802-9857-9b8f6daa1468</documentId> <documentUrl>/d/a/workspace/SpacesStore/5722535d-311a4802-9857-9b8f6daa1468/ Listino_tariffe_servizio.pdf</documentUrl> </return> </ns2:DetailBookingDocumentsResponse>]]> </bodyXml> <attachments> <fileName> Listino_tariffe_servizio.pdf</fileName> <fileBody>JVBERi0xLjYNJeLjz9MNCjI0NCAQo (…) Gjgj7SttsHGYts56ww</fileBody> </attachments> </body> <mifId>1079277</mifId> <wrongMsgInFolder>0</wrongMsgInFolder> <ancestorMsgInFolder>1079276</ancestorMsgInFolder> <globalAncestorMsgInFolder>1079276</globalAncestorMsgInFolder> <replyOfMsgInFolder>0</replyOfMsgInFolder> <inserted>2012-05-09T11:02:06.075+02:00</inserted> <firstAccess>2012-05-09T11:24:26.944+02:00</firstAccess> <error>false</error> <ruleNotApplied>2012-05-09T11:02:07.943+02:00</ruleNotApplied> 74 <read>2012-05-09T11:24:26.944+02:00</read> </return> </ns2:getMessageResponse> </env:Body> </env:Envelope> Il campo fileBody contiene il documento richiesto in formato Base64, una stringa ASCII che dovrà essere decodificata dal legacy per ottenere il documento originale. 9.3.9 BookingNotify Messaggio di notifica cambio stato di una prenotazione inviato dal Sistema di Gestione delle Prenotazioni. Campo Tipo Descrizione issueDateTime xs:dateTime DataOra di invio bookingId xs:long Identificativo della Prenotazione booking Notes xs:string Note della prenotazione booking State xs:int Stato della prenotazione bookingStateDescr xs:string Descrizione stato sellerId xs:long Fornitore sellerDescr xs:string Ragione sociale del fornitore buyerId xs:long Identificativo committente (id CRM dell’azienda) buyerDescr xs:string Ragione sociale del committente limitConfirmationDate xs:dateTime Data limite per la conferma della prenotazione 9.3.10 BookingForward Messaggio di inoltro di una prenotazione inviato dal Sistema di Gestione delle Prenotazioni. Campo Tipo Descrizione bookingId xs:long Identificativo della Prenotazione bookingState xs:int Stato della prenotazione bookingStateDescr xs:string Descrizione stato operation xs:string Tipo operazione: insert o update o delete serviceId xs:long Identificativo servizio serviceCode xs:string Codice servizio srvTypesId xs:long Identificativo tipologia servizio srvTypesCode xs:string Codice tipologia servizio srvTypesName xs:string Nome tipologia servizio sellerId xs:long Fornitore sellerDescr xs:string Ragione sociale del fornitore buyerdId xs:long Identificativo committente (id CRM dell’azienda) buyerDescr xs:string Ragione sociale del committente 75 note xs:string Note originalResponse xs:string Eventuale risposta strutturata dal legacy fruitionStartDate xs:dateTime Data di inizio fruizione della prenotazione fruitionEndDate xs:dateTime Data di fine fruizione della prenotazione flagConfirmDate xs:boolean Se prenotazione sottoposta a conferma da partedel committente confirmDate xs:dateTime Data limite per la conferma della prenotazione contact xs:string Contatto phone xs:string Telefono detail xs:Detail Dettaglio della prenotazione 9.3.11 BookingReminder Messaggio di sollecito generato alla scadenza di una caratteristica della prenotazione inviato dal Sistema di Gestione delle Prenotazioni. Campo Tipo Descrizione issueDateTime xs:dateTime DataOra di invio bookingId xs:long Identificativo della Prenotazione bookingNotes xs:string Note della prenotazione bookingState xs:int Stato della prenotazione bookingStateDescr xs:string Descrizione stato sellerId xs:string Fornitore sellerDescr xs:string Ragione sociale del fornitore buyerId xs:long Identificativo committente (id CRM dell’azienda) buyerDescr xs:string Ragione sociale del committente reminderName xs:string Nome della caratteristica scaduta reminderDate xs:dateTime Valore della data scaduta reminderNote xs:string Testo del messaggio 9.4 Gestione delle Eccezioni Il Sistema di Gestione delle Prenotazioni restituisce, in caso di errore nell’elaborazione di una richiesta, un messaggio specifico caratterizzato da messageClass, messageSubclass e messageCode identici al messaggio che ha generato l’errore e subject pari a ERROR, inserendo nel bodyXML un messaggio di tipo EXCEPTIONRESPONSE descrittivo dell’errore generato. Il Sistema di Gestione verifica sia la conformità del messaggio alle specifiche di piattaforma, che la congruità delle informazioni inserite nello stesso. 9.4.1 ExceptionResponse Messaggio di errore generato dal Sistema di Gestione delle Prenotazioni. Campo Tipo Descrizione requestId xs:string Identificativo richiesta attribuito dal SI per l’individuazione della conversazione 76 exceptionCode xs:string Codice di errore exceptionMessage xs:string Messaggio di errore Response <ns2:ExceptionResponse xmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <requestId>req01</requestId> <exceptionCode>WS-PRT-E099</exceptionCode> <exceptionMessage> In content of element <container>: The content model does not allow element <shipVoyageId> to appear here. No further elements are allowed at this position </exceptionMessage> </ns2:ExceptionResponse> 77 9.5 Casi d’Uso 78 79 9.6 Messaggi Specifici dei Servizi in Catalogo Il presente paragrafo riporta i messaggi specifici per ciascun servizio con la spiegazione del significato dei campi. 9.6.1 Preavviso di Arrivo APGe Il Preavviso di Arrivo APGe consente di inviare una richiesta di Truck Arrival Announcement (TAA) al Porto di Genova per la verifica della fattibilità operativa e documentale della missione. FORNITORE: APGE COMMITTENTE: AUTOTRASPORTO Il servizio consente di indicare i dati del veicolo e del conducente, il terminal e le attività di carico e scarico da effettuare e restituisce, mediante l’interrogazione del sistema ePort, la fattibilità e, nel caso di risposta negativa, le motivazioni di rifiuto in un campo note. La presentazione di un Preavviso di Arrivo dà luogo alle attività derivate nella Piattaforma descritte nel Catalogo dei Servizi. I messaggi inerenti il preavviso di arrivo che possono essere inviati alla piattaforma UIRNet riguardano le seguenti operatività, contraddistinte dai parametri: PARAMETRI DEL SERVIZIO Ambiente Test Produzione Campo Valore sellerId 10996 serviceId 337 sellerId 10996 serviceId 63 Il servizio Preavviso di Arrivo APGe prevede i parametri specifici da introdurre nel campo customAttributes del messaggio INSERTBOOKING. Il Sistema di Gestione delle Prenotazioni, ricevuto il Preavviso di Arrivo, invia al SI un messaggio BOOKINGNOTIFY (cfr. § 9.3.9) per l’acknowledgment della richiesta e la notifica della sua trasmissione al sistema ePort. In seguito alla risposta da parte di quest’ultimo, il Sistema di Gestione delle Prenotazioni invia al SI un messaggio BOOKINGFORWARD (cfr. § 9.3.9) con allegata la risposta del sistema ePort nel campo originalResponse. 80 9.6.1.1 Messaggi inviati alla piattaforma UIRNet I messaggi inerenti il preavviso di arrivo che possono essere inviati alla piattaforma UIRNet riguardano le seguenti operatività, contraddistinte dai parametri: Inserimento del preavviso di arrivo Campo Valore messageCode INSERIMENTO messageClass PRT messageSubClass PRENOTAZIONI Modifica del preavviso di arrivo Campo Valore messageCode AGGIORNAMENTO messageClass PRT messageSubClass PRENOTAZIONI Cancellazione del preavviso di arrivo Campo Valore messageCode PRENOTAZIONI messageClass PRT messageSubClass CAMBIOSTATO La sezione header del Travelling Message è la seguente (nell’esempio messageCode, messageClass e messageSubClass sono riferiti all’inserimento di un preavviso di arrivo): TRAVELLINGMESSAGE:HEADER Campo Valore Descrizione messageCode INSERIMENTO Codice messaggio messageClass PRT Classe messaggio messageSubClass PRENOTAZIONI Sottoclasse messaggio timestamp xxxx Data-ora invio (aaaa-mm-ggThh:mm:ss.x+x:xx) originalFormat UirnetFormat Formato messaggio callerId xxxx Identificativo chiamante (CRM id azienda) composer xxxxx Utente compositore del messaggio (CRM user id dell’utente censito) mailboxSender PRENOTAZIONI Centro messaggi di riferimento. Non modificare receivers msgReceiverWithFormat Destinatario Subject xxxx Soggetto messaggio userName xxxx Utente compositore del messaggio (username) 81 Cim xxxx Pin CRM corrispondente a username (per autenticazione WS) TIPO DATI COMPOSTO MSGRECEIVERFORMAT Campo Tipo Descrizione receiverId 7 Identificativo ricevente –SISTEMA PRENOTAZIONI (non modificare) mailboxName SERVER_PRENOTAZIONE Nome Centro Servizi- Non modificare formatName UirnetFormat Formato desiderato- Non modificare Il campo bodyXml contiene i dati relativi all’operazione che si vuole effettuare sul preavviso di arrivo e deve sempre rispettare lo schema di riferimento dell’operazione stessa, come descritta nel file seguente: PRT_message_schema_TAA_Rev.c.xsd 9.6.1.1.1 Messaggio di inserimento Il campo bodyXml contiene i dati relativi all’inserimento di un preavviso di arrivo. Lo schema di riferimento, descritto nel file PRT_message_schema_TAA_Rev.c.xsd è InsertBooking; nella Figura 1 è riportata la schematizzazione dei dati che lo compongono. 82 Figura 1 - InsertBooking Al primo livello si trovano tutti campi-dato semplici eccetto attributes, che è una struttura articolata in vari livelli, come mostrato nella Figura 2, contenente gli attributi della prenotazione Figura 2 – attributes 83 Di seguito la descrizione dei campi che compongono la struttura InsertBooking: INSERTBOOKING Elemento Tipo Descrizione Obbligatorio requestId string Identificativo richiesta (a cura del richiedente) N buyerId long Identificativo committente (id azienda CRM) S serviceId long Identificativo servizio S notes string Note N expiredDate dateTime Data scadenza N fruitionStartDate dateTime Data inizio fruizione S fruitionEndDate dateTime Data fine fruizione S contact string Contatto N phone string Numero di telefono N attributes Attributes Attributi della prenotazione S Elemento Tipo Descrizione Obbligatorio customAttributes customAttributes TIPO DATI COMPOSTO ATTRIBUTES S Nel caso di un messaggio di tipo preavviso di arrivo l’elemento customAttributes è così composto: TIPO DATI COMPOSTO CUSTOMATTRIBUTES Elemento Tipo Descrizione Obbligatorio headerData headerData Dati dI Intestazione S truckData truckData Dati Viaggio Camion S driverData driverData Dati Conducente S pickupFull pickupFullContainerList Carico Pieno S pickupEmpty pickupEmptyContainerList Carico vuoto S releaseFullEmpty releaseFullEmptyContainerList Scarico Pieno/Vuoto S Descriviamo il dettaglio di ogni singola struttura contenuta in customAttributes. 84 Figura 3 – headerData TIPO DATI COMPOSTO HEADERDATA: Elemento Tipo Descrizione Obbligatorio issueDateTime dateTime DataOra di presentazione doc. S sender string Ragione Sociale azienda di trasporti S senderPIVA string P.IVA Ditta di trasporti S telepass string Telepass N Figura 4 – truckData 85 TIPO DATI COMPOSTO TRUCKDATA: Elemento Tipo Descrizione Obbligatorio carrier string Ditta di trasporto S carrierPIVA string Partita IVA ditta di trasporto S voyageId string Identificativo viaggio (a cura del richiedente) S arrivalDate date Data arrivo al Terminal S Fascia oraria di arrivo (AM=0-12, PM=12-18, EV=18-00) S arrivalPeriod truckLicencePlate string Targa del mezzo S trailerLicencePlate string Targa del rimorchio N Figura 5 – driverData TIPO DATI COMPOSTO DRIVERDATA: Elemento Tipo Descrizione Obbligatorio firstName string Nome S lastName string Cognome S drivingLicence string N. Patente di guida S language string Codice ISO Lingua N email string Indirizzo e-mail N cellPhoneNumber string Cellulare N portPermissionNumber string N. Permesso accesso al porto S 86 Figura 6 – pickupFullContainer TIPO DATI COMPOSTO PICKUPFULLCONTAINERLIST: Elemento Tipo Descrizione Obbligatorio pickupFullContainer pickupFullContainer Lista Container carico pieno S TIPO DATI COMPOSTO PICKUPFULLCONTAINER: Elemento Tipo Descrizione Obbligatorio containerId string Matricola container S terminal string Terminal S terminalPIVA string P.IVA Terminal S customsBroker string Spedizioniere doganale N customsBrokerPIVA string P.IVA Spedizioniere doganale N 87 Figura 7 – pickupEmptyContainer TIPO DATI COMPOSTO PICKUPEMPTYCONTAINERLIST: Elemento Tipo Descrizione Obbligatorio pickupEmptyContainer pickupEmptyContainer Lista Container carico vuoto S TIPO DATI COMPOSTO PICKUPEMPTYCONTAINER: Elemento Tipo Descrizione Obbligatorio bookingNumber string Numero booking N shipAgent string Agente Marittimo S shipAgentPIVA string P.IVA Agente Marittimo S terminal string Terminal S terminalPIVA string P.IVA Terminal S isoCode string Codice ISO container S containerId string Matricola container N customsBroker string Spedizionere doganale N customsBrokerPIVA string P.IVA Spedizionere doganale N 88 Figura 8 – releaseFullEmptyContainer TIPO DATI COMPOSTO RELEASEFULLEMPTYCONTAINERLIST: Elemento Tipo Descrizione Obbligatorio releaseFullEmptyContainer releaseFullEmptyContainer Lista Container scarico pieno/vuoto S TIPO DATI COMPOSTO RELEASEFULLEMPTYCONTAINER: Elemento Tipo Descrizione Obbligatorio containerId string Matricola container S isoCode string Codice ISO container N bookingNumber string Numero booking S shipAgent string Agente Marittimo S shipAgentPIVA string P.IVA Agente Marittimo S terminal string Terminal S terminalPIVA string P.IVA Terminal S customsBroker string Spedizionere doganale N 89 customsBrokerPIVA string P.IVA Spedizionere doganale N temperature number temperatura media container N portOfDestination string Porto di Arrivo N portOfDestinationCode string Codice Porto di Arrivo N weight number Peso N Da notare che lo schema prevede l’obbligatorietà degli elementi pickupFullContainerList, pickupEmptyContainerList e releaseFullEmptyContainerList anche se essi non contengono dati. Un esempio è riportato in Figura 9. 90 <ns0:InsertBooking xmlns:ns0="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"> <requestId>REQ01</requestId> <buyerId>67676</buyerId> <serviceId>316</serviceId> <notes>Taa ePort 1pe+1r</notes> <expiredDate>2012-12-31T23:59:47-05:00</expiredDate> <fruitionStartDate>2012-10-27T21:00:00.000+02:00</fruitionStartDate> <fruitionEndDate>2012-10-31T20:00:00.000+02:00</fruitionEndDate> <attributes> <customAttributes> <headerData> <issueDateTime>2012-10-26T17:00:00</issueDateTime> <sender>Autotrasporto Ginone S.p.A.</sender> <senderPIVA>99575389216</senderPIVA> </headerData> <truckData> <carrier> Autotrasporto Ginone S.p.A.</carrier> <carrierPIVA>99575389216</carrierPIVA> <voyageId>V2012/07</voyageId> <arrivalDate>2012-10-28</arrivalDate> <arrivalPeriod>AM</arrivalPeriod> <truckLicencePlate>DA147GM</truckLicencePlate> </truckData> <driverData> <firstName>Omen</firstName> <lastName>Nomen</lastName> <drivingLicence>MI1234567890</drivingLicence> <portPermissionNumber>1234465678</portPermissionNumber> </driverData> <pickupFull> <pickupFullContainerList> </pickupFullContainerList> </pickupFull> <pickupEmpty> <pickupEmptyContainerList> <pickupEmptyContainer rowNumber="1"> <bookingNumber>710</bookingNumber> <shipAgent>CHINA SHIPPING SR</shipAgent> <shipAgentPIVA>03783550100</shipAgentPIVA> <terminal>VTE - Voltri Terminal Europa</terminal> <terminalPIVA>02782020107</terminalPIVA> <isoCode>00A0</isoCode> <containerId>INTU9100335</containerId> </pickupEmptyContainer> </pickupEmptyContainerList> </pickupEmpty> <releaseFullEmpty> <releaseFullEmptyContainerList> <releaseFullEmptyContainer rowNumber="1"> <containerId>INTU9100336</containerId> <isoCode>2200</isoCode> <bookingNumber>2GOAWU0600-0001</bookingNumber> <shipAgent>HAMBURG SUD</shipAgent> <shipAgentPIVA>01849470990</shipAgentPIVA> <terminal>VTE - Voltri Terminal Europa</terminal> <terminalPIVA>03211930106</terminalPIVA> </releaseFullEmptyContainer> </releaseFullEmptyContainerList> </releaseFullEmpty> </customAttributes> </attributes> </ns0:InsertBooking> Figura 9 - BodyXml di inserimento di un Preavviso di arrivo TAA ePort 91 9.6.1.1.2 Messaggio di modifica Il campo bodyXml contiene i dati relativi alla modifica di un preavviso di arrivo. Lo schema di riferimento, descritto nel file PRT_message_schema_TAA_Rev.c.xsd è UpdateBooking. Per la descrizione dei campi che compongono il bodyXml si faccia riferimento al paragrafo precedente, inserimento di un Preavviso di Arrivo. 9.6.1.1.3 Messaggio di cancellazione Il campo bodyXml contiene i dati relativi alla cancellazione di un preavviso di arrivo. Lo schema di riferimento, descritto nel file SchemaMessagePRT.xsd, è UpdateBookingState. Di seguito la descrizione dei campi per la cancellazione di un preavviso di arrivo: UPDATEBOOKINGSTATE Elemento Tipo Descrizione Obbligatorio requestId string Identificativo richiesta (a cura del richiedente) N bookingId long Identificativo della Prenotazione S stateCode int Stato in cui portare la prenotazione (per cancellazione = 2) S Notes string Note N Ecco un esempio di valorizzazione del campo bodyXml nel caso di cancellazione di un preavviso di arrivo : <ns0:UpdateBookingState xmlns="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="com.elsagdatamat.uirnet.prenotazioni.messageclass"> <requestId>R102011</requestId> <bookingId>100</bookingId> <stateCode>2</stateCode> <notes></notes> </ns0:UpdateBookingState> Figura 10 - BodyXml cancellazione di un Preavviso di arrivo TAA ePort 92 9.6.1.2 Messaggi ricevuti dalla piattaforma UIRNet I messaggi che sono inviati dalla piattaforma ad un committente sono le risposte alle azioni fatte su un preavviso di arrivo, e sono: 1. Risposte a seguito delle seguenti azioni fatte dal committente: a. Inserimento di un preavviso di arrivo; b. Modifica di un preavviso di arrivo; c. Cancellazione di un preavviso di arrivo; 2. Preavviso di arrivo (messaggio BookingForward) inviato a seguito delle seguenti azioni effettuate dal fornitore del servizio: a. Rifiuto di un preavviso di arrivo; b. Accettazione di un preavviso di arrivo; c. Aggiornamento di un preavviso di arrivo per specifica della fattibilità del preavviso stesso. Il campo bodyXml contiene i dati relativi alla risposta alle azioni fatte su un Preavviso di Arrivo e sono specificati nella schema contenuto nei seguenti file: PRT_message_schema_TAA_Rev.c.xsd, SchemaMessagePRT.xsd: schema risposte a seguito di azioni descritte al punto 1; BookingForward-TAA-Eport_Rev.c.xsd: schema preavviso di arrivo a seguito di azioni descritte al punto 2; BookingForward-TAA-Eport_Rev.c.xsd 9.6.1.2.1 Risposta all’inserimento di un preavviso di arrivo Il campo bodyXml contiene i dati relativi alla risposta inviata dalla piattaforma ad un committente in seguito all’inserimento di un preavviso di arrivo. Lo schema di riferimento, descritto nel file PRT_message_schema_TAA_Rev.c.xsd è InsertBookingResponse. Di seguito la descrizione dei campi: INSERTBOOKINGRESPONSE Elemento Tipo Descrizione requestId string Identificativo richiesta (a cura del richiedente) Return bookingInfo Note BOOKINGINFO Elemento Tipo Descrizione bookingId long Identificativo della Prenotazione bookingStateCode string Codice stato della prenotazione Note 93 In Figura 11 l’esempio di valorizzazione del campo bodyXml per questo messaggio: <ns2:InsertBookingResponse xmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <requestId>R-05-2011</requestId> <return> <bookingId>100</bookingId> <bookingStateCode>1</bookingStateCode> </return> </ns2:InsertBookingResponse> Figura 11 - BodyXml risposta all’inserimento di un Preavviso di arrivo TAA ePort Il SI, nel messaggio di inserimento di una prenotazione (InsertBooking), può specificare un identificativo che è proprio di quel messaggio (requestId) e che permette di ricollegare il messaggio inviato alla piattaforma con la relativa risposta ricevuta dalla stessa (InsertBookingResponse). Nel messaggio di risposta è contenuto il numero della prenotazione assegnato dalla piattaforma (bookingId) e il SI può quindi legare il messaggio di inserimento con il numero della prenotazione creata. In ogni caso, per la piattaforma, l’unico riferimento con la prenotazione è il numero della stessa (bookingId) e non il numero della richiesta (requestId) la cui gestione rimane esclusivamente a carico del SI. 9.6.1.2.2 Risposta alla modifica di un preavviso di arrivo Il campo bodyXml contiene i dati relativi alla risposta inviata dalla piattaforma ad un committente in seguito alla modifica di un preavviso di arrivo. Lo schema di riferimento, descritto nel file PRT_message_schema_TAA_Rev.c.xsd è UpdateBookingResponse. Ecco un esempio di valorizzazione del campo bodyXml in questo caso: <ns2:UpdateBookingResponse xmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass" xmlns:ns3="com.elsagdatamat.uirnet.prenotazioni.gconfErrori"> <requestId>R-06-2011</requestId> <return> <bookingId>100</bookingId> <bookingStateCode>1</bookingStateCode> </return> </ns2:UpdateBookingResponse> Figura 12 - BodyXml risposta alla modifica di un Preavviso di arrivo TAA ePort 9.6.1.2.3 Risposta in caso di accettazione di un preavviso di arrivo Il campo bodyXml contiene i dati relativi alla risposta inviata dalla piattaforma ad un committente in seguito all’accettazione o all’aggiornamento con la fattibilità container di un preavviso di arrivo da parte del 94 fornitore del servizio. Lo schema di riferimento, descritto nel file BookingForward-TAA-Eport_Rev.c.xsd è BookingForward. Di seguito la descrizione dei campi: BOOKINGFORWARD Elemento Tipo Descrizione bookingId long Identificativo della Prenotazione bookingState int Stato della prenotazione bookingStateDescr string Descrizione dello stato della prenotazione operation string Tipo operazione serviceId long Identificativo servizio serviceCode string Codice del servizio srvTypesId long Identificativo Tipologia di Servizio srvTypesCode string Codice tipologia servizio srvTypesName string Nome tipologia servizio sellerId long Identificativo Fornitore (id CRM dell’azienda) sellerDescr string Ragione sociale del fornitore buyerId long Identificativo committente (id CRM dell’azienda) buyerDescr string Ragione sociale del committente note string Note originalResponse string Eventuale risposta strutturata dal legacy del fornitore Note Valori a seconda dell’operazione effettuata: insert, update, delete Nel caso di ePort contiene il messaggio handleTruckArrivalAnnouncementRes ponse, nel caso di accettazione/rifiuto del Preavviso di arrivo; TruckVoyageFeasibilityStatus, nel caso di aggiornamento della fattibilità container. fruitionStartDate dateTime Data di inizio fruizione della prenotazione fruitionEndDate dateTime Data di fine fruizione della prenotazione confirmDate dateTime Data limite per la conferma della prenotazione contact string Contatto phone string Telefono detail detail Dettagli prenotazione 95 TIPO DATI COMPOSTO DETAIL Elemento Tipo Descrizione detail customAttributes Dettagli prenotazione Note TIPO DATI COMPOSTO CUSTOMATTRIBUTES Elemento Tipo Descrizione headerData headerData Dati dI Intestazione truckData truckData Dati Viaggio Camion driverData driverData Dati Conducente pickupFull pickupFullContainerList Carico Pieno pickupEmpty pickupEmptyContainerList Carico vuoto releaseFullEmpty releaseFullEmptyContainerList Scarico Pieno/Vuoto Note Le strutture sottostanti customAttributes sono identiche a quelle descritte nel relativo paragrafo al quale si rimanda per ulteriori dettagli. Nella Figura 13 viene riportato un esempio di messaggio BookingForward di un preavviso di arrivo inviato al committente a seguito accettazione TAA ePort. 96 <ns2:BookingForward xmlns:ns2="com.elsagdatamat.uirnet.prenotazioni.messageclass"> <bookingId>2000948</bookingId> <bookingState>4</bookingState> <bookingStateDescr>Rifiutata</bookingStateDescr> <operation>update</operation> <serviceId>63</serviceId> <serviceCode>TAA 2</serviceCode> <srvTypesId>29</srvTypesId> <srvTypesCode>SRVTYPES 29</srvTypesCode> <srvTypesName>Preavviso di arrivo e-Port - nuova versione</srvTypesName> <sellerId>10996</sellerId> <sellerDescr>APGE - Autorita' Portuale Genova</sellerDescr> <buyerId>11015</buyerId> <buyerDescr>Autotrasporto Ginone S.p.A.</buyerDescr> <note>Il messaggio UIR_PRT_2000948 ha dei pre-requisiti mancanti: DO o ODS..</note> <originalResponse> ……………… </originalResponse> <fruitionStartDate>2012-11-21T14:50:57.000+01:00</fruitionStartDate> <fruitionEndDate>2012-11-22T14:50:57.000+01:00</fruitionEndDate> <flagConfirmDate>false</flagConfirmDate> <detail> <customAttributes> <headerData> <issueDateTime>2012-11-20T14:51:02</issueDateTime> <sender>Autotrasporto Ginone S.p.A.</sender> <senderPIVA>99575389216</senderPIVA> </headerData> <truckData> <carrier>Autotrasporto Ginone S.p.A.</carrier> <carrierPIVA>99575389216</carrierPIVA> <voyageId>6522624</voyageId> <arrivalDate>2012-11-20</arrivalDate> <arrivalPeriod>PM</arrivalPeriod> <truckLicencePlate>ZA684ZL</truckLicencePlate> </truckData> <driverData> <firstName>Omen</firstName> <lastName>Nomen</lastName> <drivingLicence>XD234FFAB</drivingLicence> <language>EN</language> <portPermissionNumber>8162</portPermissionNumber> </driverData> <pickupFull> <pickupFullContainerList> <pickupFullContainer rowNumber="1"> <containerId>UACU5459561</containerId> <terminal>VTE - Voltri Terminal Europa</terminal> <terminalPIVA>03211930106</terminalPIVA> </pickupFullContainer> </pickupFullContainerList> </pickupFull> <pickupEmpty /> <releaseFullEmpty /> </customAttributes> </detail> </ns2:BookingForward> 97 Figura 13 – BookingForward di un TAA ePort Esempi di originalResponse sono riportati nella Figura 14: Lo schema del messaggio handleTruckArrivalAnnouncementResponse originalResponse è descritto nel file seguente: contenuto nel campo EportWsResponse.xsd Di seguito vengono elencati i valori ammessi per il campo answerCode e la loro transcodifca, che rappresenta la risposta del sistema E-port: Accettazione del preavviso <originalResponse> <handleTruckArrivalAnnouncementResponse> <handleTruckArrivalAnnouncementReturn> <mappedBusinessClass>com.set.eport2.ddm.documents.messages.logicalkey.Aperak</mappedBusinessClass> <alarmErrorWS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> <answerCode>0</answerCode> <messageId>UIR_PRT_2000989</messageId> <messageType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> <note xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> <response>OK</response> </handleTruckArrivalAnnouncementReturn> </handleTruckArrivalAnnouncementResponse> </originalResponse> Rifiuto del preavviso <originalResponse> <handleTruckArrivalAnnouncementResponse> <handleTruckArrivalAnnouncementReturn> <alarmErrorWS /> <answerCode>27</answerCode> <mappedBusinessClass>com.set.eport2.ddm.documents.messages.logicalkey.Aperak</mappedBusinessClass> <messageId>UIR_PRT_2000948</messageId> <messageType>TruckArrivalAnnouncement</messageType> <note>Il messaggio UIR_PRT_2000948 ha dei pre-requisiti mancanti: DO o ODS.</note> <response>KO</response> </handleTruckArrivalAnnouncementReturn> </handleTruckArrivalAnnouncementResponse> </originalResponse> Figura 14 – originalResponse da ePort: accettazione, rifiuto I codici di risposta provenienti da ePort, contenuti nell tag answerCode di originalResponse, sono: answerCode 0 Descrizione Ok 98 1 Autotrasportatore non riconosciuto per la partita IVA fornita: " + doc.getSenderPIVA()); 2 Agente Marittimo non riconosciuto per la partita IVA fornita 3 Customs Broker non riconosciuto per la partita IVA fornita 4 Terminal non riconosciuto per la partita IVA fornita 5 MessageId gia' inserito nel DataBase 6 Inserimento con ParentMessageId 7 Modifica o annullamento senza riferimento a un ParentMessageId 10 Inserimento non possibile: il contenitore indicato ha gia' un Preavviso di Arrivo associato 20 I contenitori inseriti non possono stare in un unico viaggio camion. 21 I contenitori inseriti nel messaggio non contengono il booking number." 22 I contenitori inseriti nel messaggio indicano terminal incongruenti. 23 Il messaggio non indica nessun container. 24 Il messaggio non indica una o piu' matricole. 25 Il messaggio non indica uno o piu' isoCode. 26 Il messaggio contiene uno shipvoyage con terminal code non definita. 27 Il messaggio ha dei prerequisiti mancanti (mancanza di DeliveryOrder o Ordine di Scarico) 99 Errore inatteso 9.6.1.2.4 Risposta in caso di aggiornamento di un preavviso di arrivo con la fattibilità Il campo bodyXml contiene i dati relativi alla risposta inviata dalla piattaforma ad un committente in seguito all’aggiornamento, con la fattibilità container, di un preavviso di arrivo da parte del fornitore del servizio. Lo schema di riferimento, descritto nel file BookingForward-TAA-Eport_Rev.c.xsd è BookingForward. La figura seguente mostra originalResponse, proveniente da ePort, recante l’aggiornamento della fattibilità ed inviato al committente all’interno di un BookingForward, come già descritto al paragrafo precedente. Fattibilità del preavviso <originalResponse> <TruckVoyageFeasibilityStatus> <truckArrivalAnnouncement> …………………….. </truckArrivalAnnouncement> <alarmErrorList> <AlarmError> <code>0</code> <componentType>AlarmError</componentType> </AlarmError> </alarmErrorList> <date>2012-11-16T18:43:54</date> <componentType>TruckVoyageFeasibilityStatus</componentType> </TruckVoyageFeasibilityStatus> </originalResponse> Figura 15 – originalResponse da ePort: fattibilità 99 Per quanto riguarda i campi ed i dettagli del messaggio di fattibilità proveniente da ePort, si rimanda alla struttura contenuta nel file TruckVoyageFesibilityStatus.xsd TruckVoyageFeasibilityStatus.xsd I codice fattibilità comunicati nel campo feasibilityCode sono riassunti nella tabella: feasibilityCode Descrizione 0 Viaggio Fattibile per il Contenitore XXXX -1 Impossibile calcolare la fattibilita' del viaggio per il Contenitore XXXX -3 Condizione di terminazione anomalia (ricezione LoadingReport e mancata ricezione di GateIn) -4 Ricevuto GateOut contenitore XXXX -5 Ricevuto GateIn per il contenitore XXXX 14 Viaggio non fattibile per il contenitore XXXX per mancanza del Buono di Consegna. 15 Viaggio non fattibile per il contenitore XXXX per prenotazione non esistente. 16 Viaggio non fattibile per il contenitore XXXX per mancanza di Ordine di Scarico. 17 Viaggio non fattibile per il contenitore XXXX per mancanza di Autorizzazione Merci Pericolose. 18 Viaggio non fattibile per il contenitore XXXX per mancanza Ordine di Scarico. 19 Viaggio non fattibile per il contenitore XXXX per Buono di Consegna Scaduto. 20 Viaggio non fattibile per il contenitore XXXX per blocco imposto dalla dogana. 21 Viaggio non fattibile per il contenitore XXXX per riscontro imposto dalla dogana. 22 Viaggio non fattibile per il contenitore XXXX per blocco imposto dalla guardia di finanza. 23 Viaggio non fattibile per il contenitore XXXX per blocco imposto dall'ufficio controllo antifrode. 24 Viaggio non fattibile per il contenitore XXXX per mancata quadratura peso bolletta associata. 25 Viaggio non fattibile per il contenitore XXXX per relativa bolla non svincolata. Figura 16– BodyXml:Booking Forward inviata al SENDER per accettazione da parte di Eport di un Preavviso di arrivo 100 9.7 Servizi di Prenotazione Ambiente URL Test https://test.uirnet.it/UIRNetServices/BookingServices?wsdl Produzione https://www.uirnet.it/UIRNetServices/BookingServices?wsdl Tutti i webservice qui esposti restituiscono, nell’eventualità di errore durante la validazione utente/cim una struttura errore del tipo: Campo Tipo Descrizione faultCode xs:string Codice errore = env:Server faultString xs:string Motivo errore 9.7.1 GetBookingDetail Restituisce i dettagli della prenotazione RICHIESTA: GETBOOKINGDETAIL Campo Tipo Descrizione Obbligatori userName xs:string Utente (CRM user) S Cim xs:string Pin CRM per ws sicuro S bookingId xs: long Identificativo prentoazione S RISPOSTA: Campo Tipo Descrizione getBookingDetailResponse xs: getbookingDetailResponse Dettagli prenotazione GETBOOKINGDETAILRESPONSE Campo Tipo Descrizione serviceId xs:long Identificativo del servizio srvTypesId xs:long Identificativo Tipologia di Servizio srvTypesCode xs:string Codice della tipologia di servizio stateId xs:int Stato del servizio userName xs:string Identificativo utente 101 operationDate xs:dateTime Data di inserimento/modifica buyerId xs:long Identificativo del Committente locationId xs:long Identificativo indirizzo fornitura bookingId xs:long Identificativo della Prenotazione notes xs:string Note flagOrigine xs:string Origine inserimento/modifica (W per Web, L per Legacy, C per Schedulatore CRON) expiredDate xs:dateTime Data scadenza fruitionStartDate xs:dateTime Data inizio fruizione fruitionEndDate xs:dateTime Data fine fruizione flagConfirmDate xs:boolean Flag conferma manuale prenotazione confirmDate xs:dateTime Data conferma contact xs:string Contatto phone xs:string Numero di telefono attributes xs: List <customAttributes> Caratteristiche proprie del servizio richiesto Campo Tipo Descrizione errorCode xs:string Codice errore message xs:string Messaggio di errore WSEXCEPTION VALORI DI RITORNO ErrorCode Message WS-PRT-E099 Invalid request: user seller <userName> is not unauthorized to view bookings of other buyer WS-PRT-E089 Nessun valore trovato 9.7.2 ListPOIBookings Restituisce una lista di prenotazioni presenti sui POI oggetto della ricerca RICHIESTA: LISTPOIBOOKINGS Campo Tipo Descrizione Obbligatori userName xs:string Utente (CRM user) S Cim xs:string Pin CRM per ws sicuro S sellerId xs: long Codice fornitore servizio N buyerId xs: long Codice committente N serviceTypeId xs: long Tipo servizio N 102 serviceId xs: long Identificativo del servizio N missionId xs: long Identificativo missione N poiId xs: long Identificativo POI N dateFrom xs: anySimpleType Da data N dateTo xs: anySimpleType A data N RISPOSTA: Campo Tipo Descrizione listPOIBookingsResponse xs: listPOIBookingsResponse Elenco indirizzi POI LISTPOIBOOKINGSRESPONSE Campo Tipo Descrizione bookingId xs:long Identificativo della Prenotazione bookingStateId xs:long Identificativo stato della Prenotazione buyerId xs:long Identificativo del Committente poiId xs:long Identificativo POI sellerId xs:long Identificativo fornitore serviceCode xs:string Codice del servizio serviceId xs:long Identificativo del servizio VALORI DI RITORNO ErrorCode Message WS-PRT-E099 Invalid request: wrong parameters WS-PRT-E099 Invalid request: user seller <userName> is not unauthorized to view bookings of other seller WS-PRT-E099 Invalid request: user buyer <userName> is not unauthorized to view bookings of other buyer WS-PRT-E099 request: Mission <missionId> not found for company <idAzienda> WS-PRT-E089 Nessun valore trovato 9.7.3 ListPOIServices Restituisce POI sui quali sono presenti dei servizi prenotabili. RICHIESTA: LISTPOISERVICES Campo Tipo Descrizione Obbligatori userName xs:string Utente (CRM user) S Cim xs:string Pin CRM per ws sicuro S sellerId xs: long Codice fornitore servizio S 103 sellerPIVA xs:string Partita IVA fornitore N serviceTypeId xs:long Codice servizio offerto dai POI N poiList xs: List <poiList> Lista POI su cui effettuare la ricerca N geoRef xs: List <geoRef> Lista POI entro una determinata distanza N RISPOSTA: LISTPOISERVICESRESPONSE Campo Tipo Descrizione listPOIServicesResponse xs: listPOIServicesResponse Elenco indirizzi POI Campo Tipo Descrizione poiId xs:long Identificativo POI Campo Tipo Descrizione latPoint xs:double Latitudine POI lonPoint xs:double Longitudine POI maxDistance xs:long Distanza massima dal POI POILIST GEOREF VALORI DI RITORNO ErrorCode Message WS-PRT-E099 Invalid request: wrong parameters WS-PRT-E099 Invalid request: user seller <userName> is not unauthorized to view bookings of other seller WS-PRT-E099 Invalid request: sellerPIVA <sellerPIVA> unknown WS-PRT-E099 Invalid request: sellerPIVA <sellerPIVA> is not of the seller WS-PRT-E099 Invalid request: sellerId <sellerId> unknown WS-PRT-E099 Unable to connect to the server CRM WS-PRT-E099 Unable to connect to the server GEO WS-PRT-E089 Nessun valore trovato 10 Documentale Ambiente URL Test https://test.uirnet.it/UIRNetServices/DocServices?wsdl 104 Produzione https://www.uirnet.it/UIRNetServices/DocServices?wsdl Tutti i webservice qui esposti restituiscono, nell’eventualità di errore durante la validazione utente/cim una struttura errore del tipo: Campo Tipo Descrizione faultCode xs:string Codice errore = env:Server faultString xs:string Motivo errore 10.1 getDocsByMissionPOI Restituisce i documenti associati alle missioni afferenti al POI RICHIESTA: GETDOCSBYMISSIONPOI Obbligatori Campo Tipo Descrizione userName xs:string Utente (CRM user) Cim xs:string Pin CRM per ws sicuro password xs: string Password utente portale missionId xs:string Identificativo missione poicode xs:string Codice POI RISPOSTA: DOCSBYMISSIONPOIRESPONSE Campo Tipo Descrizione getDocsByMissionPOIResponse xs:getDocsByMissionPOIResponse Lista documenti associati al POI Campo Tipo Descrizione return xs:return Struttura “risultato” Campo Tipo Descrizione item xs:chiaveValoreVO Struttura chiave/valore Campo Tipo Descrizione message xs:string Codice errore GETDOCSBYMISSIONPOIRESPONSE RETURN WSEXCEPTION VALORI DI RITORNO 105 Message [DOC-0020]argomenti obbligatori mancanti: idMissione [DOC-1590]missione inesistente 106