Open Technologies for Integration (IBM InterConnect - Session 1483)

55
© 2015 IBM Corporation AEC-1483 Open Technologies for Integration John Hosie @hosie31504 [email protected]

Transcript of Open Technologies for Integration (IBM InterConnect - Session 1483)

Page 1: Open Technologies for Integration (IBM InterConnect - Session 1483)

© 2015 IBM Corporation

AEC-1483 Open Technologies for Integration John Hosie @hosie31504 [email protected]

Page 2: Open Technologies for Integration (IBM InterConnect - Session 1483)

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

Page 3: Open Technologies for Integration (IBM InterConnect - Session 1483)

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 ?

Page 4: Open Technologies for Integration (IBM InterConnect - Session 1483)

Agenda

3

The nature and benefits of

open source

Open technologies for

integration

Features in IBM Integration Bus to support and

encourage open source

Page 5: Open Technologies for Integration (IBM InterConnect - Session 1483)

Nature of open source software • Open source definition

• 10 point list of guidelines

4

Page 6: Open Technologies for Integration (IBM InterConnect - Session 1483)

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

Page 7: Open Technologies for Integration (IBM InterConnect - Session 1483)

Nature of open source software

Free Software definition

6

Free software” means software

that respects users' freedom and community.

Page 8: Open Technologies for Integration (IBM InterConnect - Session 1483)

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

Page 9: Open Technologies for Integration (IBM InterConnect - Session 1483)

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”

Page 10: Open Technologies for Integration (IBM InterConnect - Session 1483)

9

Community and Collaboration

Page 11: Open Technologies for Integration (IBM InterConnect - Session 1483)

10

License and copyright

Page 12: Open Technologies for Integration (IBM InterConnect - Session 1483)

11

Branching, Forking and Cloning

Page 13: Open Technologies for Integration (IBM InterConnect - Session 1483)

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

Page 14: Open Technologies for Integration (IBM InterConnect - Session 1483)

Open technologies for Integration

13

iib-maven-plugin

mqtt-client-connector

IIB-FEM

event-filter-pattern

Integration-service-tutorial

chef-cookbooks

Page 15: Open Technologies for Integration (IBM InterConnect - Session 1483)

14

Page 16: Open Technologies for Integration (IBM InterConnect - Session 1483)

15

Page 17: Open Technologies for Integration (IBM InterConnect - Session 1483)

16

Page 18: Open Technologies for Integration (IBM InterConnect - Session 1483)

17

Page 19: Open Technologies for Integration (IBM InterConnect - Session 1483)

18

Page 20: Open Technologies for Integration (IBM InterConnect - Session 1483)

19

Page 21: Open Technologies for Integration (IBM InterConnect - Session 1483)

IBM product capabilities to support open source

• User defined node API • Connectors framework • Conversion framework • REST API for administration • Patterns authoring • Tutorial manager

20

Page 22: Open Technologies for Integration (IBM InterConnect - Session 1483)

Connectors

Page 23: Open Technologies for Integration (IBM InterConnect - Session 1483)

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

Page 24: Open Technologies for Integration (IBM InterConnect - Session 1483)

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

Page 25: Open Technologies for Integration (IBM InterConnect - Session 1483)

Implementing a connector

24

Understand what you are connecting to

Start with hello world More code Integrate Test

Page 26: Open Technologies for Integration (IBM InterConnect - Session 1483)

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

Page 27: Open Technologies for Integration (IBM InterConnect - Session 1483)

An example - MQLight

26

Understand what you are connecting to

What interaction

patterns are appropriate

Page 28: Open Technologies for Integration (IBM InterConnect - Session 1483)

An example - MQLight

27

Understand what you are connecting to

Is there an existing

connector?

Page 29: Open Technologies for Integration (IBM InterConnect - Session 1483)

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.

Page 30: Open Technologies for Integration (IBM InterConnect - Session 1483)

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

Page 31: Open Technologies for Integration (IBM InterConnect - Session 1483)

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

Page 32: Open Technologies for Integration (IBM InterConnect - Session 1483)

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

Page 33: Open Technologies for Integration (IBM InterConnect - Session 1483)

Test

An example - MQLight

32

Create some mock classes

Page 34: Open Technologies for Integration (IBM InterConnect - Session 1483)

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

Page 35: Open Technologies for Integration (IBM InterConnect - Session 1483)

Test

An example - MQLight

34

Run tests in standalone

junit

Page 36: Open Technologies for Integration (IBM InterConnect - Session 1483)

Integrate

An example - MQLight

35

Create a user defined

node

Page 37: Open Technologies for Integration (IBM InterConnect - Session 1483)

Integrate

An example - MQLight

36

Create a user defined

node

Page 38: Open Technologies for Integration (IBM InterConnect - Session 1483)

Integrate

An example - MQLight

37

Associate node with connector

Page 39: Open Technologies for Integration (IBM InterConnect - Session 1483)

Integrate

An example - MQLight

38

Associate node with connector

Page 40: Open Technologies for Integration (IBM InterConnect - Session 1483)

Integrate

An example - MQLight

39

Test in a message

flow

Page 41: Open Technologies for Integration (IBM InterConnect - Session 1483)

Integrate

An example - MQLight

40

Test in a message

flow

Page 42: Open Technologies for Integration (IBM InterConnect - Session 1483)

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

Page 43: Open Technologies for Integration (IBM InterConnect - Session 1483)

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

Page 44: Open Technologies for Integration (IBM InterConnect - Session 1483)

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

Page 45: Open Technologies for Integration (IBM InterConnect - Session 1483)

More code

An example - MQLight

44

Properties to control

behaviour

Page 46: Open Technologies for Integration (IBM InterConnect - Session 1483)

More code

An example - MQLight

45

Properties to control

behaviour

Page 47: Open Technologies for Integration (IBM InterConnect - Session 1483)

More code

An example - MQLight

46

Properties to control

behaviour

Page 48: Open Technologies for Integration (IBM InterConnect - Session 1483)

More code

An example - MQLight

47

Exploit container provided behaviour

Page 49: Open Technologies for Integration (IBM InterConnect - Session 1483)

More code

An example - MQLight

48

Exploit container provided behaviour

Page 50: Open Technologies for Integration (IBM InterConnect - Session 1483)

More code

An example - MQLight

49

Exploit container provided behaviour

Page 51: Open Technologies for Integration (IBM InterConnect - Session 1483)

Questions and comments

Page 52: Open Technologies for Integration (IBM InterConnect - Session 1483)

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

Page 53: Open Technologies for Integration (IBM InterConnect - Session 1483)

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.

Page 54: Open Technologies for Integration (IBM InterConnect - Session 1483)

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.

Page 55: Open Technologies for Integration (IBM InterConnect - Session 1483)

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.