WTUI16 - Integration Your Way with IBM Integration Bus

Preview:

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

Integration your way

John Hosie, Product architect for 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  

© 2014 IBM Corporation 3

3

Agenda

§ When integration needs customization

§ Overview of common languages

§ Discussion on IBM’s support for each

§ Summary

© 2014 IBM Corporation 4

4

Simple and productive

© 2014 IBM Corporation 5

5

Simple and productive

© 2014 IBM Corporation 6

6

Simple and productive

© 2014 IBM Corporation 7

7

Simple and productive

© 2014 IBM Corporation 8

8

Patterns

Patterns provide reusable design

with points of variability

© 2014 IBM Corporation 9

9

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

© 2014 IBM Corporation 10

10

Sometimes, it needs

just a little tweak

© 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

© 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

© 2014 IBM Corporation 13

13

Universal and Independent Goes with anything but depends on nothing

© 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

© 2014 IBM Corporation 15

COBOL .js

Java

PHP

BPMN BAL ABAP

(E)SQL XPATH XSLT

C/C++ Ruby

RPG BPEL

R

XQUERY

.NET

© 2014 IBM Corporation 16

COBOL .js

Java

PHP

BPMN BAL ABAP

(E)SQL XPATH XSLT

C/C++ Ruby

RPG BPEL

R

XQUERY

.NET

© 2014 IBM Corporation 17

COBOL .js

PHP

BPMN BAL ABAP

(E)SQL XPATH XSLT

C/C++ Ruby

RPG BPEL

R

XQUERY

.NET Java

© 2014 IBM Corporation 18

COBOL

PHP

BPMN BAL ABAP

(E)SQL XPATH XSLT

C/C++ Ruby

RPG BPEL

R

XQUERY

.NET Java

.js

© 2014 IBM Corporation 19

COBOL .js

PHP

BPMN BAL ABAP

(E)SQL XPATH XSLT

Ruby

RPG BPEL

R

XQUERY

.NET Java

C/C++

© 2014 IBM Corporation 20

.js

Java

PHP

BPMN BAL ABAP

(E)SQL XPATH XSLT

C/C++ Ruby

RPG BPEL

R

XQUERY

.NET

COBOL

© 2014 IBM Corporation 21

COBOL .js

Java

PHP

BPMN BAL ABAP

(E)SQL XPATH XSLT

C/C++

RPG BPEL

R

XQUERY

.NET

Ruby

© 2014 IBM Corporation 22

COBOL .js

Java

PHP

BPMN BAL ABAP

(E)SQL

C/C++ Ruby

RPG BPEL

R

.NET

XPATH XSLT XQUERY

© 2014 IBM Corporation 23

COBOL .js

Java

PHP

BPMN BAL ABAP

XPATH XSLT

C/C++ Ruby

RPG BPEL

R

XQUERY

.NET

(E)SQL

© 2014 IBM Corporation 24

COBOL .js

Java

PHP

(E)SQL XPATH XSLT

C/C++ Ruby

R

XQUERY

.NET

BPMN BAL ABAP RPG BPEL

© 2014 IBM Corporation 25

COBOL .js

Java

PHP

BPMN BAL ABAP

(E)SQL XPATH XSLT

C/C++ Ruby

RPG BPEL

XQUERY

.NET

R

© 2014 IBM Corporation 26

COBOL .js

Java

BPMN BAL ABAP

(E)SQL XPATH XSLT

C/C++ Ruby

RPG BPEL

R

XQUERY

.NET

PHP

© 2014 IBM Corporation 27

IIB Support for each language

© 2014 IBM Corporation 28

.NET

Java Integrated debugger

© 2014 IBM Corporation 29

.NET

Java JAXB Interface

© 2014 IBM Corporation 30

.NET

Java JAXB Interface

© 2014 IBM Corporation 31

.NET

Java JAXB Interface

© 2014 IBM Corporation 32

.NET

Java JDBC Connection Management

© 2014 IBM Corporation 33

.NET

Java JDBC Connection Management

© 2014 IBM Corporation 34

.NET

Java Support for version control

© 2014 IBM Corporation 35

.NET

Java Conversion Tools

© 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

© 2014 IBM Corporation 37

.NET

.NET CLR Hosted in IIB Runtime

© 2014 IBM Corporation 38

.NET

.NET Customize message flow with .NET

© 2014 IBM Corporation 39

.NET

.NET Customize message flow with .NET

© 2014 IBM Corporation 40

.NET

.NET Templates for IIB Nodes

© 2014 IBM Corporation 41

.NET

.NET Develop in Visual Studio

© 2014 IBM Corporation 42

.NET

.NET Develop in Visual Studio

© 2014 IBM Corporation 43

.NET

.NET Develop in Visual Studio

© 2014 IBM Corporation 44

.NET

.NET Develop in Visual Studio

© 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”

© 2014 IBM Corporation 46

.NET

.NET Reuse existing code from ESQL

© 2014 IBM Corporation 47

.NET

.NET Reuse existing code from ESQL

© 2014 IBM Corporation 48

.NET

.NET 3 click Mobile App

© 2014 IBM Corporation 49

.NET

.NET 3 click Mobile App

© 2014 IBM Corporation 50

.NET

.NET 3 click Mobile App

© 2014 IBM Corporation 51

.NET

.NET 3 click Mobile App

© 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

© 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

© 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;

© 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)

© 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;

© 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;

© 2014 IBM Corporation 58

.NET

.js SDK Generation

© 2014 IBM Corporation 59

.NET

.js SDK Generation

© 2014 IBM Corporation 60

.NET

.js SDK Generation

© 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{  }  

© 2014 IBM Corporation 62

.NET

R R Serve node

Score

© 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

© 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

© 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

© 2014 IBM Corporation 66

Thank You !!!!

66

©  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  

Recommended