Enterprise Application Integration Building the European Biodiversity through Service-Oriented Architecture Observation Network (EU BON) EU BON Project Building the European Biodiversity Network
Presentation Doñana Biological Station Spanish National Research Council EBD-CSIC Antonio García Camacho Software Engineer at EU BON antonio.garcia.camacho@csic.es @fagarciacamacho
Work Packages WP2: Data integration & interoperability Task 2.1. Design of information architecture for EU BON Task 2.4. Metadata registry and catalogue Task 2.5. European Biodiversity Portal Task 2.7. Informatics Task Force WP5: EU BON testing and validation of concepts, tools, and services.
EU BON Architecture GBIF LTER EU- Nomen GenBank Testing Sites Hosting Services GBIF API (REST) DEIMS services (REST) WSDL WSDL / REST Business Process 1.. N Metadata mapping processes Search Engine process Other processes EU BON external services (API) EU BON Enterprise Service Bus (ORCHESTRATION) GEOSS Catalogue of Services EU BON PORTAL EU BON Portal will be a client for the middleware architecture
Training session objectives Establish the reasons to choose EAI+SOA approach Introduce the concepts of SOA, EAI, ESB, BPMN Make a short demo of an ESB environment
EU BON software objectives in scratch collect integrate analyse observe retrieve store provide providers & testing sites taxonomy observation genetics Data metadata maps EBV s
EU BON Architecture: Search use case EU BON Biodiversity Portal Integration client Data provider 1 Users Dataset / Collections downloader Search engine Data Integration Services (in ESB) Web Services Interface Integration client Data provider 2 EU BON Data and Metadata Repository Integration client Data provider N How do we connect heterogeneous data sources?
Enterprise Application Integration CRM Databases EAI ERP Financial Legacy Enterprise Application Integration Computer systems architectural principles to integrate enterprise applications
Service-Oriented Architecture Scenario: We need to connect heterogeneous assets Different technologies: Java, PHP,.NET, SQL, etc. Different nature: file, e-mail, application, database, etc. Service-Oriented Architecture Approach to build loosely-coupled applications Business logic of the application is organized in modules Modules are encapsulated (black boxes) Each module has a public interface: In/out façade Defines a contract
Service-Oriented Integration Web Service languages/technologies: WSDL/SOAP, REST/JSON, REST/XML, JMS N-layer vs plain old 3-layer It is an approach Strict SOA analysis: everything is a service We are going to use EAI+SOA approach Surround each asset with a service interface Connect application using services
Service application typology New Service New Service Implementation Service Consumer Existing Application Wrapped Existing Service Service Interface Service Implementation Existing Application Existing Application New Service Composite Service
Web Services: WSDL vs REST WSDL/SOAP WSDL defines operations which represent logic SOAP (XML) for exchanging objects REST Exposes resources that represent data Multiple data formats (JSON is widely used) Strong typing, defines operations as a contract Supports other transfer protocols than HTTP POST, e.g., SMTP, JMS Lightweight, do not define a contract HTTP only, but using GET, POST, PUT, DELETE WSDL: Web Services Description Language SOAP: Simple Object Access Protocol REST: Representational State Transfer JSON: JavaScript Object Transfer
Point to point integration We need processes!!!
Integration topologies Custom or point-to-point Hub-and-spoke Integration frameworks Message Bus Enterprise Service Bus
What is an ESB? Enterprise Service Bus Provides binding components to easily connect assets WSDL, REST, JMS, databases, e-mail, ftp, files Message broker at a business-process level Service orchestration through standards Implements enterprise integration patterns Security, scalability, reliability. Advanced capabilities: business activity monitoring, complex event processing, etc.
How to orchestrate services? BPEL Business Process Execution Language BPMN Business Process Modeling Notation Enterprise integration frameworks Apache Camel JBoss Drools
WS-BPEL (Web Service) Business Process Execution Language Orchestration language for WSDL services OASIS & W3C Standard Based on XML WSDL/Services are the inputs and the outputs BPEL defines the business process using XML-based execution language. Every ESB must have a BPEL-engine.
BPMN Business Process Model and Notation Graphical notation to model business processes. Diagrams: process, collaboration, choreography. Easy to understand: flow-diagrams a bit more complex. Since BPMN 2.0 (2009) includes a XML-based execution language. Orchestration in BPMN 1.x: Model using BPMN. Map to execution language (BPEL) Orchestration using BPMN 2.0: Model using BPMN 2.0 Execute using BPMN 2.0 We can translate to other execution languages as well
Flow objects Events, activities, gateways Connecting objects BPMN elements Sequence flow, message flow, association Swim lanes Pool, lane Artifacts Data object, group, annotation
2nd level support Trouble Ticket System 1st level support BPMN Result? Issue received Open ticket edit 1st level ticket 2nd level issue Issue resolved Send mail to account manager Close ticket Result? edit 2nd level ticket Issue resolved Fix in Next release Insert issue into product backlog Figure 6.6: This is the only part of the whole collaboration we will execute in a process engine
Enterprise Integration Patterns Integration may be too complex. How to resolve common problems? Pattern: reusable solution to a commonly occurring problem within a given context. 65 patterns identified so far. Examples: Message Router Send to B if A.count > 20, and to B in other case Aggregator Concatenate A, B, C and send to D Splitter Message Translator Send A to B, C, D. Translate XML to CSV Message Filter Send messages only if A.count > 20
Apache Camel Open-source integration framework Implements a subset of the integration patterns Allows to define routing and mediation rules in a variety of domainspecific languages. Non-standard but could use standard languages or commonly used languages Example: Message Filter EIP using Fluent Builders (Java): RouteBuilder builder = new RouteBuilder() { public void configure() { errorhandler(deadletterchannel("mock:error")); Message Filter }; } from("direct:a").filter(header("foo").isequalto("bar")).to("direct:b");
Demo Integration using JBoss Fuse Service Works JBoss Fuse Service Works: former JBoss SOA Platform Swithchard: ESB in Jboss FSW Switchyard presents several orchestration engines: BPMN BPEL Apache Camel JBoss Drools
Thank you very much for your attention antonio.garcia.camacho@csic.es @fagarciacamacho This presentation includes icons made by Freepik from Flaticon.com