Elena Quarantotto, Telecom Italia/IT Innovation 1 Mini-Scuola WOA 2009 WADE: Una piattaforma open...

Post on 01-May-2015

217 views 1 download

Transcript of Elena Quarantotto, Telecom Italia/IT Innovation 1 Mini-Scuola WOA 2009 WADE: Una piattaforma open...

Elena Quarantotto, Telecom Italia/IT Innovation 1

Mini-Scuola WOA 2009WADE: Una piattaforma open source per workflow e

agenti

Elena Quarantotto (Telecom Italia)

Elena Quarantotto, Telecom Italia/IT Innovation 2

► Piattaforma JADE – principali caratteristiche

► Piattaforma WADE – workflow e amministrazione

► Creazione di applicazione di esempio WADE-based con l’ausilio di WOLF

Agenda

Elena Quarantotto, Telecom Italia/IT Innovation 3

JADE Java Agent DEvelopment framework

Elena Quarantotto (Telecom Italia)

Elena Quarantotto, Telecom Italia/IT Innovation 4

JADE

► Java Agent DEvelopment framework

► Framework (librerie + runtime) che facilita lo sviluppo di applicazioni distribuite basate sul paradigma ad agenti

► Interamente scritto in Java

► Puo’ essere eseguito su PC, server e telefonini (MIDP 1.0)

► Conforme allo Standard FIPA

► Distribuito in Open Source con licenza LGPL

► Utilizzato in Telecom Italia come piattaforma per 2 applicazioni mission critical nel dominio OSS

► “Developing Multi Agent Systems with JADE”► pubblicato da J.Wiley nel Febbraio 2007

Elena Quarantotto, Telecom Italia/IT Innovation 5

Principali caratteristiche

INFORM

REQUEST PROPOS

E

AGREE

REFUSE

► Meccanismi di discovery publish/subscribe

► Gestione e monitoraggio del ciclo di vita

► Mobilita’

► Fault tolerance

► Ricca suite di tool grafici per la gestione della piattaforma

► Facile da integrare con sistemi esterni

► Astrazione di Agenti e Behaviour (task eseguito da un agente)

► Distribuzione trasparente delle componenti (agenti) su un vasto insieme di device

► Comunicazione Peer-to-peer basata sullo scambio asincrono di messaggi

Elena Quarantotto, Telecom Italia/IT Innovation 6

La Comunita’

► Il progetto Open Source

► Primo rilascio nel 2000

► http://jade.tilab.com

► Dimensioni:

► > 170.000 downloads

► > 3000 sottoscrizioni alla mailing list

► Licenza LGPL

► Versione corrente 3.7 rilasciata a fine giugno

► Il Board di JADE (2003)

► Missione: promuovere, governare e implementare le evoluzioni di JADE

► Tra i membri Telecom Italia (leader) e France Telecom

Downloads

0

5000

10000

15000

20000

25000

30000

35000

2000 2001 2002 2003 2004 2005 2006 2007 2008

Year

Elena Quarantotto, Telecom Italia/IT Innovation 7

Architettura

JADE

Container

ContainerMain

ContainerPLATFORM

AMS DF

PLATFORM 2JADE

AMS DF

Main Container

JADE JADE

host1

host2 host3

host4

Passaggio di oggetti

Protocollo Proprietario

FIPA(http/iiop)

Elena Quarantotto, Telecom Italia/IT Innovation 8

Il modello di comunicazione► Basato sullo scambio asincrono di messaggi

A1 A2

Prepara il messaggio per A2

Prende il messaggio dalla coda dei messaggi e lo processa

JADE distributed runtime

(PROPOSE :sender A1 :receiver A2 :content “Cinema evening” :language “English” :ontology “Cinema-ontology” )

► Il formato del messaggio e’ conforme al linguaggio ACL (FIPA)

Elena Quarantotto, Telecom Italia/IT Innovation 9

