Università degli Studi di Firenze Facoltà di Scienze Matematiche Fisiche e Naturali Tesi di Laurea in Informatica

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Università degli Studi di Firenze Facoltà di Scienze Matematiche Fisiche e Naturali Tesi di Laurea in Informatica"

Transcript

1 Università degli Studi di Firenze Facoltà di Scienze Matematiche Fisiche e Naturali Tesi di Laurea in Informatica Progetto ed implementazione di uno strumento per il supporto allo sviluppo di applicazioni WS-BPEL Relatore: Prof. Rosario Pugliese Candidato: Luca Cesari Correlatori: Alessandro Lapadula Francesco Tiezzi Anno Accademico 2007/2008

2

3 A tutti quelli che mi vogliono bene.

4

5 Sommario Questa tesi illustra il progetto e la relativa implementazione di uno strumento che semplifica la scrittura e l esecuzione di applicazioni WS-BPEL. Le motivazioni del lavoro descritto in questa tesi nascono dalle difficoltà intrinseche nello sviluppo e nell esecuzione di applicazioni WS-BPEL, uno standard OASIS per lo sviluppo e l orchestrazione di servizi web. Infatti, soprattuto per i neofiti del linguaggio, la progettazione di applicazioni risulta difficile perché WS-BPEL, essendo il risultato di un compromesso tra varie proposte precedenti, supporta vari stili di programmazione fornendo molti costrutti alternativi ma con funzionalità simili. Inoltre, la sintassi di WS-BPEL si basa su XML. Ciò, se da un lato favorisce (almeno in linea di principio) la portabilità delle applicazioni, dall altro complica la scrittura dei programmi a causa della verbosità del linguaggio. Infine, la messa in esecuzione di programmi WS-BPEL è anche complicata dalla fase di deploy che richiede l associazione al programma di alcuni dati importanti per l esecuzione. Il nostro obiettivo è quindi stato quello di fornire uno strumento di supporto per la scrittura e l esecuzione di applicazioni WS-BPEL. A tale scopo abbiamo usato Blite, un linguaggio per la definizione e l orchestrazione di servizi, dotato di una semantica operazionale formale, che mette a disposizione del programmatore un insieme ridotto di costrutti, senza sostanzialmente diminuire il potenziale descrittivo di WS-BPEL. Lo strumento da noi sviluppato, che abbiamo chiamato BliteC, permette la generazione di codice WS-BPEL eseguibile a partire da un programma Blite. Sostanzialmente, BliteC è un compilatore di Blite in WS-BPEL che si fa carico della complessità di scrittura derivante dall uso di XML e delle problematiche relative al deploy del codice WS-BPEL generato.

6

7 Ringraziamenti Desidero innanzitutto ringraziare mio padre Marco, mia madre Marina, mia sorella Elisa, i nonni, la zia Patrizia e la mia ragazza Silvia per aver avuto fiducia nelle mie capacità e per avermi sostenuto nei momenti difficili, aiutandomi così a raggiungere questo importante traguardo. Uno speciale ringraziamento va a Geri Tollkuçi, grande amico e compagno di studi che, preparando la tesi in questo periodo ha vissuto e condiviso con me i momenti di gioia e di panico che caratterizzano questa fase. Ringrazio sentitamente il Prof. Rosario Pugliese e i suoi assistenti Alessandro Lapadula e Francesco Tiezzi per la disponibilità e l aiuto nella realizzazione di questo lavoro. Infine, ringrazio i miei compagni Daniele, Emanuela, Federico, Karen, Mirko, Massimiliano e Olta che con me hanno studiato e trascorso questi anni di università. Potrei aver dimenticato di ringraziare qualcuno che, comunque, ha contato molto per me in questi anni. Mi scuso della possibile dimenticanza e confido nella sua comprensione.

8

9 Indice 1 Introduzione 1 2 Nozioni Preliminari I Servizi web e le tecnologie collegate XML Schema WSDL SOAP WS-BPEL: uno standard per l orchestrazione di servizi web Processo WS-BPEL Variable Properties Schema Partner Link Type Schema Blite: una variante snella di WS-BPEL Sintassi Semantica Operazionale Descrizione generale di BliteC Implementazione Funzionamento i

10 ii INDICE 3.3 Utilizzo Esecuzione della compilazione con BliteC Deploy del processo su ActiveVOS Invocazione del servizio Generazione dei Parser Uso di JavaCC Mapper Descrizione del File di Configurazione Funzionamento del Mapper Parser Blite Analisi del documento e generazione dell albero Controllo dell albero Generazione del Codice Generatore WS-BPEL Basic Activity Structured Activity Start Activity Service Activity Generatore WSDL Deploy del processo WS-BPEL Casi di Studio Comunicazione Asincrona Server Asincrono Client Asincrono Comunicazione con un servizio non Blite

11 INDICE iii 6.3 Shipping Service Back-end Service Shipping Service Shipping Client Conclusioni 131

12 iv INDICE

13 Capitolo 1 Introduzione Negli ultimi anni, l aumento dell utenza di Internet ha evidenziato sempre più il successo del World Wide Web, che progressivamente si è popolato di risorse e funzionalità software di vario tipo. L aumento di queste risorse e la definizione di nuove tecnologie come e-business, e-learning e modelli simili ha evidenziato sempre più l importanza di una tecnologia che permetta l utilizzo automatico oltre all utilizzo da parte di utenti umani. Tale esigenza ha spinto il World Wide Web ad evolversi in un Architettura Orientata ai Servizi. Un Architettura Orientata ai Servizi (o SOA, dal nome inglese Service Oriented Architecture) è un architettura distribuita composta da uno o più nodi che mettono a disposizione servizi fruibili attraverso lo scambio di messaggi. Un servizio è assimilabile ad un entità autonoma, che può essere pubblicata, scoperta e assemblata con altre, per costruire applicazioni complesse. Da un punto di vista fisico il servizio permette di disaccoppiare l implementazione della risorsa dalla modalità di interazione con essa, permettendo così all utente di utilizzarla senza preoccuparsi di tutti gli altri dettagli inerenti all implementazione. In una architettura SOA, i servizi possono giocare tre differenti ruoli: il provider, il richiedente e il registro. I provider offrono funzionalità e pubblicano descrizioni di 1

14 2 1. Introduzione servizi su registri per abilitare la scoperta automatica e permetterne l invocazione da parte dei richiedenti. Ad oggi, sebbene esistano varie interpretazioni di SOA, quella maggiormente utilizzata descrive i servizi attraverso servizi web. Un servizio web è un sistema software progettato per garantire interoperabilità tra nodi diversi di una stessa rete. I servizi web sono descritti attraverso WSDL (Web Service Description Language [1]), un linguaggio di descrizione dei servizi web basato su XML (extensible Markup Language [2]). Il documento WSDL associato ad un servizio permette di specificare le funzionalità offerte senza entrare nei dettagli relativi all implementazione e allo stesso tempo permette all utilizzatore di capire come contattare il servizio. I nodi di un architettura SOA basata su servizi web inviano messaggi formattati in XML attraverso il protocollo SOAP (ma usano anche altri protocolli quali JAX- RPC [3], XML-RPC [4], REST [5]), che sono trasportati sulla rete attraverso protocolli come HTTP [6], SMTP [7], FTP [8] o XMPP [9]. Possono inoltre essere utilizzati particolari protocolli per garantire caratteristiche specializzate quali: UDDI [10] per l elencazione dei servizi, WS-Security [11] per l autenticazione e WS-Reliability [12] per la definizione di messaggi affidabili (ad esempio quelli necessari a transazioni monetarie sul web). Con il diffondersi dell architettura SOA composta da servizi web, si è delineata la necessità di comporre e gestire servizi in modo più articolato, erogandone di nuovi senza modificare quelli esistenti. Da questa necessità sono nate le specifiche WS-CDL (Web Service Choreography Description Language [13]) e WS-BPEL (Web Service Business Process Execution Language [14]) che regolano due diversi aspetti dello stesso problema. La prima definisce come garantire l interoperabilità necessaria a realizzare un sistema composto da vari servizi, ovvero definisce le regole con le quali i vari servizi si dovranno comportare per formare il sistema; la seconda invece genera

15 1. Introduzione 3 un nuovo servizio che si comporrà di servizi preesistenti. Nel dettaglio, un programma scritto in WS-BPEL è detto processo, ed è eseguito su appositi engine WS-BPEL che mettono a disposizione i costrutti necessari all esecuzione del programma. L engine è un elemento fondamentale per l esecuzione di codice WS-BPEL, perché fornisce al programmatore un implementazione delle complesse funzionalità dei costrutti WS-BPEL, che altrimenti non troverebbero corrispondenza immediata in un normale linguaggio di programmazione. Esistono molti engine che permettono l esecuzione di un processo WS-BPEL, tra i più noti troviamo ActiveVOS [15] di Active Endpoints, Apache ODE [16] del progetto Apache, ORACLE Bpel Process Manager [17] di Oracle, WebSphere [18] di IBM. Per eseguire correttamente un processo, oltre al documento che ne descrive il comportamento, un engine necessita di informazioni che permettano ai dati astratti presenti nella definizione del processo di legarsi a quelli corrispondenti alla definizione fisica dei servizi utilizzati, permettendo così all engine di eseguire le operazioni richieste. Questa fase di configurazione dell engine è chiamata deploy. Per essere eseguito da un engine un processo WS-BPEL deve contenere almeno un operazione di ricezione, la quale viene utilizzata per impostare i valori iniziali che ne caratterizzeranno l esecuzione. Infatti, a seguito dell esecuzione dell operazione, una istanza del processo è creata. Questa rappresenta il controllo di flusso esercitato dal processo applicato ad un insieme di variabili inizializzate. Ovviamente un engine permette di eseguire simultaneamente più istanze di uno stesso processo, in modo da servire più richieste contemporaneamente. La presenza di più istanze dello stesso processo comporta però alcune complicazioni nello smistamento dei messaggi, infatti il motore deve riuscire a consegnare ogni messaggio ricevuto all istanza corretta. Per risolvere il problema lo standard

16 4 1. Introduzione permette di definire delle variabili di correlazione, che dovranno fungere da chiave per distinguere ogni istanza di uno stesso processo. Queste variabili sono scelte dall utente e non in automatico dall engine; quindi in fase di progettazione deve essere fatta una scelta oculata. Infatti una scelta sbagliata vanificherà la funzione delle variabili di correlazione nella politica di smistamento, provocando ovviamente problemi di consegna alle varie istanze. La definizione dello standard WS-BPEL in linguaggio naturale, cioè senza una specifica formale della semantica, e la mancanza di una convenzione per la fase di deploy, ha portato allo sviluppo di engine che, a volte, interpretano la stessa specifica in modo diverso ed utilizzano documenti differenti per la fase di deploy. Tutto ciò si traduce nell impossibilità di eseguire un processo WS-BPEL su un qualunque engine essendo sicuri di avere lo stesso comportamento. Inoltre, i documenti generati per l esecuzione su di un engine, non mantengono la portabilità su di un altro, vanificando in parte l uso di XML. Tali inconvenienti sono stati ampiamente e dettagliatamente descritti nei documenti [19] e [20]. La grande quantità di costrutti messi a disposizione dallo standard WS-BPEL permette all utilizzatore di definire un servizio in modi diversi in base al contesto in cui dovrà lavorare. Questa capacità però rende difficile il lavoro al programmatore perché, oltre a dover scrivere il codice utilizzando una sintassi XML, deve avere una discreta conoscenza dello standard per creare un servizio in modo corretto. In alternativa possono essere utilizzate delle interfacce grafiche che permettono la semplificazione della progettazione in WS-BPEL, come ad esempio Active Designer [21] di Active Endpoints o Intalio Designer [22] di Intalio. Questi strumenti permettono di definire facilmente processi molto semplici (con poche operazioni), ma quando la complessità dei processi aumenta ben presto la definizione grafica diventa di difficile gestione e comprensione.

17 1. Introduzione 5 Lo scopo di questa tesi consiste nel fornire una soluzione ai problemi che rendono difficile la progettazione e lo sviluppo di applicazioni WS-BPEL. La soluzione proposta è un strumento software, BliteC, che accetta in ingresso un servizio scritto in Blite [19], un linguaggio in stile imperativo semplice e intuitivo, e restituisce in uscita la traduzione in WS-BPEL utilizzando solo un sottoinsieme dei costrutti dello standard, per facilitarne la comprensione. Questa soluzione non perde il potere descrittivo iniziale, infatti la maggior parte dei costrutti WS-BPEL omessi possono comunque essere codificati in Blite. Utilizzando BliteC è possibile progettare e scrivere un nuovo servizio concentrandosi solo sul problema da risolvere piuttosto che sulla scelta dei dettagli. La definizione testuale proposta da BliteC permette di mantenere semplice la comprensione dei processi che svolgono funzionalità complesse, risolvendo così il problema riscontrato nell utilizzo di interfacce grafiche. BliteC, inoltre, automatizza il processo di deploy sugli engine WS-BPEL. Infatti, oltre a generare il documento WS-BPEL e il WSDL associato al servizio passato in ingresso, BliteC genera anche i documenti necessari al deploy. Infine, tutti i documenti generati sono inseriti in un pacchetto organizzato in maniera appropriata secondo le specifiche di ActiveVOS. La scelta di questo engine è dovuta alla fedele interpretazione delle specifiche dello standard WS-BPEL, come riportato dalle analisi svolte in [19] e [20]. Il meccanismo di deploy usato da BliteC risolve i problemi precedentemente elencati e facilita il lavoro dell utente, che si dovrà semplicemente occupare della scrittura del codice Blite e di fornire alcuni dati di configurazione. BliteC è sviluppato in modo tale da permettere il deploy su vari engine, fornendo così una soluzione alla mancanza di standard per i documenti caratterizzanti questa fase; ciò permette a BliteC di essere più versatile rispetto ad altri strumenti di supporto grazie alla capacità di adattamento ai vari engine.

