Ambiente di Invocazione Dinamica dei Servizi
Enrico Mussi - WP2
Sommario
Obiettivi
Architettura
Problemi aperti
Obiettivi
Realizzare un invoker per invocare Web services in modo dinamico e flessibile
Dato un servizio astratto, deve essere possibile sostituirlo un servizio concreto compatibile
Dato un servizio concreto, deve essere possibile sostituirlo a runtime con un servizio concreto compatibile
Process Orchestrator
Concrete Service Invoker
Wrapper
MAIS Service Registry
Match Maker
Behavioral Compatibility Engine
Service Onthology
Domain Onthology
Public UDDI Registry
Wrapper Repository
Private UDDI Registry
Semantic Publisher
Concretizator
MAIS Front end Environment
Platform Invoker
Negotiator
MA
IS R
efl
ec
tiv
e A
rch
ite
ctu
re
Web Services
Implementations
End User
MAIS back end e-service
environment
Transaction Manager
Recommendation Environment
User KM
User profiles
Mobile Service back end design environment
Process Evolution
Support tools
Process optimizer
MA
IS R
efl
ec
tiv
e A
rch
ite
ctu
re
MAIS Front end Environment
MAIS back end e-service
environment
•Text simplification
• location awareness tools
• time management
• ….Support tools
UAI design
Interaction Fct classification
Adaptive web application design
Adaptive UI generation
User profile
s
Adaptive context aware
web application
microDB
microDB design
Low power design solutions
Deployment tools Application development tools
Selezione dei servizi
Come si selezionano i servizi più adatti?
Il Concrete Service Invoker seleziona i servizi più adatti utilizzando altri moduli dell’architettura
Dato un servizio astratto, i servizi concreti compatibili vengono selezionati utilizzando il MAIS Registry che valuta: • WSDL• BPEL• QOS
Dato un insieme di servizi concreti, il loro ordinamento viene fatto utilizzando il Concretizator che considera:• QOS • Informazioni di contesto
Il Concrete Service Invoker fornisce ai moduli tutte le informazioni necessarie
Architettura del Concrete Service Invoker
Client SOAP
Flexible WS 1 Flexible WS n
Service Selector Context Manager
MAIS Registry
Concretizator
Service Invoker Wrapper Manager
CSI
Web Services Implementations
Flexible Web Services
Utilizzati per rendere invocabili i servizi astratti
Vengono costruiti completando la descrizione astratta con le informazioni di binding
Il binding permette di legare un servizio astratto ad una particolare istanza di Concrete Service Invoker
Permettono di:
• Utilizzare client SOAP standard per interagire con la piattaforma MAIS
• Ripartire il carico su più Concrete Service Invoker
Service Selector
Seleziona i servizi concreti utilizzando il registry (NON se si esegue un processo)
Attraverso il Context Manager rileva il contesto utente al momento dell’invocazione di un servizio flessibile
Trasferisce il contesto utente al Concretizator e riceve la lista ordinata dei servizi concreti
Durante l’invocazione trasferisce il controllo al Service Invoker
Se il Service Invoker rileva malfunzionamenti nell’invocazione di un servizio, il Service Selector lo sostituisce con il servizio successivo nella lista
Se durante l’invocazione il contesto utente cambia richiede al Concretizator di ricalcolare la lista ordinata
Service Selector
1. Cattura l’invio di un messaggio ad un flexible service
2. Se NON si tratta dell’esecuzione di un processo, cerca i servizi concreti compatibili nel registry e li trasferisce al concretizator
3. Rileva il contesto utente attraverso il Context Manager
4. Trasferisce il contesto utente al Concretizator
5. Riceve dal Concretizator la lista ordinata dei servizi concreti
6. Delega l’invocazione del servizio al Service Invoker
7. In caso di malfunzionamenti, il Service Invoker notifica il problema e il Service Selector sostituisce il servizio con quello successivo
8. Se il contesto utente subisce modifiche il processo riparte dal punto 4
Context Manager
Context Manager
MAIS Reflective Architecture
Platform Invoker Platform Invoker
Utilizza la piattaforma riflessiva per gestire il contesto degli utenti
Il modello del contesto è condiviso dal Context Manager e dal Platform Invoker
Wrapper Manager
Generato in modo semiautomatico
Permette di gestire i wrapper
Per ogni coppia di servizi <astratto-concreto> esiste un wrapper
Traduce I parametri di input/output
Orchestra i servizi composti generati dal MAIS Registry
Interfaccia di un Wrapper
public interface WrapperRPC extends Wrapper {
public ArrayList getInputEncoding(String concreteOperation) throws IllegalParameterException;
public ArrayList getOutputEncoding(String concreteOperation) throws IllegalParameterException;
public ArrayList getInputOutputEncoding(String concreteOperation) throws IllegalParameterException;
public RegisterUnit getResponseEncoding(String concreteOperation) throws IllegalParameterException;
public ParameterUnit getResponseParameter(String concreteOperation) throws IllegalParameterException;
public ArrayList getConcreteInput(String concreteOperation, Collection input) throws IllegalParameterException;
public ArrayList getConcreteOutput(String concreteOperation, Collection input) throws IllegalParameterException;
public ArrayList getAbstractOutput(String concreteOperation, Object response, Collection concreteOutput) throws IllegalParameterException;
public boolean isVoid(String concreteOperation);}
Service Invoker
Invoca i servizi concreti richiesti dal Service Selector
Per l’invocazione utilizza un wrapper ottenuto dal Wrapper Manager
Monitora l’invocazione del servizio e in caso di malfunzionamenti avvisa il Service Selector
Context Manager
Wrapper
Web Services Implementations
Altri compiti del CSI
Gestione degli utenti
Gestione delle attività
Aspetti da definire
Struttura dei wrapper
Comunicazione con I moduli di orchestrazione
Comunicazione con il Concretizator
Comunicazione con il MAIS Registry