FSMBehaviourSequentialBehaviour

ParallelBehaviour

Esecuzione e composizione dei Task

► Un agente nel suo ciclo di vita puo’ eseguire behaviours o assumere lo stato inattivo (jade.core.behaviours.Behaviour)

► Simple behaviours► Metodo action(): Determina il lavoro del task► Metodo done(): Determina la terminazione del task

► Composite behaviours

B1

B2

B3

B1 B2 B3

B1

B2B4

B3

Elena Quarantotto, Telecom Italia/IT Innovation 10

Il servizio di pagine gialle

A1: - serviceX - serviceY

A2: - serviceZ

A3: - serviceW - serviceK - serviceH

Servizio di Pagine Gialle

Pubblicazione dei servizi

esposti

A1

A2

A3

A4

A5

A6

Ricerca degli agenti che espongono

un determinato

servizio

Utilizza il servizio richiesto

DF

Elena Quarantotto, Telecom Italia/IT Innovation 11

WADE Workflows and Agents Development Environment

Elena Quarantotto (Telecom Italia)

Elena Quarantotto, Telecom Italia/IT Innovation 12

► E’ un’estensione di JADE

► Un’applicazione WADE-based e’ ancora un’applicazione JADE-based

► Tutte le features di JADE sono disponibili in WADE

► Aggiunge a JADE

► La possibilita’ di definire i task degli agenti secondo la metafora dei workflow

► Componenti e meccanismi che facilitano l’amministrazione di applicazioni WADE-based che per loro natura sono distribuite

► I due aspetti possono essere usati separamente

► Non e’ un unico grosso workflow engine, ma sono dei “micro-workflow engines” racchiusi negli agenti

► Open Source da Maggio 2008

► http://jade.tilab.com/wade

► Fine Giugno rilascio di WADE 2.5

► Tutorial disponibile all’url http://jade.tilab.com/wade/doc/tutorial/WADE-Tutorial.pdf

WADE

Elena Quarantotto, Telecom Italia/IT Innovation 13

Workflow► Un workflow e’ la definizione formale di un processo in termini di

attivita’ da eseguire, relazioni tra di loro che specificano il flusso di esecuzione, e condizioni di attivazione e terminazione

► Rappresentazione grafica, facilmente comprensibile sia da esperti di dominio che da programmatori

► Auto-documentativi► Meccanismi automatici per facilitare il

monitoraggio del sistema e l’investigazione di problemi

► Procedure di rollback automatiche a fronte di fallimenti in caso di esecuzione in contesti transazionali

Elena Quarantotto, Telecom Italia/IT Innovation 14

WOLF (WOrkflow LiFe cycle management environment)L’ambiente grafico di sviluppo

Eclipse plugin

Configurazione e gestione di un progetto

per lo sviluppo di un’applicazione WADE-

based

Configurazione e gestione di un progetto

per lo sviluppo di un’applicazione WADE-

based

Creazione ed aggiornamento grafico

dei workflow

Creazione ed aggiornamento grafico

dei workflow

Workflow permettono la condivisione delle logiche

con gli esperti di dominio

Workflow = Vista grafica e codice della classe

sono allineati

Workflow = Vista grafica e codice della classe

sono allineati

Utilizzatori target:

Sviluppatori

Elena Quarantotto, Telecom Italia/IT Innovation 15

► Associare la natura WADE ad un progetto JAVA in eclipse → si attivano le funzionalita’ offerte da WOLF

► Configurazione del progetto WADE

► Scelta della tipologia di applicazione: “JADE plus Workflow” o “Full Featured WADE”

► Aggiunta delle librerie WADE al classpath del progetto (fornite direttamente da WOLF o esterne)

► Aggiunta della cartella di configurazione WADE al classpath di progetto

Progetti WADE-based

Elena Quarantotto, Telecom Italia/IT Innovation 16

Classe Workflow

