Dr. Claudio Guidi Language and concepts Jolie is a new programming language based upon a new programming paradigm: the service oriented one Jolie provides a concrete technology for thinking and organizing distribute applications following new concepts and patterns Practice and theory Jolie provides an easy means for programming services Jolie provides simple mechanisms for composing services into SOAs Jolie allows for the modelling of information processes by means of workflows Jolie is based upon a formal theory (SOCK) which allows for the development of mathematical machineries and tools for property verification Academy and Industry Jolie is growing within the Academy. It provides a concrete basis for reasoning about open issues in distributed application within the service oriented area Jolie is growing within the industry. It is exploited by italianaSoftware s.r.l. as a technology for developing distributed applications Research diagram reasoning Real SOAs formalization SOCK Lacks and redudancy developing SOA Design implementation emerging patterns JOLIE emerging concepts key concepts: Service Behaviour: it describes how a service session behaves Engine: it manages sessions Interface: it describes the service Ports: they represent the access points where the service is deployed Network key concepts: Behaviour The behaviour of a service is the description of the service activities composed in a workflow. • Communication activities • OneWay • Request-Response • Notification • Solicit-Response • Functional activities • data manipulation • Fault activities • faults • termination • compensation key concepts: Session A service session is an executing instance of a service behaviour equipped with its own local state. Local state In general a session is identified by its own local state or a part of it. The part of the local state which identifies a session can be programmed and it is called correlation set. key concepts: Engine An engine is a machinery able to manage service sessions by providing session creation, state support, message routing and session execution capabilities. State support State creation: • when a message is received on a session initiator • when a user manually starts it: firing session • local state • global state • storage state • Message routing • Session execution • concurrent • sequential Writing a service with Jolie execution { concurrent } Service engine execution modality cset { id : request.id } Correlation set definition interface myInterface { OneWay: login RequestResponse: get_data throws data_fault } inputPort myPort { Protocol: http Location: “socket://localhost:2000” Interfaces: myInterface } main { login( request ) ; get_data( request )( response ) { response.data = “your data” + request.id } } Interface definition inputPort definition Main code Composition: Embedding Service container Local connection Composition: Redirection M/? M /A A /B B /C C Composition: Aggregation op1 op2 op3 op1 op1@A op2 op1@M M op3 A B C SoS Pattern M B B B B All the embedded services have the same behaviour but they differ for the resource name given at the level of M. Each client can have an enitire custom service as a resource to access. Business Scenario ERP CRM Administration BPM Access Control Web Portal The cost of the organization First step: introducing services Second step: introducing orchestrators Third step: completing connections ERP CRM Administration BPM Access Control Web Portal Strategic advantages Jolie is easy to use Jolie is easy to learn Jolie implements both services and orchestrators Jolie can be easily integrated within Web 2.0 applications Jolie and Web 2.0 applications A Jolie service can be deployed as a Web Server (Leonardo) It is possible to integrate Google Web Toolkit client applications with Leonardo It is possible to directly access a SOA with a browser interface without using other frameworks. Jolie contributors • Claudio Guidi and Fabrizio Montesi • Mila Dallapreda, Maurizio Gabbrielli, Roberto Gorrieri , Ivan Lanese, Jacopo Mauro , Roberto Lucchi, Davide Sangiorgi, Gianluigi Zavattaro, • Francesco Bullini and Balint Maschio Current research activities • Workflow graphical Editor (Claudio Guidi and Alessandro Sperduti @UniPD) • Choreography and behavioural types (Fabrizio Montesi and Marco Carbone @ITU) • Session management and correlation sets (Jacopo Mauro and Maurizio Gabbrielli @UniBo) • SmartAggregation (Claudio Guidi and Mila Dallapreda @Unibo&iS) • SOA Monitoring (Paola Mello @Deis-Unibo) Current business activities Jolie is currently exploited by italianaSoftware s.r.l. In August 2010, italianaSoftware joined the Azimut Group: • more than 10 companies • 26.000.000 euros of work in 2010 • System integration • SAP integration • Web 2.0 applications Thanks!