Upload
matt-lucas
View
446
Download
3
Tags:
Embed Size (px)
Citation preview
© 2015 IBM Corporation
Integration your way
John Hosie, Product architect for IBM Integration Bus
Agenda
• When integration needs customization • Overview of common languages
• Discussion on IBM’s support for each
• Summary
2
3
4© Jens Stolt | Dreamstime.com
Simple and productive
Simple and productive
5
Simple and productive
6
Simple and productive
7
Patterns
8
Patterns provide reusable design
with points of variability
9
With integration development so simple, why am I standing up at #InterConnect2015 talking about programming languages?
With integration development so simple, why am I standing up at #ibminterconnect talking about programming languages?
10
Sometimes, it needsjust a little tweak
© Kentannenbaum | Dreamstime.com
When programming languages matter• Connecting to existing applications• Customize bus to address a unique
requirement
• Re-use of existing integration assets
• Custom admin tools
12
13
Universal and IndependentGoes with anything but depends on nothing
General purpose
Transformation / Query
Other domain specific languages
Business
COBOL.js
Java
PHP
BPMN BAL ABAP
(E)SQLXPATHXSLT
C/C++Ruby
RPG BPEL
R
XQUERY
.NET
COBOL.js
Java
PHP
BPMN BAL ABAP
(E)SQLXPATHXSLT
C/C++Ruby
RPG BPEL
R
XQUERY
.NET
COBOL.js
Java
PHP
BPMN BAL ABAP
(E)SQLXPATHXSLT
C/C++Ruby
RPG BPEL
R
XQUERY
.NET
COBOL.js
PHP
BPMN BAL ABAP
(E)SQLXPATHXSLT
C/C++Ruby
RPG BPEL
R
XQUERY
.NETJava
COBOL
PHP
BPMN BAL ABAP
(E)SQLXPATHXSLT
C/C++Ruby
RPG BPEL
R
XQUERY
.NETJava
.js
COBOL.js
PHP
BPMN BAL ABAP
(E)SQLXPATHXSLT
Ruby
RPG BPEL
R
XQUERY
.NETJava
C/C++
.js
Java
PHP
BPMN BAL ABAP
(E)SQLXPATHXSLT
C/C++Ruby
RPG BPEL
R
XQUERY
.NET
COBOL
COBOL.js
Java
PHP
BPMN BAL ABAP
(E)SQLXPATHXSLT
C/C++
RPG BPEL
R
XQUERY
.NET
Ruby
COBOL.js
Java
PHP
BPMN BAL ABAP
(E)SQL
C/C++Ruby
RPG BPEL
R
.NET
XPATHXSLTXQUERY
COBOL.js
Java
PHP
BPMN BAL ABAP
XPATHXSLT
C/C++Ruby
RPG BPEL
R
XQUERY
.NET
(E)SQL
COBOL.js
Java
PHP
(E)SQLXPATHXSLT
C/C++Ruby
R
XQUERY
.NET
BPMN BAL ABAPRPG BPEL
COBOL.js
Java
PHP
BPMN BAL ABAP
(E)SQLXPATHXSLT
C/C++Ruby
RPG BPEL
XQUERY
.NET
R
COBOL.js
Java
BPMN BAL ABAP
(E)SQLXPATHXSLT
C/C++Ruby
RPG BPEL
R
XQUERY
.NET
PHP
IIB Support for each language
© 2014 IBM Corporation29
.NET
Java Integrated debugger
© 2014 IBM Corporation30
.NET
Java JAXB Interface
© 2014 IBM Corporation31
.NET
Java JAXB Interface
© 2014 IBM Corporation32
.NET
Java JAXB Interface
© 2014 IBM Corporation33
.NET
Java JDBC Connection Management
© 2014 IBM Corporation34
.NET
Java JDBC Connection Management
© 2014 IBM Corporation35
.NET
Java Support for version control
© 2014 IBM Corporation36
.NET
Java Conversion Tools
© 2014 IBM Corporation37
.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 Corporation43
.NET
.NET Develop in Visual Studio
© 2014 IBM Corporation48
.NET
.NET Reuse existing code from ESQL
© 2014 IBM Corporation49
.NET
.NET 3 click Mobile App
© 2014 IBM Corporation50
.NET
.NET 3 click Mobile App
© 2014 IBM Corporation51
.NET
.NET 3 click Mobile App
© 2014 IBM Corporation52
.NET
.NET 3 click Mobile App
© 2014 IBM Corporation53
.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 Corporation54
.NET
ESQL SQL + Procedural Extensions
Typed user defined variables and constantsDECLARE var1 CHARACTER 'Hello World';DECLARE var1 CONSTANT CHAR 'Hello World';– If not initialized they are initialized to NULL for you
Data typesCHARACTER DECIMAL FLOAT INT BIT BLOB BOOLEAN
Data and timeDATE TIME TIMESTAMP INTERVAL GMTTIME GMTTIMESTAMP
Operators– For manipulation and comparison of variables, etcBETWEEN IN LIKE IS (NOT)
Conditional constructsIF, ELSEIF, ELSE, CASE, WHEN
Several looping constructsWHILE, REPEAT, LOOP, FOR
Functions– Over 80 built-in functionsSUBSTRING LENGTH UPPER CONTAINS STARTSWITH RAND ROUND CEILING FLOOR
© 2014 IBM Corporation55
.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 Corporation56
.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 Corporation57
.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 Corporation58
.NET
ESQL Database Access
SELECT statement– Creates an entire message tree from a database querySET 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 tableINSERT INTO Database.Prices(ITEM, ITEMPRICE)VALUES (Body.Msg.Item, Body.Msg.ItemPrice);
UPDATE statement– Changes one or more existing rows in a database tableUPDATE Database.Prices AS PSET ITEMPRICE = Body.Msg.ItemPriceWHERE P.ITEM = Body.Msg.Item;
DELETE statement– Removes one or more existing rows in a database tableDELETE FROM Database.{DSN}.{Schema}.Prices AS PWHERE P.ITEM = Body.Msg.Item;
© 2014 IBM Corporation59
.NET
.js SDK Generation
© 2014 IBM Corporation60
.NET
.js SDK Generation
© 2014 IBM Corporation61
.NET
.js SDK Generation
© 2014 IBM Corporation62
.NET
.js Custom dashboards
this.mqttClient = new Messaging.Client( host, port, clientId);
this.mqttClient.subscribe("$SYS/Broker/MYNODE//Statistics/JSON/Resource/#/“…
JSON{ }
© 2014 IBM Corporation63
.NET
R R Serve node
Score
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
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
65
66
Questions?
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
67
Notices and DisclaimersCopyright © 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 YouYour Feedback is
Important!
Access the InterConnect 2015 Conference CONNECT Attendee Portal to complete your session surveys from your smartphone,
laptop or conference kiosk.