Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/

Frameworks di sviluppo Java EE e SOA I progetti Spago e Spagic

Testimonianza di: Gianfranco Boccalon [email protected]

1 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/ Introduzione ai Framework

• COS’E’ UN FRAMEWORK Un framework è un’applicazione “semi-completa”, riutilizzabile che può essere specializzata per produrre applicazioni specifiche • VANTAGGI – Modularità

– Riusabilità

– Estensibilità

– Inversione del Controllo

2 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/ Spago

• DEFINIZIONE: SPAGO è un framework J2EE, sviluppato secondo il pattern architetturale MVC , che fornisce una soluzione per lo sviluppo di applicazioni “multicanale/multiprotocollo ” e l’integrazione di servizi. Consente lo sviluppo di applicazioni Web, l’integrazione con infrastrutture esistenti e la pubblicazione di servizi su canali diversi.

3 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/ Confronto con altri framework

Esistono molti framework Open Source per lo sviluppo di applicazioni Web, alcuni dei quali molto specializzati su determinate fasi dello sviluppo (disegno dell’interfaccia grafica, sviluppo della logica di business, etc).

Java Server Faces

4 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/ Il futuro di Spago

 L’evoluzione di Spago è inoltre indotta dai nuovi progetti che ne faranno uso (il primo è SpagoBI, una piattaforma per la Business Intelligence)

 Esiste una roadmap evolutiva di Spago sul sito http://spago.eng.it

5 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi Goals A.A. 2007-2008 www.math.unipd.it/~ruffatti/

Spagic: a Free Open Source SOA/BPM Enterprise Integration Platform

 Key points Business Actor  SOA/BPM Governance  Pragmatic approach to end user’s E projects through the best choice of the ls n t o e single engines/components o r T p r l i a s u e

is M  Capabilities V o l n a  Efficiency of all the actors involved in Component it ic o n r integration processes h Services & c  Enterprise Monitoring & Management e M T a n & a ic g t e ly m a e n BPM ESB n A t

Analytic Actor SOA Governance Technical Actor

6 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica The reference model: Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/ Process Integration Platform Businesslogic Services Catalog Busin. Busin. Busin. Busin. Busin. Layer Service Service Service Service Service 1 2 3 … … UDDI/EBxml nerto ae ESB Layer- Integration

WS/SOAP FILE FTP JMS

TCPIP Communication layer …..

BUS Monitoring & Management

External System BPMLayer

LightLight OrchestrationOrchestration HumanHuman DataData OrchestrationOrchestration ActivityActivity IntegrationIntegration SA BPEL WF ETL

7 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica SOA/BPM platforms Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/ Spagic Service Manager

 Nova Orchestra  Nova Bonita  JBPM (Workflow & BPEL)  JBI SA

 ServiceMIX BPEL Workflow  Petals ESB ESB Communication  JBossESB Node node Layer ETL JBI & SCA SA  Custom (e.g. Listener Spring, Spago., ..)

BPM Layer Listener SOA/ESB Layer

 Apache ODE  ActiveBPEL MetaDB  Talend Open Studio  SCA SA (Tuscany)

 Pragmatic approach : different products/technologies available

8 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Actors’ Efficiency: Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/ Spagic Visual Tools

Business logic implementation  Business Process Modeling Notation (BPMN) Insert information for monitoring and management  BPMN

Technical Processes Definition & Deploy Rules, policy,.. Spagic STP MetaDB  JBI IM  SCA  BPEL JBI SA  Workflow SCA WF BPEL ETL  ETL Editor Designer Design. Design Deploy Developer Implementation  Custom code  Scripting - rules definition (rules engine)  Mapping & transformation Custom Mapping & code transform.

 SOA/BPM Governance : Support Collaborative Activities  Pragmatic approach : bridge from BPMN to different and alternative engines

9 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Goal: Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/ Enterprise Monitoring

 Real Time SOA/BPM Management and Runtime Governance  SLA Monitoring: SLA correlates system, process and business