public class FailCaffeWf extends WorkflowBehaviour { .... private void defineActivities() { registerActivity(new CodeExecutionBehaviour(this, “Controlla”) , INITIAL); registerActivity(new CodeExecutionBehaviour(this, “Prepara”)); registerActivity(new CodeExecutionBehaviour(this, “Errore”), FINAL); registerActivity(new CodeExecutionBehaviour(this, “Versa”) , FINAL); } .... private void defineTransitions() { registerTransition(new Transition(this, “AbbastanzaCaffe”), “Controlla”,

“Prepara”); registerTransition(new Transition(), “Controlla”, “Errore”); registerTransition(new Transition(), “Prepara”, “Versa”); } … protected void executeControlla() { } protected void executePrepara() { } protected void executeVersa() { } protected void executeErrore() { } protected boolean checkAbbastancaCaffe() { } ....}

FailCaffeWf

Prepara

Controlla

Versa

Errore

Abbastanza Caffe

Elena Quarantotto, Telecom Italia/IT Innovation 17

► Workflow classe Java che estende WorkflowBehaviour

► Activity

► metodo void della classe del workflow

► Behaviour registrato nell’oggetto workflow, responsabile di invocare il metodo dell’activity passando i parametri in base al tipo di activity

► Transition

► Metodo booleano della classe del workflow che implementa la condizione (se presente)

► Transition registrata nell’oggetto workflow, responsabile di invocare il metodo associato alla condizione

► Formal Parameters Field della classe Workflow con l’annotation @FormalParameter

► Informazioni di layout (es. posizione delle activity, routing points delle transizioni, …) definite nell’annotation @WorkflowLayout

Elementi della classe Workflow

Elena Quarantotto, Telecom Italia/IT Innovation 18

► CodeActivity

► Il metodo dell’activity contiene direttamente il codice che deve essere eseguito

► WebServiceActivity

► Il metodo dell’activity invoca un web service

► Puo’ essere statico o dinamico (non necessita l’import del WSDL → la generazione di classi)

► SubflowActivity

► Il metodo dell’activity invoca l’esecuzione di un altro workflow

► Puo’ essere sincrono o asincrono

► La scelta dell’agente a cui delegare il workflow puo’ essere effettuata a runtime

► SubflowJoinActivity

► Il metodo dell’activity sospende l’esecuzione del workflow in attesa del completamento di uno o piu’ workflow asincroni partiti precedentemente

Tipi di Activity

Elena Quarantotto, Telecom Italia/IT Innovation 19

Ereditarieta’ dei WorkflowFailCaffeWorkflow

Prepara

Controlla

Versa

Errore

Abbastanza Caffe

AggiungiZucchero

CaffeZuccheratoWf

public class CaffeZuccheratoWf extends FailCaffeWf { .... private void defineActivities() { changeActivityOrder(“Versa”, INTERMEDIATE); registerActivity(new CodeExecutionBehaviour(this,

“AggiungiZucchero”) , FINAL); } .... private void defineTransitions() { registerTransition(new Transition(), “Versa”,

“AggiungiZucchero”); } … protected void executeAggiungiZucchero() { } …}

La classe del workflow esteso contiene solo le differenze con il

workflow base

La classe del workflow esteso contiene solo le differenze con il

workflow base

Elena Quarantotto, Telecom Italia/IT Innovation 20

WADE-application startupwade-home |---startMain.bat/sh |---... |---cfg/ |---main.properties |---types.xml |---... |---configurations/ |---sample.xml |---... |---lib/ |---wade.jar |---JadeLeap.jar |... |---log/ |---projects/ |---...

failcaffe-home |---cfg/ |---main.properties |---lib/ |---failcaffe.jar

|---failcaffe.properties

# FailCaffe project property fileproject-home=D:/develop/FailCaffe

platform-id=FAILCAFFEagents=p1:com.tilab.wade.performer.WorkflowEngingAgent

wade-home> startMain failcaffe