67
Integration your way John Hosie, Product architect for IBM Integration Bus

WTUI16 - Integration Your Way with IBM Integration Bus

Embed Size (px)

DESCRIPTION

When developing integration solutions, it is occasionally necessary to develop custom connectivity, transformation, interfaces or other logic. IBM recognizes that the correct programming strategy is one that fits the skill set of the individual or enterprise and should be a natural choice for the particular use case. This session looks at the support available in IBM Integration Bus for various different programming languages. We will discuss their strengths, limitations and other factors that might affect choice and influence adoption.

Citation preview

Page 1: WTUI16 - Integration Your Way with IBM Integration Bus

Integration your way

John Hosie, Product architect for IBM Integration Bus

 

Page 2: WTUI16 - Integration Your Way with IBM Integration Bus

©  2014  IBM  Corpora/on    

Please  Note  IBM’s  statements  regarding  its  plans,  direc/ons,  and  intent  are  subject  to  change  or  withdrawal  without  no/ce  at  IBM’s  sole  discre/on.  Informa/on  regarding  poten/al  future  products  is  intended  to  outline  our  general  product  direc/on  and  it  should  not  be  relied  on  in  making  a  purchasing  decision.    

The  informa/on  men/oned  regarding  poten/al  future  products  is  not  a  commitment,  promise,  or  legal  obliga/on  to  deliver  any  material,  code  or  func/onality.  Informa/on  about  poten/al  future  products  may  not  be  incorporated  into  any  contract.  The  development,  release,  and  /ming  of  any  future  features  or  func/onality  described  for  our  products  remains  at  our  sole  discre/on  

Performance  is  based  on  measurements  and  projec/ons  using  standard  IBM  benchmarks  in  a  controlled  environment.    The  actual  throughput  or  performance  that  any  user  will  experience  will  vary  depending  upon  many  factors,  including  considera/ons  such  as  the  amount  of  mul/programming  in  the  user’s  job  stream,  the  I/O  configura/on,  the  storage  configura/on,  and  the  workload  processed.    Therefore,  no  assurance  can  be  given  that  an  individual  user  will  achieve  results  similar  to  those  stated  here.  

2  

Page 3: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 3

3

Agenda

§ When integration needs customization

§ Overview of common languages

§ Discussion on IBM’s support for each

§ Summary

Page 4: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 4

4

Simple and productive

Page 5: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 5

5

Simple and productive

Page 6: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 6

6

Simple and productive

Page 7: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 7

7

Simple and productive

Page 8: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 8

8

Patterns

Patterns provide reusable design

with points of variability

Page 9: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 9

9

With integration development so simple, why am I standing up at #WTUDE2014 talking about programming languages?

Page 10: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 10

10

Sometimes, it needs

just a little tweak

Page 11: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 11

11

Reasons to consider programming environments and languages

§  Customize to address a unique or specific requirement – As with all areas of IT, there are occasions when the out of the box solutions do not quite

address all details of the requirement. Custom code is programmed into the integration flows to resolve these cases.

§  Re-use of existing integration assets – For example, in cases where a previous solution was developed on another integration

platform, there is a desire to retain some components, rather than develop new.

§  Connecting to existing applications – This is a special type of re-use where the component being re-used is an interface that is

described in a particular programming language.

§  Custom tools to manage and operate the integration solution – For example, to embed to controls for the integration into an existing dashboard or to

program automated deployement

Page 12: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 12

12

When programming languages matter

§ Connecting to existing applications

§ Customize bus to address a unique requirement

§ Re-use of existing integration assets

§ Custom admin tools

Page 13: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 13

13

Universal and Independent Goes with anything but depends on nothing

Page 14: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 14

General purpose

Transformation / Query

Other domain specific languages

Business

COBOL .js

Java

PHP

BPMN BAL ABAP

(E)SQL XPATH XSLT

C/C++ Ruby

RPG BPEL

R

XQUERY

.NET

Page 15: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 15

COBOL .js

Java

PHP

BPMN BAL ABAP

(E)SQL XPATH XSLT

C/C++ Ruby

RPG BPEL

R

XQUERY

.NET

Page 16: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 16

COBOL .js

Java

PHP

BPMN BAL ABAP

(E)SQL XPATH XSLT

C/C++ Ruby

RPG BPEL

R

XQUERY

.NET

Page 17: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 17

COBOL .js

PHP

BPMN BAL ABAP

(E)SQL XPATH XSLT

C/C++ Ruby

RPG BPEL

R

XQUERY

.NET Java

Page 18: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 18

COBOL

PHP

BPMN BAL ABAP

(E)SQL XPATH XSLT

C/C++ Ruby

RPG BPEL

R

XQUERY

.NET Java

.js

Page 19: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 19

COBOL .js

PHP

BPMN BAL ABAP

(E)SQL XPATH XSLT

Ruby

RPG BPEL

R

XQUERY

.NET Java