18 6 1. Introduzione Il resto della tesi è organizzato come segue. Nel Capitolo 2 sono introdotti i principali standard necessari alla definizione dei servizi web, una breve descrizione dei costrutti WS-BPEL utilizzati da BliteC e una descrizione del linguaggio Blite. Nel Capitolo 3 è presentata una breve introduzione all architettura di BliteC, mentre nei Capitoli 4 e 5 sono dettagliate le implementazioni dei parser e la generazione del codice. Nel Capitolo 6 sono proposti alcuni esempi significativi per meglio evidenziare il funzionamento di BliteC. Il Capitolo 7 riporta alcune osservazioni conclusive.

19 Capitolo 2 Nozioni Preliminari In questo capitolo verranno introdotte le tecnologie utilizzate da BliteC per effettuare la traduzione da Blite a WS-BPEL, per poi fornire al lettore una breve introduzione su WS-BPEL e sulla sua variante leggera Blite. 2.1 I Servizi web e le tecnologie collegate I servizi web utilizzano per la loro definizione alcuni standard basati su XML. XML [2] è un metalinguaggio di markup, ovvero un linguaggio marcatore che definisce un meccanismo sintattico tale da consentire il controllo o l estensione del significato di altri linguaggi di markup. In particolare, XML è un linguaggio di markup di tipo descrittivo perché si concentra sulla sintassi dei linguaggi descritti, prescindendo dal significato che i costrutti avranno in lettura. Ciò permette agli standard scritti in XML fruibilità su qualunque tipo di piattaforma facilitando quindi l interoperabilità. In questa tesi lavoreremo e genereremo servizi web utilizzando i seguenti standard basati su XML: XML Schema, 7

20 8 2. Nozioni Preliminari WSDL, SOAP XML Schema XML Schema è un linguaggio che descrive il contenuto di un documento XML. I documenti prodotti con questo linguaggio saranno indicati nella trattazione come schema. XML Schema permette la definizione di tipi di dato che possono essere usati per stabilire la conformità di un qualsiasi documento XML rispetto a un dato schema. Ovviamente, anche uno schema prima di essere usato per la validazione di altri documenti, deve risultare ben formato rispetto ai tipi base del linguaggio XML Schema. Questa operazione non differisce dalla validazione degli altri documenti XML, perché anche lo standard XML Schema è definito attraverso uno schema. L operazione di validazione non è automatica ma deve essere effettuata attraverso l ausilio di appositi strumenti software che, avendo in ingresso uno schema, riescono a controllare altri documenti XML verificandone la conformità rispetto al documento passato in ingresso. Un esempio di validatore di schema si trova sul sito del W3C [23], mentre un esempio di programma che effettua validazione di documenti XML rispetto a schema è l Eclipse XSD Editor [24]. In dettaglio XML Schema definisce: gli elementi che possono apparire in un documento; gli attributi che possono apparire negli elementi ; quali elementi possono comparire come figli di altri elementi; l ordine di apparizione degli elementi; il numero di elementi che possono comparire;

21 2. Nozioni Preliminari 9 quando un elemento può essere vuoto o può contenere del testo; i tipi di dati per elementi ed attributi; valori di default e valori fissati per elementi ed attributi. Prima di procedere, riportiamo un esempio che ci aiuterà a comprendere il funzionamento di XML Schema. Il seguente documento XML fornisce un insieme di campi necessari all identificazione di una persona. <? xml version ="1.0" encoding =" UTF -8"?> <persona > <nome > Paolo </ nome > <cognome > Rossi </ cognome > < codicefiscale > PLARSS73A01D612D </ codicefiscale > <nascita >01/01/1973 </ nascita > < statocivile > Celibe </ statocivile > </ persona > Una possibile descrizione XML Schema del documento precedente potrebbe essere: <? xml version ="1.0" encoding =" UTF -8"?> <xs: schema xmlns =" http :// www. example. org " xmlns :so =" http :// www. example. org " xmlns :xs =" http :// /2001/ XMLSchema " targetnamespace =" http :// www. example. org "> < xs: simpletype name =" codicefiscaletype " > <xs: restriction base =" xs: string "> <xs: pattern value ="[a-za -Z ]{6}\ d\d[a-za -Z]\d\d[a-zA -Z]\d \d\d[a-za -Z]"/ > </xs: restriction > </xs: simpletype > <xs: complextype name =" personatype "> <xs: sequence > <xs: element name =" nome " type =" xs: string "/ > <xs: element name =" cognome " type =" xs: string "/ > <xs: element name =" codicefiscale " type =" so: codicefiscaletype "/ > <xs: element name =" nascita " type =" xs: date "/ > <xs: element name =" statocivile " type =" xs: string "/ > </xs: sequence > </xs: complextype > <xs: element name =" persona " type =" so: personatype "/ > </xs:schema > Analizziamo adesso la definizione XML Schema in dettaglio.

22 10 2. Nozioni Preliminari Il tag <?xml version=1.0 encoding=utf-8?> presente nell intestazione indica al lettore che sta leggendo un documento XML nella versione 1.0. Di seguito c è il tag radice dell XML Schema, che indica l inizio della dichiarazione. Il tag <schema> può essere corredato di alcuni attributi per personalizzare il linguaggio risultante. Gli attributi più comuni sono presenti anche nell esempio: xmlns= : imposta il namespace a cui far riferimento nel caso gli elementi non siano affiancati da un prefisso; xmlns:xs= imposta il prefisso da utilizzare nel caso si voglia far riferimento ad elementi presenti nella definizione XML Schema; targetnamespace= definisce il namespace cui apparterranno gli elementi definiti nel documento. I tag <simpletype> e <complextype> definiscono nuovi tipi da utilizzare nella definizione degli elementi. <simpletype> definisce un tipo semplice che può contenere solo testo; <complextype> invece definisce un tipo complesso che può contenere altri elementi e/o attributi. Il tag <element> permette di definire elementi di tipo semplice o complesso da utilizzare nel documento. La differenza tra i due tipi di elemento è contraddistinta dall attributo type che imposta il tipo di dato descritto nell elemento. Nel nostro caso abbiamo definito un nuovo tipo codicefiscaletype che utilizza il tipo primitivo string e lo raffina attraverso una espressione regolare. Il tipo personatype, invece, definisce un tipo complesso formato da una sequenza ordinata di elementi necessari all identificazione di un individuo. Infine è stato definito l elemento <persona> che fungerà da elemento radice in un documento XML scritto utilizzando il linguaggio.

23 2. Nozioni Preliminari WSDL Lo standard WSDL [1] descrive come e dove contattare i servizi messi a disposizione da un host. Un documento WSDL si compone, solitamente, dai seguenti tag: <types>: la sezione contraddistinta da questo tag è opzionale e si usa per integrare la definizione di tipo dei dati, scritti in XML Schema, da utilizzare nel documento WSDL; <message>: definisce il tipo di messaggio usato dal servizio web per comunicare con un client; <porttype>: definisce il tipo di porta di comunicazione, elencando le operazioni pubblicate e i messaggi da utilizzare con ciascuna di esse; <binding>: definisce le modalità con cui contattare una porta di comunicazione; <service>: indica l indirizzo per contattare il servizio. Il seguente esempio di documento WSDL descrive un servizio che mette a disposizione dei client un operazione o req. <? xml version ="1.0" encoding =" UTF -8"? > <wsdl : definitions xmlns : wsdl =" http :// schemas. xmlsoap. org / wsdl /" xmlns : tns =" http :// example / OneWayServer. wsdl " xmlns :xs =" http :// /2001/ XMLSchema " xmlns : soap =" http :// schemas. xmlsoap. org / wsdl / soap /" targetnamespace =" http :// example / OneWayServer. wsdl "> <wsdl : types > < xsd : schema targetnamespace =" http :// example / OneWayServer. wsdl "> <xsd : element name =" x_idel " type =" xsd : integer " /> </ xsd : schema > </ wsdl : types > <wsdl : message name =" req "> <wsdl : part name =" id" element =" tns : x_idel " /> </ wsdl : message > <wsdl : porttype name =" OW_serverPT "> <wsdl : operation name =" o_req "> <wsdl : input message =" tns : req " />

24 12 2. Nozioni Preliminari </ wsdl : operation > </ wsdl : porttype > <wsdl : binding name =" OW_serverBinding " type =" tns : OW_serverPT "> <soap : binding style =" document " transport =" http :// schemas. xmlsoap. org / soap / http " /> <wsdl : operation name =" o_req "> < soap : operation soapaction =" http :// example / OneWayServer. wsdl / o_req " style =" document " /> <wsdl : input > <soap : body use =" literal " /> </ wsdl : input > </ wsdl : operation > </ wsdl : binding > <wsdl : service name =" OW_serverService "> <wsdl : port name =" OW_serverPort " binding =" tns : OW_serverBinding "> <soap : address location =" http :// localhost :8080/ active - bpel / services / OW_ serverservice " / > </ wsdl :port > </ wsdl : service > </ wsdl : definitions > Il tag di apertura del documento WSDL è <definition>, nel quale possono essere dichiarati tutti i namespace necessari alla definizione delle sezioni successive. Nella sezione <types> è definito l elemento utile alla descrizione del messaggio necessario all operazione o req. <message> contiene un tag <part> che definisce il tipo della parte di messaggio id; ovviamente all interno di un messaggio possono comparire più <part> che contraddistinguono varie parti del messaggio. Come per <part>, anche <message> può occorrere più volte all interno dello stesso documento, definendo ovviamente messaggi diversi. Ogni <porttype> è contraddistinto da una serie di operazioni <operation> che supportano vari tipi di comunicazione: One-Way: la comunicazione si ottiene inviando un messaggio al servizio che non restituirà nessuna risposta;