MetaDB (real time)

Data Warehouse

 SOA/BPM Governance : Support Collaborative Activities  Pragmatic approach : Enterprise Monitor with support of different engines/technologies

10 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi Spagic & A.A. 2007-2008 www.math.unipd.it/~ruffatti/ Eclipse STP Intermediate Model  Bridges different SOA Platforms  Facilitates interoperability between editors Analytics Analytics

BPMN SCA …… Editor Editor Editor

Spagic Studio Enterprise Meta Model Meta Model Monitor

MetaDB Eclipse Modeling Framework

SCA Spring Workflow ETL BPEL JBI Thirdparties Thirdparties plugin plugin plugin plugin plugin plugin

SCA Workflow Talend Eclipse Editor Editor Open St. BPEL editor

SCA J2EE Workflow J2EE/JBI BPEL JBI Container Container Engine Container Engine Container

11 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi Spagic collaboration & partnership A.A. 2007-2008 www.math.unipd.it/~ruffatti/

MetaDB (real time)  Eclipse IM Data Warehouse

 ServiceMIX

BPEL Workflow ESB ESB Communication Node node Layer ETL JBI & SCA SA  PeTALS Listener

BPM Layer Listener SOA/ESB Layer

 JBossESB  Nova Orchestra  Talend Open Studio  JBPM (BPEL &  Nova Bonita Workflow)  Jasmine

12 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A.l The 2007-2008 Agile ESB www.math.unipd.it/~ruffatti/ l Apache Servicemix

Standards Based Flexible Reliable The Agile ESB Breadth of connectivity

 Standards based  Flexible  Reliable  Breadth of Connectivity

Courtesy of IONA Technologies

13 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A.l Java 2007-2008 Businesswww.math.unipd.it/~ruffatti/ Integration l Apache Servicemix

 Standards Based Flexible Reliable Java Business Integration Breadth of connectivity  Integration Systems  Plug-In Components  WSDL  Decoupling

Courtesy of IONA Technologies

14 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A.l Java 2007-2008 Businesswww.math.unipd.it/~ruffatti/ Integration l Apache Servicemix

 Standards Based Flexible Reliable JBI 1.0: architecture Breadth of connectivity

Courtesy of IONA Technologies

15 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A.l Java 2007-2008 Businesswww.math.unipd.it/~ruffatti/ Integration l Apache Servicemix

 Standards Based Flexible Reliable JBI 1.0: WSDL messaging Breadth of connectivity model

 Abstract model  Concrete model

 Service providers  Service Consumers

Courtesy of IONA Technologies

16 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A.l Java 2007-2008 Businesswww.math.unipd.it/~ruffatti/ Integration l Apache Servicemix

 Standards Based Flexible Reliable JBI 1.0: Normalized Breadth of connectivity Message Router

 Normalized Message  Runtime Endpoint Activation  Delivery Channel  Service Invocation using MEPs  Addressing Endpoints

Courtesy of IONA Technologies

17 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A.l Java 2007-2008 Businesswww.math.unipd.it/~ruffatti/ Integration l Apache Servicemix

 Standards Based Flexible Reliable JBI 1.0: Invocation Breadth of connectivity example

Courtesy of IONA Technologies

18 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A.l Java 2007-2008 Businesswww.math.unipd.it/~ruffatti/ Integration l Apache Servicemix

 Standards Based Flexible Reliable JBI 1.0: Packaging Breadth of connectivity

 META-INF/jbi.xml  Components  Shared Libraries  Service Units  Service Assemblies

Courtesy of IONA Technologies

19 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A.l Reliable 2007-2008 www.math.unipd.it/~ruffatti/ l Apache Servicemix

Standards Based Flexible  Reliable Reliable Breadth of connectivity  QoS attributes  Flows ● Sync / Async ● ST ● Persistent ● SEDA ● Transactional ● JMS ● Clustered ● JCA