C/C++

Page 20: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 20

.js

Java

PHP

BPMN BAL ABAP

(E)SQL XPATH XSLT

C/C++ Ruby

RPG BPEL

R

XQUERY

.NET

COBOL

Page 21: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 21

COBOL .js

Java

PHP

BPMN BAL ABAP

(E)SQL XPATH XSLT

C/C++

RPG BPEL

R

XQUERY

.NET

Ruby

Page 22: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 22

COBOL .js

Java

PHP

BPMN BAL ABAP

(E)SQL

C/C++ Ruby

RPG BPEL

R

.NET

XPATH XSLT XQUERY

Page 23: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 23

COBOL .js

Java

PHP

BPMN BAL ABAP

XPATH XSLT

C/C++ Ruby

RPG BPEL

R

XQUERY

.NET

(E)SQL

Page 24: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 24

COBOL .js

Java

PHP

(E)SQL XPATH XSLT

C/C++ Ruby

R

XQUERY

.NET

BPMN BAL ABAP RPG BPEL

Page 25: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 25

COBOL .js

Java

PHP

BPMN BAL ABAP

(E)SQL XPATH XSLT

C/C++ Ruby

RPG BPEL

XQUERY

.NET

R

Page 26: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 26

COBOL .js

Java

BPMN BAL ABAP

(E)SQL XPATH XSLT

C/C++ Ruby

RPG BPEL

R

XQUERY

.NET

PHP

Page 27: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 27

IIB Support for each language

Page 28: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 28

.NET

Java Integrated debugger

Page 29: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 29

.NET

Java JAXB Interface

Page 30: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 30

.NET

Java JAXB Interface

Page 31: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 31

.NET

Java JAXB Interface

Page 32: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 32

.NET

Java JDBC Connection Management

Page 33: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 33

.NET

Java JDBC Connection Management

Page 34: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 34

.NET

Java Support for version control

Page 35: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 35

.NET

Java Conversion Tools

Page 36: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 36

.NET

Java Other java apis in IIB

CMP API for java based admin apps AppDev for programmatic message flow creation or inspection Pattern authoring for custom pattern generation Eclipse extension points for custom UX on patterns and nodes

Page 37: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 37

.NET

.NET CLR Hosted in IIB Runtime

Page 38: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 38

.NET

.NET Customize message flow with .NET

Page 39: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 39

.NET

.NET Customize message flow with .NET

Page 40: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 40

.NET

.NET Templates for IIB Nodes

Page 41: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 41

.NET

.NET Develop in Visual Studio

Page 42: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 42

.NET

.NET Develop in Visual Studio

Page 43: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 43

.NET

.NET Develop in Visual Studio

Page 44: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 44

.NET

.NET Develop in Visual Studio

Page 45: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 45

.NET

.NET Hot swap your assemblies

1: Build your assembly in Visual Studio

2: .NET Compute Node points to the assembly on disk – Deployed as part of a flow

3: Test flow

4: Rebuild in Visual Studio after changes

5: Re-test flow – No re-deploy / restart needed

“Rebuild”

Page 46: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 46

.NET

.NET Reuse existing code from ESQL

Page 47: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 47

.NET

.NET Reuse existing code from ESQL

Page 48: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 48

.NET

.NET 3 click Mobile App

Page 49: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 49

.NET

.NET 3 click Mobile App

Page 50: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 50

.NET

.NET 3 click Mobile App

Page 51: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 51

.NET

.NET 3 click Mobile App

Page 52: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 52

.NET

ESQL Introduction

§  Excellent for database interaction

§  Syntactically similar to SQL

§  Invoke static Java methods and database stored procedures

§  Supports declarative and procedural programming styles

§  Powerful SELECT statement can be applied to messages as well as database tables (or a mix of the two at the same time – can even be nested!)

§  Access to all message domains

§  Can address all message headers and environment trees

§  Toolkit support with editor for syntax highlighting and context assist

§  ESQL debugger integrated with Flow Debugger

Page 53: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 53

.NET

ESQL SQL + Procedural Extensions

§  Typed user defined variables and constants DECLARE var1 CHARACTER 'Hello World'; DECLARE var1 CONSTANT CHAR 'Hello World'; –  If not initialized they are initialized to NULL for you

§  Data types CHARACTER DECIMAL FLOAT INT BIT BLOB BOOLEAN

§  Data and time DATE TIME TIMESTAMP INTERVAL GMTTIME GMTTIMESTAMP

§  Operators – For manipulation and comparison of variables, etc BETWEEN IN LIKE IS (NOT)

§  Conditional constructs IF, ELSEIF, ELSE, CASE, WHEN

§  Several looping constructs WHILE, REPEAT, LOOP, FOR

§  Functions – Over 80 built-in functions SUBSTRING LENGTH UPPER CONTAINS STARTSWITH RAND ROUND CEILING FLOOR

Page 54: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 54