25 2. Nozioni Preliminari 13 Request-Response: la comunicazione si compone di un messaggio inviato dal client e uno inviato dal servizio; Solicit-Response: la comunicazione si compone di un messaggio inviato dal servizio e una risposta correlata inviata dal client; Notification: il servizio invia una notifica ad un client. Il tipo di comunicazione non è indicato esplicitamente, ma è definito dalla presenza dei tag <input> e <output>. Il tag <input> indica i messaggi in ricezione e il tag <output> quelli di risposta; i precedenti tag hanno come argomento il tipo di messaggio atteso. Nel nostro esempio essendo l operazione o req di tipo one-way, comparirà solo il tag <input> che impone un messaggio di tipo req in ingresso al servizio. Il tag <binding> specifica le informazioni sul protocollo da utilizzare per contattare il servizio per un <porttype> definito in precedenza. In generale, come anche nell esempio, il protocollo di comunicazione è SOAP. Per impostarne l utilizzo sono aggiunti alcuni tag definiti nel namespace di SOAP. Il primo tag utilizzato è <soap:binding>, che definisce il tipo di comunicazione (style="document") ed il protocollo di trasporto (transport=" Di seguito sono definite tutte le operazioni da rendere raggiungibili. Dunque, per ogni operazione, saranno aggiunti due tag <operation>: uno con namespace WSDL e l altro con namespace SOAP. Il primo indica il nome dell operazione e il secondo definisce la modalità con cui contattare il servizio. Ad ogni <operation> saranno aggiunti dei tag <input> e/o <output> contenenti un tag <soap:body> per indicare come saranno strutturate le parti del messaggio all interno del corpo del messaggio SOAP.

26 14 2. Nozioni Preliminari L ultima sezione dell esempio è contraddistinta dal tag <service>. Questo tag prende in argomento un binding e aggiunge informazioni sulla locazione del servizio. Ovviamente, utilizzando il protocollo SOAP, l indirizzo HTTP a cui reperire il servizio è posto all interno del tag <soap:address>. Infine, oltre ai costrutti definiti nel linguaggio, WSDL permette di utilizzare elementi definiti in altri documenti per estendere il linguaggio. Questa capacità permette di aggiungere informazioni ad un documento WSDL in modo pratico e veloce, senza dover modificare la definizione del linguaggio. Come vedremo in seguito questa capacità si rivelerà molto utile per aggiungere informazioni necessarie al funzionamento di un processo WS-BPEL. Per ulteriori delucidazioni riguardo WSDL invitiamo il lettore a visionare la specifica W3C [1] SOAP Il protocollo SOAP (Simple Object Access Protocol [25]) gestisce lo scambio di informazioni strutturate per la comunicazione con i servizi web. L utilizzo di questo protocollo permette la comunicazione tra applicazioni sviluppate con linguaggi diversi e residenti su architetture, sia hardware che software, eterogenee. Le principali sezioni che compongono un documento SOAP sono: <Envelope>: definisce che il documento a seguire è un messaggio SOAP e permette la dichiarazione dei namespace utili alle dichiarazioni successive; <Header>: è una sezione opzionale che permette al client di inviare informazioni aggiuntive al servizio web; <Body>: contiene i dati inviati dal client al servizio web;

27 2. Nozioni Preliminari 15 <Fault>: è una sezione opzionale, dichiarabile all interno del tag precedente, che fornisce informazioni riguardanti gli errori rilevati nei messaggi. Riportiamo ora un piccolo esempio che fornisce un messaggio SOAP per comunicare con il servizio utilizzato nelle precedenti sezioni. < soapenv : Envelope xmlns : soapenv =" http :// schemas. xmlsoap. org / soap / envelope /" xmlns : onew =" http :// example / OneWayServer. wsdl "> < soapenv : Header /> < soapenv :Body > <onew : x_idel >42 </ onew : x_idel > </ soapenv :Body > </ soapenv : Envelope > Nel tag <envelope> sono definiti i namespace utili nel documento, mentre all interno del tag <body> sono definiti quelli necessari all interpretazione dei messaggi. Questo approccio permette al servizio web di interpretare i messaggi senza bisogno di dati aggiuntivi oltre al messaggio SOAP. Una volta costruito il messaggio non dovremo far altro che inviarlo all indirizzo contenuto nel tag <soap:address> presente nella sezione <service> del documento WSDL associato al servizio web. Per avere ulteriori dettagli su questo protocollo, si rimanda alla lettura della specifica ufficiale [25]. 2.2 WS-BPEL: uno standard per l orchestrazione di servizi web WS-BPEL (Web Service Business Process Execution Language [14]) è un linguaggio basato su XML che permette di costruire processi di business utilizzando in modo trasparente servizi messi a disposizione da vari attori. Il linguaggio WS-BPEL fornisce costrutti che permettono l esecuzione di attività in modo concorrente o

28 16 2. Nozioni Preliminari sequenziale, la manipolazione di dati, la gestione del flusso, compreso il trattamento di casi particolari dell esecuzione attraverso eccezioni e compensazioni. Un programma WS-BPEL è chiamato processo ed è una collezione di attività messe a disposizione dal linguaggio. Ogni processo per comunicare con servizi esterni utilizza dei partner link, che sono un astrazione di dati utili a contattare un servizio. I partner link non possono essere dichiarati all interno del processo, ma devono essere forniti attraverso l utilizzo di Partner Link Type Schema come estensione al linguaggio WSDL. Solitamente troveremo i partner link all interno del documento WSDL che accompagna il servizio da contattare. Un esempio per chiarire meglio la funzione dei partner link è il seguente, se consideriamo: un servizio web equivale nel mondo reale ad una descrizione di come contattare un ristorante ed ordinare del cibo, allora un partner link può essere visto come un foglio contenente il numero di un ristorante al quale l utente può telefonare senza preoccuparsi dei dettagli della comunicazione. Dunque un partner link risulta una semplificazione del metodo di comunicazione con un servizio utile all esigenza di astrazione di un processo WS-BPEL. Per eseguire un processo dobbiamo utilizzare appositi engine. L engine è un interprete che trasforma i costrutti astratti del linguaggio WS-BPEL in operazioni eseguibili da un elaboratore. Vista l astrazione di un processo WS-BPEL l engine ha bisogno di una serie di documenti che gli permettano di configurare tutti i dettagli relativi alle interazioni con il mondo esterno, come ad esempio i partner link. La fase nella quale l engine effettua la combinazione delle informazioni tra i documenti di configurazione e il processo, è chiamata fase di deploy. Quando si è effettuato il deploy di un processo su di un engine, questo può passare alla fase dinamica, ovvero è possibile creare un istanza del processo. Un istanza può essere creata solo attraverso un operazione di ricezione iniziale, che

29 2. Nozioni Preliminari 17 imposterà i valori di inizializzazione delle variabili del processo. Ovviamente, la scelta dell istanziazione solo attraverso operazioni di ricezione è dovuta al contesto di lavoro del processo. Infatti il processo è visto dall esterno come un servizio web, quindi, l unica motivazione per l istanziazione del processo è la richiesta da un partner esterno. Su di un engine, uno stesso processo può avere più istanze attive per poter servire tutte le richieste ricevute dall esterno. Avere più istanze però introduce un problema per lo smistamento dei messaggi; infatti l engine dovrà instradare ogni messaggio all istanza giusta del processo. A questo problema si possono trovare varie soluzioni, ma la più semplice ed elegante è la dichiarazione di parti del messaggio che permettano di distingure un istanza da un altra in relazione al valore contenuto. Questo sistema fornisce un metodo di correlazione sia per i messaggi entranti sia per quelli uscenti. Come per i partner link non è possibile dichiarare quali saranno le parti del messaggio che specificano la correlazione all interno della specifica del processo. La correlazione sui messaggi può essere descritta utilizzando l estensione Variable Properties Schema del linguaggio WSDL, che fornisce dei costrutti per definire la parte di correlazione di un messaggio. Nel resto di questa sezione introdurremo la struttura di un documento WS-BPEL Processo WS-BPEL Un processo WS-BPEL è definito in un documento contenente le seguenti sezioni:. <process> contiene tutte le seguenti sezioni e la descrizione del comportamento normale del processo; <partnerlink> definisce i partner con cui il processo di business può interagire durante l esecuzione;

30 18 2. Nozioni Preliminari <variables> definisce le variabili usate dal processo, provvedendo alla loro definizione in termini di tipi di messaggio WSDL, XML Schema type oppure XML Schema element. Le variabili permettono al processo di mantenere informazioni di stato tra scambi di messaggi successivi; <correlationsets> dichiara le variabili di correlazione utilizzate dal processo. Le occorrenze di questa sezione importano le proprietà delle variabili per la correlazione; <faulthandlers> contiene le attività da eseguire nel caso si verifichino degli errori. Attività WS-BPEL Un processo WS-BPEL si compone di attività che ne descrivono il comportamento. Nel seguito della trattazione saranno introdotti i costrutti utilizzati da BliteC per la traduzione da Blite a WS-BPEL. Per facilitare la lettura riportiamo le notazioni utilizzate nella descrizione delle attività: la sintassi utilizzata è di tipo XML,; i quantificatori "?" (0 o 1), "*" (0 o più) e "+" (1 o più) servono ad indicare le occorrenze degli elementi e degli attributi; gli elementi e gli attributi separati da " " rappresentano una scelta alternativa (OR); NSName rappresenta il prefisso associato ad un namespace ed è caratterizzato da una sequenza di lettere, cifre,"_", "-", "." (period) che non può iniziare con una cifra;

31 2. Nozioni Preliminari 19 NCName rappresenta un tipo di dato in un namespace ed è caratterizzato da una sequenza di lettere, cifre,"_", "-", "." (period) che non può iniziare con una cifra; Qname è un sequenza corrispondente a NSName ":" NCName. Introduciamo adesso le attività WS-BPEL di base per poi introdurre quelle più complesse. L attività <invoke> permette al processo di contattare un web service per richiedere l esecuzione di un operazione. < invoke partnerlink =" NCName " porttype =" QName "? operation =" NCName " inputvariable =" BPELVariableName "? outputvariable =" BPELVariableName "? > < correlations >? < correlation set =" NCName " initiate =" yes join no "? pattern =" request response request - response "? / >+ </ correlations > <catchall >? activity </ catchall > < compensationhandler >? activity </ compensationhandler > </ invoke > Le invocazioni one-way richiedono solo l utilizzo di inputvariable perché non è attesa una risposta dal servizio web. In caso di invocazione request-response, sono richiesti sia l attributo inputvariable, sia l attributo outputvariable. Nel corpo del costrutto possono comparire zero o più correlationset per correlare il processo di business ad una precisa istanza del processo. Una <correlation> può essere usata con tre possibili valori in relazione allo stato del processo. L attività <receive> attende un messaggio in input per una operazione da parte di un client.

32 20 2. Nozioni Preliminari < receive partnerlink =" NCName " porttype =" QName "? operation =" NCName " variable =" BPELVariableName "? createinstance =" yes no "? messageexchange =" NCName "? > <correlations >? < correlation set =" NCName " initiate =" yes join no "? / >+ </ correlations > </ receive > Un attività di receive specifica un partnerlink contenente il ruolo da utilizzare per la ricezione del messaggio, un porttype (opzionale) e una operation che il partner dovrà invocare. Inoltre, deve essere indicata nel campo variable una variabile per memorizzare il messaggio in ingresso. La <receive> gioca un ruolo molto importante nel ciclo di vita di un processo, infatti insieme al costrutto <pick>, è il costrutto che può istanziare un processo di business in WS-BPEL. L attributo che permette di impostare questo comportamento è createinstance impostato con valore yes (il valore di default è no). Inoltre, possono essere definiti dei correlationset per istanziare la correlazione di una variabile. L attività <reply> è usata per rispondere a richieste precedentemente accettate attraverso un attività <receive>. < reply partnerlink =" NCName " porttype =" QName "? operation =" NCName " variable =" BPELVariableName "? faultname =" QName "? messageexchange =" NCName "? > <correlations >? < correlation set =" NCName " initiate =" yes join no "? / >+ </ correlations > </ reply > Questa operazione ha significato solo nella comunicazione request-response. Il costrutto deve essere corredato da una variabile specificata nel campo variable, da un partnerlink e da una operation.

33 2. Nozioni Preliminari 21 L attività di assegnazione <assign> contiene una o più operazioni elementari. <assign > ( <copy keepsrcelementname =" yes no "? ignoremissingfromdata =" yes no "? > from - spec to - spec </copy > )+ </ assign > L attività <assign> copia tipi di valori compatibili tra la sorgente (from-spec) e la destinazione (to-spec) usando l elemento <copy>. Il contenuto di from-spec deve essere uno dei seguenti: < from variable =" BPELVariableName " part =" NCName "? > < query querylanguage =" anyuri "? >? querycontent </ query > </from > < from partnerlink =" NCName " endpointreference =" myrole partnerrole " /> < from variable =" BPELVariableName " property =" QName " / > < from expressionlanguage =" anyuri "? > expression </ from > <from >< literal > literal value </ literal > </ from > <from /> Il contenuto di to-spec, invece, deve essere uno dei seguenti: < to variable =" BPELVariableName " part =" NCName "? > < query querylanguage =" anyuri "? >? querycontent </ query > </to > <to partnerlink =" NCName " /> < to variable =" BPELVariableName " property =" QName " / > < to expressionlanguage =" anyuri "? > expression </ to > <to/> L attività <empty> non effettua nessuna operazione. <empty /> L attività <exit> se utilizzata termina immediatamente il processo.

34 22 2. Nozioni Preliminari <exit /> <throw> lancia un eccezione indicando una condizione di errore. < throw faultname =" QName " faultvariable =" BPELVariableName "? / > Le attività assign, throw, exit sono dette short-lived activity, in quanto hanno un tempo di esecuzione molto breve, e per questo saranno eseguite anche in caso di eccezioni. Passeremo adesso all introduzione delle attività strutturate, ovvero le attività, che permettono di organizzare i precedenti costrutti in architetture più articolate. <sequence> è l attività che permette di definire una collezione di attività da eseguire sequenzialmente. <sequence > activity + </ sequence > <flow> è il costrutto che permette l esecuzione delle attività indicate in modo concorrente. <flow > activity + </flow > L attività <while> è usata per ripetere l esecuzione di una data attività fin quando la condizione specificata non sia più verificata. <while > < condition expressionlanguage =" anyuri "? > bool - expr </ condition > activity </ while > L attività <if> permette di scegliere di eseguire esattamente una attività tra due possibili sulla base del risultato restituito dalla valutazione di una condizione.

35 2. Nozioni Preliminari 23 <if > < condition expressionlanguage =" anyuri "? > bool - expr </ condition > activity <else >? activity </else > </if > L attività <pick> è utilizzata per attendere l arrivo di un messaggio tra un insieme di messaggi possibili. Se uno di questi è ricevuto l attività ad esso associata viene eseguita e le altre possibilità vengono scartate. Quando l attività termina, anche il costrutto <pick> è completato. <pick createinstance =" yes no "? > < onmessage partnerlink =" NCName " porttype =" QName "? operation =" NCName " variable =" BPELVariableName "? messageexchange =" NCName "? >+ < correlations >? < correlation set =" NCName " initiate =" yes join no "? / >+ </ correlations > activity </ onmessage > </pick > L attività <scope> è utilizzata per definire attività annidate che condividono variabili e partner link, e hanno un trattamento specializzato per quanto riguarda le attività di compensazione e fallimento. Ovviamente tutte le sezioni definite all interno del costrutto hanno solo valore locale. Nella traduzione da Blite a WS-BPEL utilizzeremo soltanto la capacità di specificare attività di fallimento e compensazione specializzate. Un attività di fallimento rappresenta l insieme di operazioni che il processo effettuerà nel caso sia lanciata una eccezione, invece le attività di compensazione sono delle operazioni da effettuare nel caso tutte le altre terminino senza errori.

36 24 2. Nozioni Preliminari < scope exitonstandardfault =" yes no "? > < faulthandlers >?... </ faulthandlers > < compensationhandler >?... </ compensationhandler > activity </ scope > Avendo introdotto tutti i costrutti necessari alla traduzione del codice Blite forniremo adesso un semplice esempio di processo WS-BPEL che utilizzi quest ultimi. <? xml version ="1.0" encoding =" UTF -8"? > < process xmlns =" http :// docs. oasis - open. org / wsbpel /2.0/ process / executable " xmlns : bpel =" http :// docs. oasis - open. org / wsbpel /2.0/ process / executable " xmlns : xsd =" http :// /2001/ XMLSchema " xmlns : mwl =" http :// example / OneWayServer. wsdl " suppressjoinfailure =" yes " name =" OneWayServerProcess " targetnamespace =" http :// example / OneWayServer. bpel " > < import location =" OneWayServer. wsdl " namespace =" http :// example / OneWayServer. wsdl " importtype =" http :// schemas. xmlsoap. org / wsdl /" /> < partnerlinks > < partnerlink name =" OW_ serverpl " partnerlinktype =" mwl : OW_serverPLT " myrole =" OW_server " /> </ partnerlinks > < variables > < variable name =" var0 " messagetype =" mwl : req " /> </ variables > < correlationsets > < correlationset name =" x_idcorr " properties =" mwl : x_idprop " /> </ correlationsets > < faulthandlers > <catchall > <empty /> </ catchall > </ faulthandlers > <sequence > < receive partnerlink =" OW_ serverpl " operation =" o_ req " variable =" var0 " createinstance =" yes "> < correlations > < correlation set =" x_idcorr " initiate =" yes " /> </ correlations > </ receive > <empty /> </ sequence > </ process >

37 2. Nozioni Preliminari Variable Properties Schema Variable Properties Schema definisce le modalità con cui mappare le variabili di correlazione WS-BPEL, dette proprietà (una sorta di variabile write-once), con le parti di un messaggio WSDL. Riportiamo un esempio e, per semplificare la spiegazione, utilizziamo i tipi definiti nella precedente sezione. <prop : property name =" x_idprop " type =" xsd : integer " /> < prop : propertyalias propertyname =" tns : x_ idprop " messagetype =" tns : req " part =" id" /> Il prefisso prop indica il namespace Il tag <property> permette di definire il nome ed il tipo della proprietà per definire una correlazione. Il tag <propertyalias> permette di specificare la parte di messaggio da utilizzare nella correlazione. Il tag deve essere associato ad una proprietà attraverso propertyname, oltre ad aver specificato il messaggio (messagetype) e la parte di messaggio (part) a cui fare riferimento Partner Link Type Schema Partner Link Type Schema permette di definire i partner link utilizzati dai processi WS-BPEL. Ogni partner link è un astrazione delle informazioni riguardanti un porttype contenute in un documento WSDL. Infatti grazie a questi costrutti possiamo utilizzare un porttype senza occuparci dei relativi dettagli. Riportiamo adesso un esempio di definizione di partner link. < plnk : partnerlinktype name =" OW_ serverplt " > <plnk : role name =" OW_server " porttype =" tns : OW_serverPT " /> </ plnk : partnerlinktype > Il prefisso plnk indica il namespace

38 26 2. Nozioni Preliminari Il tag <partnerlinktype> definisce un tipo di partner link e vi associa un nome. All interno di questo tag è possibile definire un massimo di due ruoli ai quali va associato un nome ed un porttype cui appoggiarsi. In questo modo il processo WS-BPEL assocerà ad ogni partner un ruolo e comunicherà con esso attraverso il partner associato. Un partnerlinktype con un solo ruolo indica un partner che offre funzionalità senza fissare nessuna richiesta per gli altri partner. Invece un partnerlinktype definito con due ruoli, esplicita che entrambi i partner dovranno offrire delle funzionalità. 2.3 Blite: una variante snella di WS-BPEL Il linguaggio Blite è una versione semplificata di WS-BPEL modellata sulle peculiarità dello standard quali partner link, terminazione dei processi, correlazione dei messaggi, transazioni a lungo termine e attività di compensazione. Per mantenere semplice la progettazione, sono stati omessi aspetti quali timeout, eventi e attività di terminazione, grafi di flusso e sofisticate forme di manipolazione dei dati. Blite fornisce una descrizione formale del deploy di servizi semplicemente ritenendo importanti dettagli implementativi quali partner link, definizioni di servizi e insiemi di correlazione. Ad esempio, i ruoli che partecipano ad una interazione tra servizi sono indicati esplicitamente attraverso partner link e partner, mentre aspetti come i binding del documento WSDL associato sono tralasciati. Questa omissione è visibile nelle interazioni Request-Response dove i partner link indicano due partner perché la parte richiedente deve fornire una operazione di callback attraverso la quale il provider potrà rispondere. I partner link in comunicazioni One-Way, invece, sono indicati da un unico partner perché soltanto una delle due parti fornisce tutte le operazioni da utilizzare. Oltre alle invocazioni asincrone, WS-BPEL fornisce un costrutto per invocazioni sincrone di un servizio remoto. Questo costrutto forza il

39 2. Nozioni Preliminari 27 Basic activities b ::= inv l i o x rcv l r o x x := e invoke, receive, assign empty throw exit empty, throw, exit Structured a ::= b if(e){a 1 }{a 2 } while(e) {a} basic, conditional, iteration activities a 1 ; a 2 j J rcv l j r o j x j ; a j sequence, pick ( J > 1) a 1 a 2 [a a f a c ] parallel, scope Start activities r ::= rcv l r o x j J rcv l j r o j x j ; a j receive, pick r ; a r 1 r 2 [r a f a c ] sequence, parallel, scope Services s ::= [r a f ] µ a µ a, s definition, instance, multiset Deployments d ::= {s} c d 1 d 2 deployment, composition Tabella 2.1: Sintassi di Blite chiamante ad attendere una risposta dal servizio invocato, che effettua una coppia di operazioni receive-reply. In Blite questo comportamento è simulato da una coppia di invoke-receive eseguite dal client e da una coppia di attività receive-invoke da parte del fornitore del servizio Sintassi La sintassi di Blite è riportata in Tabella 2.1. I servizi sono attività strutturate composte da attività di base, come una invocazione inv, un attività di ricezione rcv, assegnamento :=, l attività vuota empty, generazione di eccezioni throw e terminazione forzata exit. I costrutti di organizzazione utilizzati nelle attività strutturate sono la scelta condizionale if( ){ }{ }, il ciclo while( ) { }, la composizione sequenziale ;, l attività pick j J rcv ;, la composizione parallela e l attività di scope [ ]. Un attività di scope [a a f a c ] raggruppa un attività primaria a con un attività di gestione dei fallimenti a f e una di compensazione a c. Le Start Activities r sono attività strutturate che inizialmente possono eseguire solo un attività di receive. Nella seguente trattazione useremo + per indicare la scelta binaria esterna.

40 28 2. Nozioni Preliminari Daremo priorità all attività di sequenzializzazione piuttosto che alle attività di composizione o scelta esterna, ad esempio a 1 ; a 2 a 3 ; a 4 sarà equivalente a (a 1 ; a 2 ) (a 3 ; a 4 ) e a 1 ; a 2 + a 3 equivarrà a (a 1 ; a 2 ) + a 3. Ogni volta che all interno di uno scope saranno omesse l attività di compensazione e di fallimento saranno rispettivamente inserite al loro posto una attività empty e una throw. I dati potranno essere condivisi attraverso variabili condivise (x, x,... ). L insieme di valori (v, v,... ) non è specificato, comunque assumeremo che includa perlomeno un insieme di nomi di partner (p, q,... ) e un insieme di nomi di operazioni (o, o,... ). Inoltre, con u indicheremo partner e variabili, e con w valori e variabili. Le Espressioni (e, e,...) sono lasciate non specificate, ma devono contenere almeno un valore o una variabile. In BliteC invece le espressioni sono caratterizzate da regole ben precise come possiamo vedere a Pagina 72. La notazione è utilizzata per indicare tuple di oggetti, ad esempio x denota la tupla di variabili x 1,..., x h (con h 0). Assumiamo che le variabili nella stessa tupla siano distinte due a due. La notazione speciale indica tuple di uno o due oggetti, ad esempio p denota p 1, p 2 oppure p 1. Le tuple possono essere costruite utilizzando l operatore di concatenamento :, che per p, u : x 1,..., x h restituisce p, u, x 1,..., x h. Scriveremo Z W per assegnare il nome simbolico Z al termine W. I partner link l r delle attività di ricezione possono essere sia p, u che p, dove p è un partner che fornisce l operazione ed u è il partner usato per spedire i messaggi di risposta. I partner per ricevere i messaggi devono essere noti al momento della scrittura del codice, invece i partner usati per rispondere possono essere determinati dinamicamente. I partner link l i utilizzati nelle operazioni di invoke possono essere sia u, p che u, dove u è il partner che fornisce l operazione e p è il partner utilizzato per riceve

41 2. Nozioni Preliminari 29 i messaggi di risposta. Come precedentemente detto, il partner per riceve i messaggi deve essere staticamente noto, e dunque non può essere una variabile. Le attività di Deploy sono composizioni finite di multiset di istanze µ a, contenenti al più una definizione [r a f ] associata ad un insieme di variabili di correlazione. Una definizione di servizio fornisce uno scope di alto livello (che non può essere compensato) e può offrire una scelta di ricezioni alternative su attività multiple di inizializzazione. Ogni istanza di servizio µ a ha il suo stato (privato) µ. Uno stato è una funzione (parziale) che mappa variabili in valori, scritti come {x v}. Lo stato ottenuto aggiornando µ con µ, scritto µ µ, è induttivamente definito da: µ µ (x) = µ (x) se x dom(µ ) (dove dom(µ) denota il dominio di µ) e µ(x) altrimenti. Lo stato vuoto è denotato da. Forniamo adesso un breve esempio di specifica scritta con il linguaggio. {[rcv l r OW server o req x id ; empty empty]} xid Semantica Operazionale La semantica è definita su di una sintassi arricchita rispetta quella presentata in Tabella 2.1, che include anche attività protette a, terminazione con fallimento stop, messaggi p : o : v e scope della forma [a a f a c a d ]. Le prime tre attività ausiliarie sono utilizzate per rimpiazzare, rispettivamente, scope completati senza successo (con la loro attività di compensazione standard), servizi terminati con fallimento o forzatamente (con stop), e attività di invocazione (con il messaggio che producono). Invece, scope della forma [a a f a c a d ] sono dinamicamente generati per salvare in a d l attività di compensazione di uno scope interno che è terminato con successo, insieme all ordine in cui le attività devono essere eseguite. Nel seguito, empty, exit, throw, stop e i messaggi saranno chiamati attività short-lived e saranno

42 30 2. Nozioni Preliminari a empty a empty ; a a ; empty a stop stop stop stop ; a stop a a sh sh p:o: v a p:o: v a [a a f a c ] [a a f a c empty] ( p:o: v a 1 ) ; a 2 p:o: v (a 1 ; a 2 ) [ p:o: v a a f a c a d ] p:o: v [a a f a c a d ] if a throw a a a f a f a c a c a d a d [a a f a c a d ] [a a f a c a d ] r r a f a f a a {[r a f ], s} c {s, [r a f ]} c {µ a, s} c {s, µ a } c d 1 d 2 d 2 d 1 (d 1 d 2 ) d 3 d 1 (d 2 d 3 ) {µ empty, s} c {s} c {µ stop, s} c {s} c {µ empty} c d d {µ stop} c d d Tabella 2.2: Congruenza strutturale per le attività Blite e per il deployment generalmente indicate con sh. La semantica operazionale delle attività di deploy Blite è definita in termini di una congruenza strutturale e una relazione di riduzione. La congruenza strutturale, indicata con, identifica termini sintattici diversi che intuitivamente rappresentano lo stesso termine ed è definita come la minima relazione di congruenza indotta da un certo insieme di leggi. In Tabella 2.2 è mostrato esplicitamente, nella parte alta, le leggi per empty, stop, attività protette, messaggi e scope e, nella parte bassa, le leggi per i servizi e il deployment. Proprietà standard quali, per esempio, il fatto che la sequenzializzazione è associativa, la composizione parallela è commutativa e associativa, sono omesse. Commentiamo ora le regole riportate in Tabella 2.2. L attività empty si comporta come l elemento identità sia per la sequenzializzazione sia per l attività di composizione parallela. stop multipli in parallelo sono esattamente equivalenti ad uno stop; inoltre stop disabilita le attività che lo seguono. L operatore di protezione è idempotente e le attività short-lived sono implicitamente protette, così i messaggi possono comparire dentro o fuori dall operatore di protezione senza problemi. L attività di compensazione iniziale è empty. I messaggi non bloccano

43 2. Nozioni Preliminari 31 attività susseguenti e il completamento di uno scope, eccetto quando una throw è attiva nello scope (questo è controllato dal predicato throw più avanti illustrato). La congruenza strutturale è estesa a scope, istanze e deployment in modo ovvio. Inoltre, l ordine in cui le definizioni e le istanze occorrono in un deployment non importa, e la composizione di deployment è sia commutativa sia associativa. Istanze come µ empty e µ stop sono terminate e, quindi rimovibili. Similmente, deployment contenenti solo istanze teminate sono terminati e possono essere rimossi. La relazione di riduzione sui deployment, indicata con, sfrutta una relazione di transizione etichettata tra attività strutturate, scritta come dalla grammatica: α, dove α è generata α ::= τ x v! p:o: v? l r :o: x (a) Il significato delle etichette è il seguente: τ indica produzione di messaggi, valutazione delle guardie per cicli e scelte o installazione/attivazione di compensazioni; x v indica l assegnamento del valore v alla variabile x;! p : o : v e? l r : o : x indicano l esecuzione di una attività di invocazione e di ricezione per l operazione o, dove p e v corrispondono con l r e x, rispettivamente; indica la terminazione forzata di una istanza di servizio; indica la produzione del segnale di fallimento all interno di uno scope; (a) indica l esecuzione con successo di uno scope che può essere compensato da una attività strutturata a. La relazione α è definita dalle regole in Tabella 2.3 rispetto ad uno stato µ, omesso quando non necessario (scriveremo a α a invece di µ a α a ). Prima di commentare le regole, introdurremo le funzioni ausiliarie e i predicati utilizzati. In modo specifico, i predicati a exit e a throw controllano la possibilità di eseguire una exit o una throw, rispettivamente. Questi sono definiti induttivamente sulla sintassi

44 32 2. Nozioni Preliminari µ inv l i o x µ x := e exit τ µ(l i ):o:µ( x) (inv) rcv l r? l o x r :o: x empty (rec) x µ(e) empty (asg) throw stop (thr) stop (term) p:o: v! p:o: v empty (msg) µ a 1 α a 1 α µ a 1 ; a 2 a 1 ; a 2 a = { a 1 if µ(e) tt if µ(e) = ff a 2 µ if(e){a 1 }{a 2 } τ a (seq) (if) j J rcv l r j o j x j ; a j a = { µ a α a µ a? l r h :o h: x h a h a ; while(e) {a} empty α a (prot) (h J) (pick) if µ(e) tt if µ(e) = ff µ while(e) {a} τ a (while) µ a 1 α a 1 α / {, } (a 2 throw a 2 exit ) µ a 1 a 2 α a 1 a 2 (par 1 ) a 1 α a 1 α {, } a 1 a 2 α a 1 end(a 2 ) (par 2 ) [empty a f a c a d ] (a c) τ empty (done 1 ) [stop a f a c a d ] a d ; a f (done 2 ) µ a α a α / {, (a )} µ [a a f a c a d ] α [a a f a c a d ] (exec) a (a ) a (done 3 ) τ [a a f a c a d ] [a a f a c a ; a d ] a a [a a f a c a d ] τ [a a f a c a d ] (fault) Tabella 2.3: Attività di base, ausiliarie e strutturate delle attività e sono false, tranne che per i seguenti casi exit exit throw throw a exit [a a f a c a d ] exit a throw/exit a throw/exit a 1 throw/exit a 1 ; a 2 throw/exit a 1 throw/exit a 2 throw/exit a 1 a 2 throw/exit La funzione end( ), data una attività a, restituisce l attività ottenuta conservando soltanto le attività short-lived e le attività protette all interno di a. end( ) è definita

45 2. Nozioni Preliminari 33 induttivamente sulla sintassi delle attività, i casi più significativi sono end(sh) = sh end( a ) = a end(a 1 ; a 2 ) = end(a 1 ) end([a a f a c a d ]) = [end(a) a f a c a d ] dove a 1 non deve essere congruente a empty, o alla composizione parallela di questo. Nei restanti casi, end( ) ritorna stop, eccetto per la composizione parallela per la quale si comporta come un omomorfismo. Commentiamo ora brevemente le regole di Tabella 2.3. Le regole (inv) e (asg) indicano che l invocazione e l assegnazione possono procedere solo se il loro argomento è un espressione chiusa (ovvero una espressione senza variabili non inizializzate) e può essere valutata (cioè µ( ) restituisce un valore). Dalla regola (rec), una attività di ricezione offre una operazione invocabile su un dato partner link. Le regole (thr) e (term) comunicano la produzione di un segnale di fallimento o di un segnale di terminazione forzata, rispettivamente. Le attività ausiliarie si comportano come previsto: un messaggio può sempre essere inviato (msg) ed una attività protetta a si comporta come a (prot). (seq) si prende cura di attività eseguite sequenzialmente, mentre (pick) permette di scegliere fra un insieme di attività di ricezione. Le regole per la scelta condizionale e l iterazione ((if) e (while), rispettivamente) sono standard. Le esecuzioni di attività in parallelo sono intervallate ((par 1 ) e (par 2 )), eccetto a una attività di terminazione/fallimento può essere eseguita (par 2 ), in questi casi tutte le attività parallele sono immediatamente terminate eccetto le attività short-lived e handler di compensazione/fallimento che sono protetti. In altre parole, le attività di terminazione throw e exit sono eseguite in modo eager. Dalle regole (done 1 ) e (done 3 ), il completamento di uno scope può essere compensato in accordo con il comportamento di default della compensazione in WS-BPEL (cioè in ordine inverso di completamento), a partire dal primo scope che racchiude l attività.

46 34 2. Nozioni Preliminari { match(c, µ, v, v) = match(c, µ, x, v) = {x v} if x / c (x c x / dom(µ)) if x c {x v} µ match(c, µ,, ) = match(c, µ, w 1, v 1 ) = µ match(c, µ, w 2, v 2 ) = µ match(c, µ, (w 1, w 2 ), (v 1, v 2 )) = µ µ match(c, µ, l r :o: x, p:o: v) < n h J. match(c, µ, l r h :o h : x h, p:o: v) < n µ rcv l r o x ; a c,n p:o: v µ a c,n p:o: v µ a c,n p:o: v µ a 1 c,n p:o: v µ a 1 ; a 2 c,n p:o: v µ a c,n p:o: v µ [a a f a c a d ] c,n p:o: v µ j J rcv l r j o j x j ; a j c,n p:o: v µ a 1 c,n p:o: v µ a 2 c,n p:o: v µ a 1 a 2 c,n p:o: v µ a c,n p:o: v s c,n p:o: v µ a, s c,n p:o: v Tabella 2.4: Regole di match / C è un attività di ricezione in p e o che si sincronizzi con v? In particolare, scope come [empty a f a c a d ] non sono ancora terminati e, quando lo scope terminerà, l attivita di compensazione a d dello scope interno non è passata a quello esterno (done 1 ). La regola (exec) permette di eseguire qualunque azione primaria eccetto l emissione di un fallimento e la compensazione di un scope. In particolare, le terminazioni forzate interne sono propagate all esterno dello scope. Differentemente dalla terminazione forzata, i fallimenti derivati da uno scope sono gestiti internamente (fault) ed il corrispondente handler è installato quando l attività principale termina (done 2 ). Per la regola (done 2 ), la compensazione di default è effettuata dopo la terminazione dell attività primaria e prima della gestione del fallimenti. Da notare che questa attività di compensazione non memorizza nessuna informazione con le precedenti, quindi, se lo stato cambia tra il salvataggio e l esecuzione di quest ultima, lo stato attuale è utilizzato. Alcune altre attività ausiliarie sono usate nella semantica delle attività di deployment in Tabella 2.5. Le regole per la comunicazione e l aggiornamento delle variabili ((com), (new) e (var)) necessitano di un meccanismo per controllare se l assegnazione

47 2. Nozioni Preliminari 35? t 1 a 1 a! t 2 1 a 2 a 2 match(c 1, µ 1, t 1, t 2 ) = µ 1 ( µ 1 a 1, s 1 c1, µ 1 t 2 ) {µ 1 a 1, s 1 } c1 {µ 2 a 2, s 2 } c2 {µ 1 µ 1 a 1, s 1 } c1 {µ 2 a 2, s 2 } c2 [r a f empty]? t 1 a1 a 2! t 2 a 2 match(c 1,, t 1, t 2 ) = µ 1 (s 1 c1, µ1 t 2 ) {[r a f ], s 1 } c1 {µ 2 a 2, s 2 } c2 {µ 1 a 1, [r a f ], s 1 } c1 {µ 2 a 2, s 2 } c2 (com) (new) µ a x v a match(c, µ, x, v) = µ (var) {µ a, s} c {µ µ a, s} c d 1 d 1 d 1 d 2 d 1 d 2 (part) µ a α a α / {? t 1,! t 2, x v} {µ a, s} c {µ a, s} c (enab) d d 1 d 1 d 2 d 2 d (cong) d d Tabella 2.5: Regole di riduzione per deployment Blite (dove t 1 = l r :o: x e t 2 = p:o: v) di alcuni valori v a w è conforme al vincolo imposto dall insieme di correlazione c e dallo stato µ e, in caso di affermativo, restituire lo stato µ per le variabili in w che salva l effetto dell assegnazione. Questo meccanismo è implementato da una funzione match(,,, ) definita attraverso le regole riportate nella parte alta della Tabella 2.4. Da notare che match(,,, ) non è definita quando w e v hanno dimensioni diverse o quando x c e {x v } µ per qualche v v (finché lo stato {x v} non è in accordo a c e µ). Anche le regole (com) e (new) hanno bisogno del predicato ausiliare s c,n p:o: v, definito induttivamente nella parte bassa della Tabella 2.4, che controlla la capacità di s di effettuare una ricezione sull operazione o sfruttando il partner link p, che corrisponde alla tupla dei valori v e genera uno stato con una coppia di n che corrispondono con c e lo stato corrente dell attività che effettua la ricezione. Infine, soffermiamoci brevemente sulle regole in Tabella 2.5. La regola (com) indica che la comunicazione può avere luogo quando due istanze di servizio si sincronizzano eseguendo attività di ricezione ed invocazione che rispettano l insieme di correlazione dell istanza ricevente. Da notare che la corrispondenza coinvolge sia il partner link p sia i dati di business v. La comunicazione genera uno stato che aggiorna quello

48 36 2. Nozioni Preliminari dell istanza ricevente. Se più di una ricezione può gestire una data invocazione, solo la più precisa (cioè la ricezione che genera lo stato più piccolo ) progredisce (il predicato, è utilizzato per questo scopo). Questo meccanismo permette di correlare messaggi di istanze di servizio diverse e di modellare la precedenza di un istanza di servizio esistente su di una nuova istanziazione (regole (new)). Nelle regole (com) e (new), viene utilizzata l assunzione di correttezza del deployment cosicché non c è bisogno di controllare ogni singolo deployment cercando possibili conflitti tra le attività di ricezione. La regola (new) indica che una istanziazione può avere luogo quando la definizione di un sevizio e un istanza di un servizio si sincronizzano su una receive e una attività di invocazione, rispettivamente. La regola (var) indica che le variabili di correlazione non possono essere riassegnate se un nuovo valore non corrisponde a quello precedente. Inoltre, se un assegnazione è eseguita, il suo effetto coinvolge tutta l istanza, ovvero lo stato è aggiornato. La regola (enab) indica che l esecuzione di attività diverse dalla comunicazione o dall assegnazione può essere sempre eseguita. Infine, se una parte di un grande deployment evolve, l intera composizione evolve in accordo (part) e, ovviamente, deployment strutturalmente congruenti hanno le stesse riduzioni (cong).

49 Capitolo 3 Descrizione generale di BliteC Questo capitolo riporta una breve descrizione dell architettura e del funzionamento di BliteC, in modo da rendere la lettura dei capitoli seguenti più semplice. Se avviato con input corretto, BliteC esegue le seguenti fasi principali: 1. analisi lessicale e sintattica; 2. generazione dell albero sintattico; 3. generazione dei file e del package. Il documento in ingresso è composto da una parte dichiarativa e da una parte in codice Blite. La prima fase è necessaria a garantire dati corretti in ingresso al traduttore evitando così di accettare un documento malformato e la conseguente generazione di codice non corretto. La generazione dell albero sintattico è utile per ottimizzare il programma. Infatti il parser costruirà l albero sintattico dell input, gli altri componenti di BliteC si limiteranno a leggerlo e ad effettuare le operazioni richieste. L ultima fase genera tutti i file necessari alla descrizione del servizio e al deploy su un engine utilizzando l albero costruito in precedenza e i dati di configurazione ricevuti 37

50 38 3. Descrizione generale di BliteC in ingresso. L engine utilizzato in questa prima versione di BliteC è ActiveVOS perché, dopo alcuni studi svolti in [19] e [20], risulta essere quello che interpreta in modo più fedele lo standard WS-BPEL. 3.1 Implementazione Il linguaggio scelto per la realizzazione del progetto è Java 1 perché rende il programma multi-piattaforma senza nessuno sforzo aggiuntivo, possiede molte librerie che gestiscono i documenti XML in modo semplice ed efficace ed è il linguaggio di riferimento per la maggior parte delle applicazioni che lavorano con WS-BPEL. Nella realizzazione, oltre alle librerie comprese nella distribuzione di Java, si è reso necessario l utilizzo della libreria JDOM [26] per la gestione dei documenti XML e del generatore di parser JavaCC [27] per creare in modo semplice le componenti che validano il documento in input. JDOM è una libreria che fornisce una soluzione robusta e leggera, per leggere e scrivere file XML senza dover ricorrere a complesse ed inefficienti opzioni delle librerie standard. JDOM riesce ad interoperare bene con SAX (Simple Api for XML) e DOM (Document Object Model), senza essere né un astrazione né un miglioramento per quest ultime. JavaCC, o Java Compiler Compiler, è un popolare generatore di parser in Java. Il programma legge un file di definizione fornito dall utente e lo converte in un programma Java che riconoscerà la grammatica definita. Nel pacchetto di JavaCC è inoltre fornito un preprocessore JJTree che permette di integrare nel parser la generazione di un albero sintattico. JJTree inoltre può predisporre i nodi componenti l albero, per l interoperabilità con il pattern Visitor, in modo da poter aggiungere funzioni specializzate senza modificare il codice generato da JavaCC. 1 JRE e JDK versione 1.6

51 3. Descrizione generale di BliteC 39 La fase di analisi sintattica e semantica è effettuata attraverso l utilizzo di due parser: uno per il codice Blite ed uno per la parte descrittiva. Questa divisione ha permesso di rendere più semplici le due grammatiche perché compaiono meno regole, oltre a rendere indipendente la grammatica di Blite da quella per la descrizione dei dati di configurazione. Grazie a questo approccio la modifica della grammatica dei dati di configurazione, o l implementazione di un nuovo sistema di configurazione, risulta semplice perché non comporta cambiamenti agli altri componenti. L implementazione dei parser è stata effettuata attraverso l utilizzo di JavaCC, che grazie alla combinazione con JJTree ha permesso di integrare anche la generazione dell albero sintattico. Il preprocessore genera tutte le classi necessarie a descrivere ogni costrutto delle grammatiche e permette inoltre di predisporre queste classi per l utilizzo con un pattern Visitor. Questo approccio rende possibile anche l aggiunta di nuovi costrutti senza troppi problemi nel mantenimento del vecchio codice. In dettaglio, il parser della parte dichiarativa colleziona i dati da inserire in una tabella dei simboli attraverso una serie di Visitor. Il parser Blite genera l albero associato al codice inserito e, attraverso una serie di Visitor, controlla se il codice inserito è consistente con i dati della tabella dei simboli. La fase di generazione dei file può essere divisa in due parti: una indipendente dal tipo di engine usato e l altra caratterizzata da quest ultimo. La prima utilizza l albero del codice da tradurre e la tabella dei simboli per generare il documento WS-BPEL e il file WSDL del nuovo servizio; la seconda invece genera i file necessari all esecuzione del servizio sull engine selezionato e costruisce il pacchetto contenente tutti i file prima descritti. Introduciamo adesso i principali componenti di BliteC (si veda Figura 3.1): Mapper Con Mapper si intende il parser e l insieme di Visitor che si occupano di

52 40 3. Descrizione generale di BliteC Generatore WS-BPEL Parser Blite Generatore WSDL BliteC Mapper Deployer Figura 3.1: Componenti di BliteC reperire le informazioni necessarie a mappare i simboli del codice Blite nei relativi costrutti XML. Parser Blite Con questo nome ci riferiamo al parser e ai visitor che si occupano della generazione e della validazione dell albero di conoscenza associato al nuovo servizio. Generatore WS-BPEL Questo generatore si occupa della traduzione del codice rappresentato dall albero sintattico in un documento WS-BPEL. Generatore WSDL Questo generatore si occupa di creare la descrizione WSDL del nuovo servizio.

53 3. Descrizione generale di BliteC 41 File Blite Mapper Generatore WS-BPEL Parser Blite Generatore WSDL Blitec Deployer Pacchetto WS-BPEL Figura 3.2: Funzionamento di BliteC Generatore dei file di Deploy Questo componente genera il package e tutti i documenti necessari al deploy su di un engine WS-BPEL. 3.2 Funzionamento BliteC applicato ad un documento (si veda Figura 3.2) contenente la specifica e le informazioni di configurazione di un processo Blite, passa il riferimento del file in ingresso al Mapper. Il Mapper scorre il documento controllando che sia conforme alla grammatica e ne genera un albero di conoscenza per permettere l accesso ai dati presenti nel file senza doverlo riscorrere. Dopo la generazione dell albero di conoscenza il mapper applica

54 42 3. Descrizione generale di BliteC una serie di Visitor per controllare la correttezza delle dichiarazioni e per importare i dati indicati nel file. Se la fase di controllo va a buon fine il Mapper costruisce la tabella dei simboli con le informazioni ricavate dall albero di conoscenza. Il componente successivo nella computazione è il Parser Blite che, come il precedente parser, scorre la specifica Blite del processo presente nel documento passato in ingresso e ne ricava un albero di conoscenza (nel caso non siano stati trovati errori di consistenza con il linguaggio Blite). Dopo aver ricavato l albero, vengono applicati dei Visitor all albero stesso per verificare la consistenza dei dati ottenuti nella precedente fase con quelli trovati nella specifica. Se tutti i dati utilizzati sono corretti, si passa alla fase di controllo delle assegnazioni e, nel caso che anche questa operazione vada a buon fine, viene effettuata l aggiunta alla tabella dei simboli dei dati relativi ai partner link di ricezione usati per contattare il nuovo processo. Dopo l esecuzione del Parser Blite nella tabella dei simboli sono contenute tutte le informazioni necessarie alla generazione di tutti i documenti per il deploy. Il primo documento generato da BliteC è la specifica WS-BPEL del processo Blite. Anche il generatore WS-BPEL è un Visitor dell albero di conoscenza relativo al codice Blite. Infatti, il componente si aspetta in ingresso l albero di conoscenza e la tabella dei simboli con i quali effettuerà la conversione dei costrutti Blite nei rispettivi WS-BPEL. La successiva generazione è quella riguardante il documento WSDL che permetterà ai servizi esterni di contattare il processo. A differenza del precedente componente, questo necessita in ingresso soltanto della tabella dei simboli, che verrà utilizzata per generare tutti i dati necessari alla corretta comunicazione con il processo WS-BPEL. L ultimo passo effettuato da BliteC è la generazione dei file necessari al deploy del servizio su di un engine WS-BPEL. Il componente che effettua queste generazioni è il Deployer. Questo si aspetta di avere in ingresso i file generati in precedenza e

55 3. Descrizione generale di BliteC 43 la tabella dei simboli, dove troverà le informazioni necessarie alla generazione dei documenti di configurazione dell engine. Il Deployer dopo aver generato i documenti di configurazione è in possesso di tutte le informazioni necessarie all esecuzione del processo e le organizza in un pacchetto del formato accettato dall engine. Il funzionamento di BliteC sarà descritto in modo più dettagliato nei successivi due capitoli. 3.3 Utilizzo Descriviamo adesso una tipica esecuzione di BliteC per la generazione di un pacchetto eseguibile dall engine ActiveVOS e il relativo test di funzionamento del nuovo servizio. Nell esempio si suppone che l utente disponga di: Java aggiornato alla versione 1.6; lo strumento BliteC; l engine ActiveVOS Community Edition versione in esecuzione sulla macchina di lavoro 2 ; un programma per generare messaggi SOAP con cui contattare il nuovo servizio; un browser. Nell esempio è utilizzato soapui [28], un software che genera automaticamente i messaggi SOAP necessari per contattare il nuovo servizio. Il file esempio.bl rappresenta nell esempio il file che contiene la specifica Blite del processo e la relativa configurazione per BliteC. 2 Il significato dell esempio non cambia anche se l utente non dispone di una installazione locale, infatti è necessario soltanto che l indirizzo localhost venga sostituito con quello dell engine.

56 44 3. Descrizione generale di BliteC Per semplificare la comprensione al lettore la trattazione è stata divisa nelle seguenti fasi: esecuzione della compilazione con BliteC; deploy del processo su ActiveVOS; invocazione del servizio Esecuzione della compilazione con BliteC In questa parte eseguiremo lo strumento sul file esempio.bl ottenendo come prodotto dell esecuzione il pacchetto eseguibile dall engine ActiveVOS. L utente può decidere se creare il pacchetto di deploy nella directory del file da compilare con il comando java -jar blitec.jar esempio.bl oppure può specificare la directory di generazione del pacchetto di deploy aggiungendo un argomento al comando precedente java -jar blitec.jar esempio.bl directory di deploy evitando così lo spostamento manuale del pacchetto nella cartella desiderata. Nel primo caso, al termine dell esecuzione di BliteC saranno disponibili nella directory del file da compilare il documento WSDL (example.wsdl) che descrive le operazioni messe a disposizione dal nuovo servizio e il pacchetto accettato da ActiveVOS (exampleprocess.bpr).

57 3. Descrizione generale di BliteC 45 Nel caso sia stata eseguita la seconda variante del comando troveremo il documento WSDL all interno della cartella del file da compilare il pacchetto eseguibile, invece, sarà generato nella cartella indicata dall utente Deploy del processo su ActiveVOS Questa fase è effettuata dall engine quando il pacchetto generato è caricato nella directory dedicata alle esecuzioni di nuovi processi (bpr). Per verificare che il deploy ha avuto successo dobbiamo collegarci attraverso un browser all indirizzo e controllare se il nuovo processo è stato eseguito con successo. A questo punto, per verificare il successo del deploy bisogna selezionare la voce Deployed Processes e controllare se il nuovo processo è presente nella lista restituita,illustrata di seguito. Se l operazione ha successo è possibile contattare il nuovo servizio utilizzando il documento WSDL messo a disposizione dall engine all interno della voce Deployed Services. La voce nella lista avrà lo stesso nome del partner link utilizzato dal processo per colloquiare con l esterno Invocazione del servizio Quest ultima fase permette all utente di simulare un interazione del servizio con un client.

58 46 3. Descrizione generale di BliteC Per contattare il nuovo servizio attraverso soapui dobbiamo creare un nuovo progetto, dargli un nome, e inserire nel campo adiacente alla voce Initial WSDL/WADL l URI del file WSDL del servizio. Inserite queste informazioni è sufficiente cliccare sul pulsante OK per eseguire l importazione del documento WSDL e la conseguente generazione delle richieste SOAP. Finito il processo di creazione, saremo posti di fronte ad un interfaccia che permette la navigazione attraverso tutti i messaggi inviabili al servizio per fruire di una risorsa. Per inviare un messaggio SOAP dovremo semplicemente selezionare un servizio e cliccare su una Request. Questa operazione aprirà una nuova finestra nella parte destra dell interfaccia, dove l utente dovrà inserire i valori all interno dei campi contraddistinti dal carattere?, prima di inviare il messaggio (si veda Figura 3.3). Effettuata quest ultima operazione siamo pronti ad inviare il messaggio al nostro nuovo servizio. L invio del messaggio può essere effettuato cliccando sul pulsante in alto a sinistra nella barra presente sopra l editor del messaggio. Inviato il messaggio, per verificare se il servizio ha elaborato la richiesta, dovremo tornare con il browser sulla pagina di ActiveVOS e controllare lo stato del processo all interno della lista presente alla voce Active Processes (si veda Figura 3.4).

59 3. Descrizione generale di BliteC 47 Figura 3.3: soapui - campo da riempire Nel caso il processo abbia terminato l esecuzione con successo, alla destra del nome sarà presente lo stato completed. È inoltre possibile visualizzare dettagli sull esecuzione cliccando sul nome del processo all interno della lista. La pagina caricata (si veda Figura 3.5) visualizzerà una rappresentazione grafica dell esecuzione del processo, oppure, nel caso l utente sia interessato, permetterà il controllo dei log dell esecuzione (cliccando sull apposito bottone in alto nella barra).

60 48 3. Descrizione generale di BliteC Figura 3.4: Lista dei processi attivi

61 3. Descrizione generale di BliteC 49 Figura 3.5: Pagina di descrizione dell esecuzione di un processo

Processi BPEL. Obiettivi

Processi BPEL. Obiettivi Università degli studi di Roma Tor Vergata Facoltà di Ingegneria Processi BPEL Corso di Sistemi Distribuiti Stefano Iannucci Anno accademico 2009/10 Email: sd@chmod.it Obiettivi Esercitazione pratica su:

Dettagli

Reti di Telecomunicazione Lezione 6

Reti di Telecomunicazione Lezione 6 Reti di Telecomunicazione Lezione 6 Marco Benini Corso di Laurea in Informatica marco.benini@uninsubria.it Lo strato di applicazione protocolli Programma della lezione Applicazioni di rete client - server

Dettagli

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo Come funziona il WWW Il funzionamento del World Wide Web non differisce molto da quello delle altre applicazioni Internet Anche in questo caso il sistema si basa su una interazione tra un computer client

Dettagli

SVI08-0003 Nuovo Sistema Revisioni

SVI08-0003 Nuovo Sistema Revisioni >> Nuovo Sistema Revisioni - Specifiche Web Services Officina SVI08-0003 Nuovo Sistema Revisioni Servizio di Sviluppo Software RTI Indice dei contenuti 1 GENERALITA... 8 1.1 Lista di distribuzione...8

Dettagli

Reti di Telecomunicazione Lezione 8

Reti di Telecomunicazione Lezione 8 Reti di Telecomunicazione Lezione 8 Marco Benini Corso di Laurea in Informatica marco.benini@uninsubria.it Livello di trasporto Programma della lezione relazione tra lo strato di trasporto e lo strato

Dettagli

Seminario di Sistemi Distribuiti RPC su SOAP

Seminario di Sistemi Distribuiti RPC su SOAP Seminario di Sistemi Distribuiti RPC su SOAP Massimiliano Vivian [777775] Massimiliano Vivian 1 Introduzione La comunicazione delle informazioni è l elemento fondamentale per lo sviluppo dei sistemi. SOAP

Dettagli

B.P.S. Business Process Server ALLEGATO C10

B.P.S. Business Process Server ALLEGATO C10 B.P.S. Business Process Server ALLEGATO C10 REGIONE BASILICATA DIPARTIMENTO PRESIDENZA DELLA GIUNTA REGIONALE UFFICIO SISTEMA INFORMATIVO REGIONALE E STATISTICA Via V. Verrastro, n. 4 85100 Potenza tel

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

Modellazione dei dati in UML

Modellazione dei dati in UML Corso di Basi di Dati e Sistemi Informativi Modellazione dei dati in UML Angelo Montanari Dipartimento di Matematica e Informatica Università degli Studi di Udine Introduzione UML (Unified Modeling Language):

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo

Dettagli

BPEL: Business Process Execution Language

BPEL: Business Process Execution Language Ingegneria dei processi aziendali BPEL: Business Process Execution Language Ghilardi Dario 753708 Manenti Andrea 755454 Docente: Prof. Ernesto Damiani BPEL - definizione Business Process Execution Language

Dettagli

SERVICE BROWSER. Versione 1.0

SERVICE BROWSER. Versione 1.0 SERVICE BROWSER Versione 1.0 25/09/2008 Indice dei Contenuti 1. Scopo del documento... 3 2. Introduzione... 3 3. Accordi di Servizio... 4 4. Servizi... 5 5. Servizio: Schede Erogatori... 8 6. Servizio:

Dettagli

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida Breve introduzione curata da Alessandro Benedetti Struts2-Introduzione e breve guida 22-11- 2008 1 Struts 2 Costruisci,attiva e mantieni! Apache Struts 2 è un framework elegante ed estensibile per creare

Dettagli

connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI

connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI Documenti su Internet LINGUAGGI DI MARKUP Internet permette (tra l altro) di accedere a documenti remoti In generale, i documenti acceduti via Internet sono multimediali, cioè che possono essere riprodotti

Dettagli

Modelli per la descrizione di protocolli

Modelli per la descrizione di protocolli POLITECNICO DI MILANO Corso di Laurea in Ingegneria Informatica Modelli per la descrizione di protocolli asincroni basati sull usouso di servizi Web Relatore: Prof. Stefano Ceri Correlatori: Ing. Marco

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

1. BASI DI DATI: GENERALITÀ

1. BASI DI DATI: GENERALITÀ 1. BASI DI DATI: GENERALITÀ BASE DI DATI (DATABASE, DB) Raccolta di informazioni o dati strutturati, correlati tra loro in modo da risultare fruibili in maniera ottimale. Una base di dati è usualmente

Dettagli

Reti di Calcolatori. Il Livello delle Applicazioni

Reti di Calcolatori. Il Livello delle Applicazioni Reti di Calcolatori Il Livello delle Applicazioni Il DNS Gli indirizzi IP sono in formato numerico: sono difficili da ricordare; Ricordare delle stringhe di testo è sicuramente molto più semplice; Il Domain

Dettagli

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4) Architettura del WWW World Wide Web Sintesi dei livelli di rete Livelli di trasporto e inferiori (Livelli 1-4) - Connessione fisica - Trasmissione dei pacchetti ( IP ) - Affidabilità della comunicazione

Dettagli

Introduzione a Dev-C++

Introduzione a Dev-C++ Introduzione a Dev-C++ Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Note: Dev-C++ richiede Windows 95/98/NT/2000/XP

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15. Pietro Frasca. Parte II Lezione 5

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15. Pietro Frasca. Parte II Lezione 5 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Parte II Lezione 5 Giovedì 19-03-2015 1 Intensità del traffico e perdita dei pacchetti La componente

Dettagli

Strumenti di modellazione. Gabriella Trucco

Strumenti di modellazione. Gabriella Trucco Strumenti di modellazione Gabriella Trucco Linguaggio di modellazione Linguaggio formale che può essere utilizzato per descrivere (modellare) un sistema Il concetto trova applicazione soprattutto nell

Dettagli

Introduzione ai Web Services Alberto Polzonetti

Introduzione ai Web Services Alberto Polzonetti PROGRAMMAZIONE di RETE A.A. 2003-2004 Corso di laurea in INFORMATICA Introduzione ai Web Services alberto.polzonetti@unicam.it Introduzione al problema della comunicazione fra applicazioni 2 1 Il Problema

Dettagli

Introduzione all Information Retrieval

Introduzione all Information Retrieval Introduzione all Information Retrieval Argomenti della lezione Definizione di Information Retrieval. Information Retrieval vs Data Retrieval. Indicizzazione di collezioni e ricerca. Modelli per Information

Dettagli

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento I protocolli del livello di applicazione Porte Nelle reti di calcolatori, le porte (traduzione impropria del termine port inglese, che in realtà significa porto) sono lo strumento utilizzato per permettere

Dettagli

GAUDI SSPC: Tracciato XSD flussi G01-G03 Gestore di rete GAUDI-SSPC GESTIONE FLUSSI G01 G03. Descrizione Tracciati File XSD Terna per Gestore di rete

GAUDI SSPC: Tracciato XSD flussi G01-G03 Gestore di rete GAUDI-SSPC GESTIONE FLUSSI G01 G03. Descrizione Tracciati File XSD Terna per Gestore di rete GAUDI-SSPC GESTIONE FLUSSI G01 G03 Descrizione Tracciati File XSD Terna per Gestore di rete Pagina 1 di 15 Sommario 1 INTRODUZIONE... 4 1.1 AMBITO DI RIFERIMENTO E DESCRIZIONE DEL DOCUMENTO... 4 2 FORMATO

Dettagli

MODA-ML: Esempi di XSL (Extensible Stylesheet Language) Vocabolario di supporto alla creazione di un set di Schemi di documenti XML

MODA-ML: Esempi di XSL (Extensible Stylesheet Language) Vocabolario di supporto alla creazione di un set di Schemi di documenti XML MODA-ML: Esempi di XSL (Extensible Stylesheet Language) Vocabolario di supporto alla creazione di un set di Schemi di documenti XML Thomas Imolesi imolesi@libero.it fti@bologna.enea.it XML un linguaggio

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

Dettagli

Identificare le classi in un sistema

Identificare le classi in un sistema 3.7 (Caso di studio facoltativo) Pensare a oggetti: identificare le classi nella specifica del problema Cominciamo ad affrontare la progettazione del simulatore di ascensore introdotto nel capitolo. Iniziamo

Dettagli

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni Introduzione Ai Data Bases Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni I Limiti Degli Archivi E Il Loro Superamento Le tecniche di gestione delle basi di dati nascono

Dettagli

Internet. Internet. Internet Servizi e Protocolli applicativi. Internet. Organizzazione distribuita

Internet. Internet. Internet Servizi e Protocolli applicativi. Internet. Organizzazione distribuita Organizzazione distribuita Il messaggio viene organizzato in pacchetti dal calcolatore sorgente. Il calcolatore sorgente instrada i pacchetti inviandoli ad un calcolatore a cui è direttamente connesso.

Dettagli

19. LA PROGRAMMAZIONE LATO SERVER

19. LA PROGRAMMAZIONE LATO SERVER 19. LA PROGRAMMAZIONE LATO SERVER Introduciamo uno pseudocodice lato server che chiameremo Pserv che utilizzeremo come al solito per introdurre le problematiche da affrontare, indipendentemente dagli specifici

Dettagli

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete IP Analizziamo con sufficiente dettaglio il sistema denominato IP, usato per consentire a due computer mobili di spostarsi liberamente in altre reti pur mantenendo lo stesso indirizzo IP. In particolare,

Dettagli

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio Il Concetto Intuitivo di Calcolatore Fondamenti di Informatica A Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini I Problemi e la loro Soluzione Problema: classe

Dettagli

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0 Prodotto Inaz Download Manager Release 1.3.0 Tipo release COMPLETA RIEPILOGO ARGOMENTI 1. Introduzione... 2 2. Architettura... 3 3. Configurazione... 4 3.1 Parametri di connessione a Internet... 4 3.2

Dettagli

Elementi di semantica denotazionale ed operazionale

Elementi di semantica denotazionale ed operazionale Elementi di semantica denotazionale ed operazionale 1 Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

Dettagli

DFD DISPENSA DEL CORSO DI SISTEMI INFORMATIVI UNIVERSITÀ DEGLI STUDI DI VERONA FACOLTÀ DI MM.FF.NN LAUREA SPECIALISTICA IN INFORMATICA

DFD DISPENSA DEL CORSO DI SISTEMI INFORMATIVI UNIVERSITÀ DEGLI STUDI DI VERONA FACOLTÀ DI MM.FF.NN LAUREA SPECIALISTICA IN INFORMATICA UNIVERSITÀ DEGLI STUDI DI VERONA FACOLTÀ DI MM.FF.NN LAUREA SPECIALISTICA IN INFORMATICA DISPENSA DEL CORSO DI SISTEMI INFORMATIVI Prof. Carlo Combi DFD Appunti a cura di E. Peri M. Devincenzi Indice 1

Dettagli

Gestione Richieste Patenti Web

Gestione Richieste Patenti Web >> Specifiche Integrazione Web Services RTI Gestione Richieste Patenti Web Servizio di Sviluppo SVI Versione 1.0-07 Dicembre 2009 Indice dei contenuti 1 GENERALITA... 6 1.1 Lista di distribuzione...6 1.2

Dettagli

Sicurezza nei Web Services: Migrazione dell autenticazone di Web Services da ticket di sessione a WS-Security con token SAML

Sicurezza nei Web Services: Migrazione dell autenticazone di Web Services da ticket di sessione a WS-Security con token SAML Master Universitario di II livello in Interoperabilità Per la Pubblica Amministrazione e Le Imprese Sicurezza nei Web Services: Migrazione dell autenticazone di Web Services da ticket di sessione a WS-Security

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

PROGETTO WEB SERVICES DOGANE SERVIZI PER RICEZIONE ED ELABORAZIONE MESSAGGI AMBIENTE REALE

PROGETTO WEB SERVICES DOGANE SERVIZI PER RICEZIONE ED ELABORAZIONE MESSAGGI AMBIENTE REALE Pag. 1 di 12 PROGETTO WEB SERVICES DOGANE SERVIZI PER RICEZIONE ED ELABORAZIONE MESSAGGI AMBIENTE REALE Pag. 1 di 12 Pag. 2 di 12 1 GENERALITÀ... 3 1.1 CANALI DI COMUNICAZIONE DEI SISTEMI... 3 2 SOA DOMINIO

Dettagli

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone BASI DI DATI per la gestione dell informazione Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone Libro di Testo 22 Chianese, Moscato, Picariello e Sansone BASI DI DATI per la Gestione dell

Dettagli

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione I semestre 04/05 Comunicazione tra Computer Protocolli Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica 1

Dettagli

Elementi di semantica operazionale

Elementi di semantica operazionale Elementi di semantica operazionale 1 Contenuti sintassi astratta e domini sintattici un frammento di linguaggio imperativo semantica operazionale domini semantici: valori e stato relazioni di transizione

Dettagli

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta

Dettagli

Servizi medra Report e HTTPCallback

Servizi medra Report e HTTPCallback Servizi medra Report e HTTPCallback Versione documento: 1.0 Data creazione: 01 dicembre 2011 Data ultima modifica: 01 dicembre 2011 1. Introduzione...2 2. Report...2 3. Modalità di Notifica...3 A. Elenco

Dettagli

Siti web centrati sui dati (Data-centric web applications)

Siti web centrati sui dati (Data-centric web applications) Siti web centrati sui dati (Data-centric web applications) 1 A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 2 / 2 0 1 3 WEB La tecnologia del World Wide Web (WWW) costituisce attualmente

Dettagli

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME) Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

Progettazione di un Database

Progettazione di un Database Progettazione di un Database Per comprendere il processo di progettazione di un Database deve essere chiaro il modo con cui vengono organizzati e quindi memorizzati i dati in un sistema di gestione di

Dettagli

Macchine a stati finiti G. MARSELLA UNIVERSITÀ DEL SALENTO

Macchine a stati finiti G. MARSELLA UNIVERSITÀ DEL SALENTO Macchine a stati finiti 1 G. MARSELLA UNIVERSITÀ DEL SALENTO Introduzione Al più alto livello di astrazione il progetto logico impiega un modello, la cosiddetta macchina a stati finiti, per descrivere

Dettagli

Le Basi di Dati. Le Basi di Dati

Le Basi di Dati. Le Basi di Dati Le Basi di Dati 20/05/02 Prof. Carlo Blundo 1 Le Basi di Dati Le Base di Dati (database) sono un insieme di tabelle di dati strutturate in maniera da favorire la ricerca di informazioni specializzate per

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli Prerequisiti Mon Ami 3000 Varianti articolo Gestione di varianti articoli L opzione Varianti articolo è disponibile per le versioni Azienda Light e Azienda Pro e include tre funzionalità distinte: 1. Gestione

Dettagli

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico Introduzione alle basi di dati Introduzione alle basi di dati Gestione delle informazioni Base di dati Modello dei dati Indipendenza dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS Gestione delle

Dettagli

Introduzione ai database relazionali

Introduzione ai database relazionali Introduzione ai database relazionali Tabelle Un database (DB) è costituito da un insieme di file che memorizzano dati opportunamente organizzati Nei database relazionale tale organizzazione è costituita

Dettagli

Università degli Studi di L Aquila. Facoltà di Ingegneria. Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi

Università degli Studi di L Aquila. Facoltà di Ingegneria. Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi Università degli Studi di L Aquila Facoltà di Ingegneria Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi Prof. Gaetanino Paolone Dott. Ottavio Pascale a.a.2003-2004 Progetto Campo

Dettagli

Progettazione ed implementazione di un tool per lo sviluppo di applicazioni in Esperanto

Progettazione ed implementazione di un tool per lo sviluppo di applicazioni in Esperanto Università degli studi di Napoli Federico II Facoltà di Ingegneria Corso di laurea in Ingegneria Informatica Capri Feb. 2004 Progettazione ed implementazione di un tool per lo sviluppo di applicazioni

Dettagli

Sostituto abilitato Entratel con più sedi: ricezione diretta e incarico ad intermediario abilitato

Sostituto abilitato Entratel con più sedi: ricezione diretta e incarico ad intermediario abilitato FAQ Flusso telematico dei modelli 730-4 D.M. 31 maggio 1999, n. 164 Comunicazione dei sostituti d imposta per la ricezione telematica, tramite l Agenzia delle entrate, dei dati dei 730-4 relativi ai mod.

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

Architetture software

Architetture software Corso di Laurea Magistrale in Ingegneria Informatica Corso di Ingegneria del A. A. 2013-2014 Architettura software 1 Architetture software Sommario Definizioni 2 Architettura Definizione. L architettura

Dettagli

<utente> <nome>mario</nome> <cognome>rossi</cognome> <saldo>1230</saldo> </utente> Tag di chiusura dato. Tag di apertura

<utente> <nome>mario</nome> <cognome>rossi</cognome> <saldo>1230</saldo> </utente> Tag di chiusura dato. Tag di apertura Interoperabilità e linguaggio XML Nel laboratorio precedente abbiamo visto come tramite BPMN sia possibile istruire un sistema informatico a gestire i flussi di attività. Si tratta però di attività interne

Dettagli

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da ARPA Fonte Dati Regione Toscana Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.0 Data emissione 06/08/13 Stato DRAFT 1 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 2 Sommario

Dettagli

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini. Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio

Dettagli

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it Automazione Industriale (scheduling+mms) scheduling+mms adacher@dia.uniroma3.it Introduzione Sistemi e Modelli Lo studio e l analisi di sistemi tramite una rappresentazione astratta o una sua formalizzazione

Dettagli

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere. UML e i Casi d USO I casi d uso specificano una sequenza di azioni che producono un risultato visibile agli attori del sistema. Essi nascono per fornire descrizioni delle capacità del sistema. I casi d

Dettagli

Guida all uso di Java Diagrammi ER

Guida all uso di Java Diagrammi ER Guida all uso di Java Diagrammi ER Ver. 1.1 Alessandro Ballini 16/5/2004 Questa guida ha lo scopo di mostrare gli aspetti fondamentali dell utilizzo dell applicazione Java Diagrammi ER. Inizieremo con

Dettagli

Programmi. Algoritmi scritti in un linguaggio di programmazione

Programmi. Algoritmi scritti in un linguaggio di programmazione Programmi Algoritmi scritti in un linguaggio di programmazione Sistema operativo:programma supervisore che coordina tutte le operazioni del calcolatore Programmi applicativi esistenti Sistemi di videoscrittura

Dettagli

Light CRM. Documento Tecnico. Descrizione delle funzionalità del servizio

Light CRM. Documento Tecnico. Descrizione delle funzionalità del servizio Documento Tecnico Light CRM Descrizione delle funzionalità del servizio Prosa S.r.l. - www.prosa.com Versione documento: 1, del 11 Luglio 2006. Redatto da: Michela Michielan, michielan@prosa.com Revisionato

Dettagli

Progettaz. e sviluppo Data Base

Progettaz. e sviluppo Data Base Progettaz. e sviluppo Data Base! Progettazione Basi Dati: Metodologie e modelli!modello Entita -Relazione Progettazione Base Dati Introduzione alla Progettazione: Il ciclo di vita di un Sist. Informativo

Dettagli

esales Forza Ordini per Abbigliamento

esales Forza Ordini per Abbigliamento esales Rel. 2012 Forza Ordini per Abbigliamento Scopo di questo documento è fornire la descrizione di una piattaforma di Raccolta Ordini via Web e la successiva loro elaborazione in ambiente ERP Aziendale.

Dettagli

Working Draft 0.5 (Telefonia)

Working Draft 0.5 (Telefonia) Working Draft 0.5 (Telefonia) Abstract Lo scopo del progetto è lo sviluppo di un SCP (Semantic Collaborative Portal), cioè un sistema di visualizzazione di una banca dati documentaria di grandi dimensioni

Dettagli

Scheda di collaudo Integrazione NoTIER

Scheda di collaudo Integrazione NoTIER Scheda di collaudo Integrazione NoTIER Ente Data Collaudo Versione Data Autore Cambiamenti apportati 1.0 18/03/2015 Intercent-ER Prima stesura 1.1 26/05/2015 Intercent-ER Integrate revisioni del Parer

Dettagli

UNIVERSITA DEGLI STUDI DI BRESCIA Facoltà di Ingegneria

UNIVERSITA DEGLI STUDI DI BRESCIA Facoltà di Ingegneria ESAME DI STATO DI ABILITAZIONE ALL'ESERCIZIO DELLA PROFESSIONE DI INGEGNERE PRIMA PROVA SCRITTA DEL 22 giugno 2011 SETTORE DELL INFORMAZIONE Tema n. 1 Il candidato sviluppi un analisi critica e discuta

Dettagli

Progettazione concettuale

Progettazione concettuale Progettazione concettuale Strategie top-down A partire da uno schema che descrive le specifiche mediante pochi concetti molto astratti, si produce uno schema concettuale mediante raffinamenti successivi

Dettagli

Il Gruppo di lavoro ha articolato l operazione in fasi:

Il Gruppo di lavoro ha articolato l operazione in fasi: La Camera dei deputati è stata tra le prime istituzioni italiane a realizzare, nella seconda metà degli anni novanta, una versione del proprio sito che, riferita ai tempi, poteva definirsi accessibile.

Dettagli

Università Politecnica delle Marche. Progetto Didattico

Università Politecnica delle Marche. Progetto Didattico Università Politecnica delle Marche Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica e dell Automazione Sede di Ancona Anno Accademico 2011-2012 Corso di Tecnologie WEB Docente prof. Alessandro

Dettagli

BASE DI DATI: introduzione. Informatica 5BSA Febbraio 2015

BASE DI DATI: introduzione. Informatica 5BSA Febbraio 2015 BASE DI DATI: introduzione Informatica 5BSA Febbraio 2015 Di cosa parleremo? Base di dati relazionali, modelli e linguaggi: verranno presentate le caratteristiche fondamentali della basi di dati. In particolare

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

Dettagli

Il web server Apache Lezione n. 3. Introduzione

Il web server Apache Lezione n. 3. Introduzione Procurarsi ed installare il web server Apache Introduzione In questa lezione cominciamo a fare un po di pratica facendo una serie di operazioni preliminari, necessarie per iniziare a lavorare. In particolar

Dettagli

Generazione Automatica di Asserzioni da Modelli di Specifica

Generazione Automatica di Asserzioni da Modelli di Specifica UNIVERSITÀ DEGLI STUDI DI MILANO BICOCCA FACOLTÀ DI SCIENZE MATEMATICHE FISICHE E NATURALI Corso di Laurea Magistrale in Informatica Generazione Automatica di Asserzioni da Modelli di Specifica Relatore:

Dettagli

Corso di Amministrazione di Reti A.A. 2002/2003

Corso di Amministrazione di Reti A.A. 2002/2003 Struttura di Active Directory Corso di Amministrazione di Reti A.A. 2002/2003 Materiale preparato utilizzando dove possibile materiale AIPA http://www.aipa.it/attivita[2/formazione[6/corsi[2/materiali/reti%20di%20calcolatori/welcome.htm

Dettagli

SPECIFICHE TECNICHE DI SISTEMA TITOLO DOCUMENTO

SPECIFICHE TECNICHE DI SISTEMA TITOLO DOCUMENTO DIREZIONE EMITTENTE CONTROLLO DELLE COPIE Il presente documento, se non preceduto dalla pagina di controllo identificata con il numero della copia, il destinatario, la data e la firma autografa del Responsabile

Dettagli

ControlloCosti. Cubi OLAP. Controllo Costi Manuale Cubi

ControlloCosti. Cubi OLAP. Controllo Costi Manuale Cubi ControlloCosti Cubi OLAP I cubi OLAP Un Cubo (OLAP, acronimo di On-Line Analytical Processing) è una struttura per la memorizzazione e la gestione dei dati che permette di eseguire analisi in tempi rapidi,

Dettagli

Manuale Servizio NEWSLETTER

Manuale Servizio NEWSLETTER Manuale Servizio NEWSLETTER Manuale Utente Newsletter MMU-05 REDAZIONE Revisione Redatto da Funzione Data Approvato da Funzione Data 00 Silvia Governatori Analista funzionale 28/01/2011 Lorenzo Bonelli

Dettagli

BDCC : Guida rapida all utilizzo

BDCC : Guida rapida all utilizzo BDCC : Guida rapida all utilizzo 1 Sommario 1. Funzionamento del sistema... 3 1.1 Cos è e cosa contiene la BDCC... 3 1.2 Meccanismi di funzionamento della BDCC... 3 1.3 Organizzazione di contenuti all

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

Regione Piemonte Portale Rilevazioni Crediti EELL Manuale Utente

Regione Piemonte Portale Rilevazioni Crediti EELL Manuale Utente Pag. 1 di 15 VERS V01 REDAZIONE VERIFICHE E APPROVAZIONI CONTROLLO APPROVAZIONE AUTORIZZAZIONE EMISSIONE NOME DATA NOME DATA NOME DATA A. Marchisio C. Pernumian 29/12/2014 M. Molino 27/02/2015 M. Molino

Dettagli

Ministero del Lavoro e delle Politiche Sociali

Ministero del Lavoro e delle Politiche Sociali Ministero del Lavoro e delle Politiche Sociali Prospetto Informativo on-line Standard tecnici del sistema informativo per l invio telematico del Prospetto Informativo Documento: UNIPI.StandardTecnici Revisione

Dettagli

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: Il modello relazionale I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: 1. forniscono sistemi semplici ed efficienti per rappresentare

Dettagli

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Scopo della lezione. Informatica. Informatica - def. 1. Informatica Scopo della lezione Informatica per le lauree triennali LEZIONE 1 - Che cos è l informatica Introdurre i concetti base della materia Definire le differenze tra hardware e software Individuare le applicazioni

Dettagli

TERM TALK. software per la raccolta dati

TERM TALK. software per la raccolta dati software per la raccolta dati DESCRIZIONE Nell ambiente Start, Term Talk si caratterizza come strumento per la configurazione e la gestione di una rete di terminali per la raccolta dati. È inoltre di supporto

Dettagli

IBM Software Demos The Front-End to SOA

IBM Software Demos The Front-End to SOA Oggi, imprese piccole e grandi utilizzano software basato sull'architettura SOA (Service-Oriented Architecture), per promuovere l'innovazione, ottimizzare i processi aziendali e migliorare l'efficienza.

Dettagli

Informatica per le discipline umanistiche 2 lezione 14

Informatica per le discipline umanistiche 2 lezione 14 Informatica per le discipline umanistiche 2 lezione 14 Torniamo ai concetti base dellʼinformatica. Abbiamo sinora affrontato diversi problemi: avere unʼidentità online, cercare pagine Web, commentare il

Dettagli

Inizializzazione degli Host. BOOTP e DHCP

Inizializzazione degli Host. BOOTP e DHCP BOOTP e DHCP a.a. 2002/03 Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Inizializzazione degli Host Un

Dettagli

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi Indice generale OOA Analisi Orientata agli Oggetti Introduzione Analisi Metodi d' analisi Analisi funzionale Analisi del flusso dei dati Analisi delle informazioni Analisi Orientata agli Oggetti (OOA)

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

ARCHITETTURA DI RETE FOLEGNANI ANDREA

ARCHITETTURA DI RETE FOLEGNANI ANDREA ARCHITETTURA DI RETE FOLEGNANI ANDREA INTRODUZIONE È denominata Architettura di rete un insieme di livelli e protocolli. Le reti sono organizzate gerarchicamente in livelli, ciascuno dei quali interagisce

Dettagli