Skip to the content.

🏠 Home

⬅️ Back


External Services (Italian only)

Tutti i servizi esterni sono disponibili tramite container docker. I docker file si trovano all’interno delle rispettive cartelle. Le informazioni su come buildare le singole immagini sono specificate nei README-md dei singoli servizi. Ai fini del progetto sono stati istanziati due container per i restaurant e due per i delivery.

Le porte utilizzate da ACMEat sono specificate nel file Services.java. Le informazioni su come buildare le immagini sono disponibili nel file buld.sh.

E’ possibile trovare ulteriori dettagli sui servizi seguendo i link ai sorgenti specificati nei relativi sources.

Bank (sources)

Il servizio è stato implementato in Jolie utilizzando il protocollo SOAP. Inoltre è presente un’iterfaccia web realizzata in Java che espone la sola getToken.

Sono state implementate le operazioni di:

Per rendere il servizio piĂą semplice possibile non sono state aggiunte le normali operazioni di login/logout.

Il servizio dopo dopo la chiamata alla getToken genera un token (sid) che viene utilizzato per le sucessive chiamate come parametro.

Utilizzando la funzione random messa a disposizione dal linguaggio viene deciso se il pagamento dell’utente è andato a buon fine o meno (utilizzando come nome utente debug è la risposta sarà sempre positiva).

A questo punto viene salvato il nome dell’utente associato al risultato dell’operazione.

Dunque è possibile chiamare la verifyToken o la refound passando come parametro il sid.

Per implementare la sessione sono stati usati i correlation set nativi di Jolie.

GIS (sources)

Il servizio gis è stato realizzato come servizio REST in Node.js ed opera con indirizzi reali utilizzando le API di Graphhopper.

Il servizio prevede due parametri GET, l’indirizzo di partenza e quello di arrivo, e restituisce una risposta così formata con un HTTP status code 200:

{
    "message": "Distance: From: Milano, To: Bologna",
    "distance": 214972
}

Nel caso ci fossero dei problemi con gli indirizzi, viene resituito un HTTP status code 400 con body vuoto.

Restaurant (sources)

Il servizio è stato implemetato utilizzato Python e il framework Flask.

Espone le seguenti operazioni:

Al momento della chiamata alla GetAvailability, il servizio crea la risorsa ordine associandovi un id e uno stato. In modo casuale il servizio decide se può far fronte all’ordine. In caso positivo ritornerà una response con status AVAILABLE altrimenti lo status sarà NOT_AVAILABLE. Se il body della richiesta dovesse essere malformato o se dovessero mancare parametri verrà restituito un 400 Bad Request.

Con la SendOrder è possibile rendere l’odine effettivo. Alla chiamata il servizio controlla se lo stato dell’odine con l’id specificato è AVAILABLE . In caso affermativo lo setta ad ACCEPTED, altrimenti ritorna la risorsa con lo stato attuale (NOT_ACCEPTED).

Con l’AbortOrder viene modificato lo stato della risorsa con l’id specificato ad ABORTED.

Delivery (sources)

Il servizio è stato implementato utilizzando Java8 con la libreria javax.rs e il server Grizzly.

Espone le seguenti operazioni:

Le logiche sono identiche a quelle esposte per il servizio restaurant


➡️ Next