.NET

ESQL Functions and Procedures

§  Main() – the entry point for the Compute node CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN ...

SET OutputRoot.XMLNSC.Money.Amount = twice(myInt); CALL multiplyBy2(myInt);

... RETURN TRUE; --causes message propagation END;

§  User-defined functions CREATE FUNCTION twice(IN p INTEGER) RETURNS INTEGER BEGIN RETURN p * 2; END; CREATE PROCEDURE multiplyBy2(INOUT p INTEGER) BEGIN SET p = p * 2; END;

Page 55: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 55

.NET

ESQL Working with Messages

§  Field References –  Path syntax to address the tree elements –  Starts with ‘correlation name’ to identify root of tree

SET OutputRoot = InputRoot; -- copies the whole message

SET OutputRoot.MQMD = NULL; -- removes the MQMD header

SET OutputRoot.XML.doc.title = -- will generate the output InputBody.session[4].title; -- tree if it doesn’t exist SET OutputRoot.XML.Library.Publication[] = InputBody.library.books.book[] -- copies all elements (deep copy)

Page 56: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 56

.NET

ESQL Transformation using SELECT

§  The SELECT implicitly loops over the repeating ‘book’ element in the input message – A ‘Publication’ element is created in the output for each one

§  The children elements of ‘book’ are mapped – Element names are changed (‘title’ -> ‘BookTitle’, etc) – Values are copied (deep copy) – Arrays and structures are built (author[] -> Authors.Name[]) – Note that nested repeating structures can be transformed with nested SELECTS

SET OutputRoot.XML.Library.Publication[] =

SELECT BOOK.title AS BookTitle,

BOOK.author[] AS Authors.Name[],

BOOK.isbn AS ISBN,

BOOK.price AS Price

FROM InputBody.library.books.book[] AS BOOK;

Page 57: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 57

.NET

ESQL Database Access

§  SELECT statement –  Creates an entire message tree from a database query SET OutputRoot.XMLNSC.Response.Services.Service[] = (SELECT P.SVCCODE AS Code, P.SVCDESC AS Description FROM Database.SERVICES as P);

§  INSERT statement –  Allows you to add a row to a database table INSERT INTO Database.Prices(ITEM, ITEMPRICE) VALUES (Body.Msg.Item, Body.Msg.ItemPrice);

§  UPDATE statement –  Changes one or more existing rows in a database table UPDATE Database.Prices AS P SET ITEMPRICE = Body.Msg.ItemPrice WHERE P.ITEM = Body.Msg.Item;

§  DELETE statement –  Removes one or more existing rows in a database table DELETE FROM Database.{DSN}.{Schema}.Prices AS P WHERE P.ITEM = Body.Msg.Item;

Page 58: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 58

.NET

.js SDK Generation

Page 59: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 59

.NET

.js SDK Generation

Page 60: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 60

.NET

.js SDK Generation

Page 61: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 61

.NET

.js Custom dashboards

this.mqttClient  =  new  Messaging.Client(                                                    host,                                                    port,                                                    clientId);

this.mqttClient.subscribe("$SYS/Broker/MYNODE//Statistics/JSON/Resource/#/“…  

JSON{  }  

Page 62: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 62

.NET

R R Serve node

Score

Page 63: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 63

63

Highlights of other languages

§  C – C header file importer for DFDL – C API for user defined nodes, parsers and user exits

§  COBOL – Copybook importer for DFDL – CICS Request and IMS Request node

§  PHP – PHP node for transformation/routing/connectivity – PHP support in pattern authoring for template based generation

§  Built in node for XSLT – Uses xalan XSL processor – Compiles and caches stylesheets

Page 64: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 64

64

Highlights for more other languages

§  Ruby – Ruby based recipes for Chef scripts

§  BPMN2 –  Import process definitions from IBM BPM – Publish Integration Services to process definitions

§  BAL – Embedded rules execution engine – Rules can be authored in IIB and deployed with bar file – Author in Decision Center and deploy via Decision Server for central BRMS control

§  ABAP – Discover BAPI interface for ABAP callout to message flow

Page 65: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 65

Summary § Keep it simple, if possible

§ When customization is justified, the choice is yours

§ Watch this space for more in future

§ Tell us if we are missing anything 65

Page 66: WTUI16 - Integration Your Way with IBM Integration Bus

© 2014 IBM Corporation 66

Thank You !!!!

66

Page 67: WTUI16 - Integration Your Way with IBM Integration Bus

©  2014  IBM  Corpora/on    

For  Addi5onal  Informa5on  

l  IBM  Training  hKp://www.ibm.com/training  

 l  IBM  WebSphere  

hKp://www-­‐01.ibm.com/soNware/be/websphere/    l  IBM  developerWorks  

www.ibm.com/developerworks/websphere/websphere2.html    l  WebSphere  forums  and  community  

www.ibm.com/developerworks/websphere/community/    

 

67