wtui16 - integration your way with ibm integration bus
Post on 06-Jul-2015
584 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
top related