Open Technologies for Integration (IBM InterConnect - Session 1483)
-
Upload
matt-lucas -
Category
Technology
-
view
546 -
download
4
Transcript of Open Technologies for Integration (IBM InterConnect - Session 1483)
© 2015 IBM Corporation
AEC-1483 Open Technologies for Integration John Hosie @hosie31504 [email protected]
IBM Integration Bus – Session Highlights • Monday
• 11.00am: What’s New in IIB (Mandalay Ballroom B) • 12.15pm: WESB Conversion (Surf C) • 2.00pm: Meet The IIB Experts (Forum 1) • 2.00pm: Intro - The Business Value of IIB (Surf C) • 3.30pm: Technical Introduction to IIB (Surf C) • 5.00pm: Integration in Healthcare (Surf C)
• Tuesday • 8.00am: IIB and Cast Iron (Surf C) • 9.30am: IIB in the Cloud (Surf C) • 9.30am: IIB Customer Feedback Roundtable (Tropics A) • 11.00am: Effective Administration in IIB (Surf C) • 12.30pm: IIB Designing for Performance (Mandalay Ballroom B) • 2.00pm: Integration Keynote • 3.30pm: Effective Application Development (Surf D) • 5.30pm: Flexible MQ Topologies (Surf C) • 5.30pm: IIB Customer Feedback Roundtable (Tropics A)
• Wednesday • 8.00am: IIB APIs, Services, Applications and Libraries (Surf C) • 9.30am: Open Technologies for Integration(Surf C) • 11.00am: Integration in Manufacturing (Surf C) • 12.30pm: Integration Your Way (Surf C) • 2.00pm: IBM Integration Bus Lab (South Seas G)
• Thursday • 10.30am: IIB Customer Feedback Roundtable (Tropics A)
1
IBM Integration Bus – Session Highlights • Monday
• 11.00am: What’s New in IIB (Mandalay Ballroom B) • 12.15pm: WESB Conversion (Surf C) • 2.00pm: Meet The IIB Experts (Forum 1) • 2.00pm: Intro - The Business Value of IIB (Surf C) • 3.30pm: Technical Introduction to IIB (Surf C) • 5.00pm: Integration in Healthcare (Surf C)
• Tuesday • 8.00am: IIB and Cast Iron (Surf C) • 9.30am: IIB in the Cloud (Surf C) • 9.30am: IIB Customer Feedback Roundtable (Tropics A) • 11.00am: Effective Administration in IIB (Surf C) • 12.30pm: IIB Designing for Performance (Mandalay Ballroom B) • 2.00pm: Integration Keynote • 3.30pm: Effective Application Development (Surf D) • 5.30pm: Flexible MQ Topologies (Surf C) • 5.30pm: IIB Customer Feedback Roundtable (Tropics A)
• Wednesday • 8.00am: IIB APIs, Services, Applications and Libraries (Surf C) • 9.30am: Open Technologies for Integration (Surf C) • 11.00am: Integration in Manufacturing (Surf C) • 12.30pm: Integration Your Way (Surf C) • 2.00pm: IBM Integration Bus Lab (South Seas G)
• Thursday • 10.30am: IIB Customer Feedback Roundtable (Tropics A)
2
#IIBSMILE or
#IIBFROWN ?
Agenda
3
The nature and benefits of
open source
Open technologies for
integration
Features in IBM Integration Bus to support and
encourage open source
Nature of open source software • Open source definition
• 10 point list of guidelines
4
Nature of open source software • Open source definition
1. Free Redistribution 2. Source Code 3. Derived Works 4. Integrity of The Author's Source Code 5. No Discrimination Against Persons or Groups 6. No Discrimination Against Fields of Endeavor 7. Distribution of License 8. License Must Not Be Specific to a Product 9. License Must Not Restrict Other Software 10. License Must Be Technology-Neutral
5
Nature of open source software
Free Software definition
6
Free software” means software
that respects users' freedom and community.
Nature of open source software
Free Software definition
7
Free software” means software
that respects users' freedom and community.
the users have the freedom to run, copy, distribute,
study, change and improve the
software
Nature of open source software
Free Software definition
8
Free software” means software
that respects users' freedom and community.
the users have the freedom to run, copy, distribute,
study, change and improve the
software
think of “free” as in “free speech,”
not as in “free beer”
9
Community and Collaboration
10
License and copyright
11
Branching, Forking and Cloning
Benefits of open source
12
Early access to new product capabilities
Expert collaboration from a diverse community
Extend product capabilities to suit your specific need
Open technologies for Integration
13
iib-maven-plugin
mqtt-client-connector
IIB-FEM
event-filter-pattern
Integration-service-tutorial
chef-cookbooks
14
15
16
17
18
19
IBM product capabilities to support open source
• User defined node API • Connectors framework • Conversion framework • REST API for administration • Patterns authoring • Tutorial manager
20
Connectors
The Connector Framework
22
Open Connect
Dev
elop
men
t
Man
agem
ent
Discovery Exchange
Connector API
Java .NET .js … C Exposed via the integration platform’s programming model.
Exposed via the integration platform’s administration interfaces.
Policy
Services and events are everywhere! – Allow different systems to have their input and outputs defined as services, events & documents
• e.g. database, MQ, SAP, CICS, mobile, machine devices, sockets… Integrating endpoint systems involves three key processes
– Discovery: Understand & capture the end system inputs and outputs – Exchange: Send data to and from these systems, using event, service, document metaphor – Policy: Control behaviour dynamically
Connector Framework – Simplifies application connector development and restructures UDN development to be endpoint-
centric rather than IIB-centric
IIB Connector API • Natural and Obvious
• Facilitates re-use of existing connectors and clients. • Clean abstractions and separation of concerns
• API does not require understanding of IIB concepts • Allows for standalone unit testing and component testing
• Patterns of interactions • To fit in well with existing client libraries • Support consistent behaviour and end user experience
Implementing a connector
24
Understand what you are connecting to
Start with hello world More code Integrate Test
Implementing a connector
25
Understand what you are connecting to
Start with hello world More code Integrate Test
What interaction
patterns are appropriate
Is there an existing
connector?
Find some sample code.
Implement a connector
factory
Create at least one type of
connector
Hard code a fake
interaction
Create some mock classes
Test methods of your classes
Run tests in standalone
junit
Create a user defined
node
Associate node with connector
Test in a message
flow
Connector lifecycle
Properties to control
behaviour
Exchange data with connector
An example - MQLight
26
Understand what you are connecting to
What interaction
patterns are appropriate
An example - MQLight
27
Understand what you are connecting to
Is there an existing
connector?
An example - MQLight
28
public static void main(String[] args) { NonBlockingClient client = NonBlockingClient.create("amqp://localhost", null, null); client.subscribe("/public", new DestinationAdapter() { public void onMessage(NonBlockingClient client, Void context, Delivery delivery) { switch (delivery.getType()) { case BYTES: BytesDelivery bd = (BytesDelivery)delivery; System.out.println(bd.getData()); break; case STRING: StringDelivery sd = (StringDelivery)delivery; System.out.println(sd.getData()); break; } } }, null, null); }
Understand what you are connecting to
Find some sample code.
Start with hello world
An example - MQLight
29
public class AMQPConnectorFactory extends AbstractConnectorFactory { @Override public InputConnector createInputConnector(String name) throws ConnectorException { return null; } @Override public String getInfo() { return "AMQP Client Connector"; } @Override public OutputConnector createOutputConnector(String name) throws ConnectorException { return null; } @Override public RequestConnector createRequestConnector(String name) throws ConnectorException { return null; } }
Implement a connector
factory
Start with hello world
An example - MQLight
30
public InputConnector createInputConnector(String name) throws ConnectorException { return new AbstractInputConnector(){ @Override public void start() throws ConnectorException { } @Override public void stop() throws ConnectorException { } @Override public boolean isStarted() { return true; } }; }
Create at least one type of
connector
Start with hello world
An example - MQLight
31
@Override public InputConnector createInputConnector(String name) throws ConnectorException { return new AbstractInputConnector(){ @Override public void start() throws ConnectorException { getCallback().processInboundData( new String("hello world").getBytes(), null); } @Override public void stop() throws ConnectorException { }
Hard code a fake
interaction
Test
An example - MQLight
32
Create some mock classes
Test
An example - MQLight
33
public class AMQPConnectorFactoryTest { AMQPConnectorFactory fixture; @Before public void setUp() throws Exception { fixture = new AMQPConnectorFactory(); } @Test public void testGetInfo() { String info = fixture.getInfo(); assert(info.equals("AMQP Client Connector")); } @Test public void testCreateInputConnector() throws ConnectorException { InputConnector inputConnector = fixture.createInputConnector("TestConector"); assertNotNull("createInputConnector returned null", inputConnector ); } }
Test methods of your classes
Test
An example - MQLight
34
Run tests in standalone
junit
Integrate
An example - MQLight
35
Create a user defined
node
Integrate
An example - MQLight
36
Create a user defined
node
Integrate
An example - MQLight
37
Associate node with connector
Integrate
An example - MQLight
38
Associate node with connector
Integrate
An example - MQLight
39
Test in a message
flow
Integrate
An example - MQLight
40
Test in a message
flow
More code
An example - MQLight
41
NonBlockingClient client; @Override public void start() throws ConnectorException { client = NonBlockingClient.create("amqp://localhost", null, null); client.subscribe("/public", new DestinationAdapter<Object>() { public void onMessage(NonBlockingClient client, Void context, Delivery delivery) { BytesDelivery bd = (BytesDelivery)delivery; getCallback().processInboundData(bd.getData(), null); } }, null, null); }
Exchange data with connector
More code
An example - MQLight
42
@Override public void stop() throws ConnectorException { client.stop(new CompletionListener<Object>() { @Override public void onError(NonBlockingClient client, Object context, Exception exception) { //Do something } @Override public void onSuccess(NonBlockingClient client, Object context) { //Do something } }, null); }
Connector lifecycle
More code
An example - MQLight
43
public void start() throws ConnectorException { //use the properties configured by the user String topicName = getProperty("topic"); String serverAddress = new String("amqp://") + getProperty("hostname"); client = NonBlockingClient.create(serverAddress, null, null); client.subscribe(topicName, new DestinationAdapter<Object>() { public void onMessage(NonBlockingClient client, Void context, Delivery delivery) { BytesDelivery bd = (BytesDelivery)delivery; //report metadata about the delivery Properties deliveryProperties = new Properties(); deliveryProperties.putAll(bd.getProperties()); //ask the framework to process the data and metadata getCallback().processInboundData(bd.getData(), deliveryProperties); } }, null, null);
Properties to control
behaviour
More code
An example - MQLight
44
Properties to control
behaviour
More code
An example - MQLight
45
Properties to control
behaviour
More code
An example - MQLight
46
Properties to control
behaviour
More code
An example - MQLight
47
Exploit container provided behaviour
More code
An example - MQLight
48
Exploit container provided behaviour
More code
An example - MQLight
49
Exploit container provided behaviour
Questions and comments
Useful links • http://ot4i.github.io/
• Main ot4i GitHub • http://dfdlschemas.github.io/
• DFDL Schemas GitHub • https://github.com/ot4i-cookbooks
• Chef cookbooks for ot4i • https://github.com/DAVEXACOM/IIB-FEM
• Failed event manager/ store and forward flows • https://github.com/SchweizerischeBundesbahnen/iib-maven-
plugin • Maven plugin for IIB
Notices and Disclaimers Copyright © 2015 by International Business Machines Corporation (IBM). No part of this document may be reproduced or transmitted in any form without written permission from IBM.
U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM.
Information in these presentations (including information relating to products that have not yet been announced by IBM) has been reviewed for accuracy as of the date of initial publication and could include unintentional technical or typographical errors. IBM shall have no responsibility to update this information. THIS DOCUMENT IS DISTRIBUTED "AS IS" WITHOUT ANY WARRANTY, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL IBM BE LIABLE FOR ANY DAMAGE ARISING FROM THE USE OF THIS INFORMATION, INCLUDING BUT NOT LIMITED TO, LOSS OF DATA, BUSINESS INTERRUPTION, LOSS OF PROFIT OR LOSS OF OPPORTUNITY. IBM products and services are warranted according to the terms and conditions of the agreements under which they are provided.
Any statements regarding IBM's future direction, intent or product plans are subject to change or withdrawal without notice.
Performance data contained herein was generally obtained in a controlled, isolated environments. Customer examples are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual performance, cost, savings or other results in other operating environments may vary.
References in this document to IBM products, programs, or services does not imply that IBM intends to make such products, programs or services available in all countries in which IBM operates or does business.
Workshops, sessions and associated materials may have been prepared by independent session speakers, and do not necessarily reflect the views of IBM. All materials and discussions are provided for informational purposes only, and are neither intended to, nor shall constitute legal or other guidance or advice to any individual participant or their specific situation.
It is the customer’s responsibility to insure its own compliance with legal requirements and to obtain advice of competent legal counsel as to the identification and interpretation of any relevant laws and regulatory requirements that may affect the customer’s business and any actions the customer may need to take to comply with such laws. IBM does not provide legal advice or represent or warrant that its services or products will ensure that the customer is in compliance with any law.
Notices and Disclaimers (con’t)
Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products in connection with this publication and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. IBM does not warrant the quality of any third-party products, or the ability of any such third-party products to interoperate with IBM’s products. IBM EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
The provision of the information contained herein is not intended to, and does not, grant any right or license under any IBM patents, copyrights, trademarks or other intellectual property right.
• IBM, the IBM logo, ibm.com, Bluemix, Blueworks Live, CICS, Clearcase, DOORS®, Enterprise Document Management System™, Global Business Services ®, Global Technology Services ®, Information on Demand, ILOG, Maximo®, MQIntegrator®, MQSeries®, Netcool®, OMEGAMON, OpenPower, PureAnalytics™, PureApplication®, pureCluster™, PureCoverage®, PureData®, PureExperience®, PureFlex®, pureQuery®, pureScale®, PureSystems®, QRadar®, Rational®, Rhapsody®, SoDA, SPSS, StoredIQ, Tivoli®, Trusteer®, urban{code}®, Watson, WebSphere®, Worklight®, X-Force® and System z® Z/OS, are trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at: www.ibm.com/legal/copytrade.shtml.
Thank You Your Feedback is
Important!
Access the InterConnect 2015 Conference CONNECT Attendee Portal to complete your session surveys from your smartphone,
laptop or conference kiosk.