20 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A.l Breadth 2007-2008 of Connectivitywww.math.unipd.it/~ruffatti/ l Apache Servicemix

Standards Based Flexible Reliable Breadth of Connectivity  Breadth of connectivity  Binding Components ● http (http/soap), jms (jms/soap) ● file, ftp, xmpp ● Email, RSS, Jabber…  Service Engines ● Bean, EIP, Camel, JAX-WS, Drools, Quartz, Saxon, Script, WS- Notification  Third Party Components ● ODE, CICS, Corba

Courtesy of IONA Technologies

21 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A.l Context 2007-2008 of thewww.math.unipd.it/~ruffatti/ project – Goals l Belgian Success Story

 Context  Goals Architecture Development ● Improve communication between Belgium’s French Community Administration and other actors Stress Tests ● Implement SOA  Use Case : pupils registration  Before : various communication ways (paper documents, mails, excel sheets, …)

Courtesy of IONA Technologies 22 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A.l Asynchronous 2007-2008 www.math.unipd.it/~ruffatti/ mode l Belgian Success Story

Context  Asynchronous communication  Architecture ● JMS between SMX-CAS and SMX-WORK Development Administration ● polling to retrieve responses Stress Tests

Courtesy of IONA Technologies

23 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/ Riferimenti

 http://spago.ow2.org  http://spagic.org  Mailing list: [email protected]  Mailing list: [email protected]  My address: [email protected]

24 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/ Esercitazioni Le esercitazioni consistono nel contribuire, tramite invio di codice, a estensioni di Spago o correzioni di errori conosciuti. Tutte le richieste di miglioramento e di correzione sono censite nel tracking system (JIRA) di Spagic, a cui si accede previa registrazione (libera).

25 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/ Tracking System Il tracking system di Spagic è accessibile all’URL http://spagoworld.org/ecm/faces/public/guest/, sotto la voce Tracker. Il sito è accessibile dopo aver effettuato il login.

26 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/ Tracking System Nel tracking system sono censite tutte le richieste di miglioramento o di correzione. Non tutte le richieste sono oggetto delle esercitazioni.

27 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/ Esercitazioni Le possibili esercitazioni sono censite sotto la voce Project Summary->Open, il che significa che sono chiari i requisiti ma non è ancora stata assegnata l’attività.

28 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/ Esercitazioni Le possibili esercitazioni sono le seguenti:

• SPAGIC-131: Optimize the creation of the queue connection in the class AuditingExchangeASyncListener: it should performed only once, since it supports concurrent use (abbastanza semplice)

• SPAGIC-106: Add to the process instance properties the server location where the instance is executing (mediamente complessa)

• SPAGIC-102: If the database is not available, the ODE listener doesn't allow the process execution (molto semplice)

• SPAGIC-77: Implement Synchronizer as Servicemix-bean component (molto complessa)

29 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/

30 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/

31 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/

32 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/

33 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/ Esercitazioni

Il codice può essere scaricato dal forge di OW2: http://forge.objectweb.org/projects/spagic

o direttamente dall’SVN di OW2: svn://svn.forge.objectweb.org/svnroot/spagic

Il codice presente sull’SVN di Eclipse non è necessario per le esercitazioni: svn://dev.eclipse.org/stp/org.eclipse.stp.model

34 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic] Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi A.A. 2007-2008 www.math.unipd.it/~ruffatti/ Esercitazioni Deve essere inviata la patch contenente il codice della contribuzione: la patch è un file di testo creato automaticamente che contiene le differenze tra il codice “ufficiale” e il codice contenente la contribuzione. Viene creata con gli strumenti dell’ambiente di sviluppo.

I commenti nella contribuzione devono essere in inglese.

Se possibile deve essere mantenuta la retrocompatibilità della contribuzione con il codice esistente sviluppato con Spagic.

35 2.5 Italia License [Framework di sviluppo – I Progetti Spago e Spagic]