The Mapping Editor
Transcription
The Mapping Editor
Woche der Anwendungsentwicklung, Ehningen, 27.3.2014 Carsten Mai IBM Integration Bus V9 © 2013 IBM Corporation Systeme sehen oft so aus ….. Instabile Punkt-zu-Punkt-Verbindungen Viel Redundanz in den Verbindungen Enge Abhängigkeiten zwischen Systemen Wenig Fexibilität – langsame Reaktion auf Änderungen der Geschäftsabläufe Hoher Wartungsaufwand Schwierige Problemanalyse und - lösung © 2013 IBM Corporation SOA addressiert diese Herausforderungen Cloud Services Event Processing APIs OLTP B2B Rules Device Interaction Analytics Process Automation Batch Web Application “The beauty of SOA…is that we can change our components as needed, seamlessly…it might be a business process or a whole new business model.” -Phil Mumford, CEO, Queensland Motorways “Make SOA a prerequisite architecture. It's time to breathe new life into your SOA initiative, this time by focusing on architecture instead of technology.” -Gartner Application and Integration Platforms Key Initiative Overview July 22, 2011 © 2013 IBM Corporation …SOA is simply good design Social, Mobile, Cloud und Big Data bringen neue Herausforderungen Reach Big Data, Cloud, Mobile, Social Cloud Web, e-business and SOA Big Data Mobile Social Transaction Systems Mainframe, IMS and CICS WebSphere, Information Management 1960- 1990- © 2013 IBM Corporation New Era Platform Time 2010- Entwicklung und Wartung vereinfachen! Entkoppeln von Anwendungen und Schnittstellen Kommunikation zwischen Anwendungen unabhängig von: Programmiersprache Systemplattform Programmiermodellen Protokollen Datenformaten. Lösung: Der Enterprise Service Bus © 2013 IBM Corporation Das Herz eines 'interconnected' Unternehmens: der Enterprise Service Bus (ESB) Was ist ein ESB? Ein ESB ist eine flexible Verbindungs-Infrastruktur zur Integration von Anwendungen, Systemen und Services. Ein ESB leistet zwischen Requestor und Service ROUTET Kommunications-Flüsse zwischen Services KONVERTIERT zwischen verschiedenen Transportprotokollen TRANSFORMIERT zwischen verschiedenen Datenformaten IDENTIFIZIERT und VERTEILT Business Events Shape = Transport protocol Color = Data format 6 © 2013 IBM Corporation WebSphere Message Broker Product Roadmap IBM Integration Bus V9 Q2 2013 Policy-based Workload Management and Flow Management Web-based Visualization and Performance Analysis MQ and Database Service Discovery Business Rules and BPM Integration .NET Input, Dynamics, MSMQ Message Broker V8 FP2 Q1 2013 Message Broker V8 FP1 Q2 2012 Message Broker V8 Q4 2011 Healthcare Connectivity Pack V8 Q1 2013 Healthcare Connectivity Pack V7 FP2 Q1 2012 7 © 2013 IBM Corporation WebSphere Message Broker DICOM Medical Imaging Web-based Operational Monitoring CDA Analytics and Reporting Message Broker V8 Exploitation Healthcare Connectivity Pack V8 FP1 Q3 2013 V9 FP1 Q4 2013 IBM Integration Bus - Industry Packs Roadmap WMB Healthcare Pack V8 - Q1 2013 DICOM Medical Imaging Web-based Operational Monitoring CDA Analytics and Reporting Message Broker V8 Exploitation IIB Healthcare Pack 1.0 Q1 2014 IIB V9 Q2 2013 IIB Retail Pack 1.0 - Q4 2013 IBM's plans, directions, and intent are subject to change or withdrawal 8 © 2013 IBM Corporation In-store processing Store to HQ Web Operational Monitoring More industries Architektur - IBM Integration Bus Integration Toolkit Integration Node Integration Server Integration Server Integration Explorer Integration Toolkit – Entwicklung und Test – Basiert auf Rational Application Developer Integration Explorer – Administration Tool – Plug-In im MQ Explorer 9 © 2013 IBM Corporation WebSphere Message Broker Integration Node – Laufzeitumgebung in der die Message Flows ausgeführt werden – Integration Server - Isolation und Scalierbarkeit – Viele verschiedene Plattformen – Setzt auf MQ Queue Manager auf Runtime Komponenten Eine oder mehrere ‘Integration Server’, welche jeweils mehrere Message Flows beinhalten – Isolation und Skalierbarkeit – Effektive Ausnutzung von Multi-core Prozessoren Integration Node Integration Server Integration Server Integration server auf Windows, z/OS, AIX, HP, Solaris, Linux (Intel, zSeries, PPC) Pro Server ist ein lokaler MQ Queue Manager erforderlich Queue Manager © 2013 IBM Corporation Demo …..Anlegen Integration Server, Integration Toolkit, Integration Explorer © 2013 IBM Corporation A Broad Range of Supported Platforms and Environments Broad range of operating system and hardware platforms supported – AIX, Windows, z/OS, HP-UX, Linux on xSeries, pSeries, zSeries, Solaris (x86-64 & SPARC), Ubuntu – Optimized 64-bit support on all platforms; 32-bit option for development platforms (Windows & x/Linux) – New support for Windows 8 and Windows Server 2012; .NET CLR V4.5 included on Windows Virtual images for efficient utilization & simple provisioning – Extensive support for virtualized environments, e.g. VMWare, AIX Hypervisor… any! – IBM Workload Deployer for x/Linux & AIX – Support for Pure on POWER hardware to complement xLinux – SmartCloud and IBM Workload Deployer images for simplified solution provisioning Includes access to full range of industry standard databases and ERP systems – DB2, Oracle, Sybase, SQL Server, Informix, solidDB – Open Driver Manager support enables new ODBC databases to be accessed – JDBC Type 4 for popular databases – SAP, Siebel, Peoplesoft, JDEdwards at no additional cost Traditional OS Public Cloud Technology components and pre-requisites – Java 7 on all platforms – MQ 7.5 prerequisite (7.1 on z/OS) Private Cloud IBM Workload Detailed System Requirements Deployer http://www.ibm.com/software/integration/wbimessagebroker/requirements/#V90 12 © 2013 IBM Corporation WebSphere Message Broker IBM Pure WebSphere Message Broker – Protokolle und Anwendungen Industry and Vendor Protocols IBM Protocols WebSphere MQ (+ File Transfer Edition + C:D) Any 3rd-party JMS (Enterprise applications (+ managed file transfer)) (TIBCO EMS, Sonic MQ, BEA JMS, webMethods, See Beyond, Vitria) WebSphere MQ Everyplace TIBCO Rendezvous (Mobile device applications) (plug-in component) WebSphere MQ Telemetry HTTP and HTTP(S) (RFID, sensors & actuators) FTP and File WebSphere MQ Real-time (Very low latency over WANs, and the Internet) TCP/IP Sockets WebSphere MQ Multicast SMTP (Reliable Multicast Messaging (RMM)) (Very low latency for LANs) SAP CICS Oracle Siebel JDEdwards Peoplesoft Enterprise Applications 13 © 2013 IBM Corporation Custom WebSphere Adapters Existierende Anwendungen am ESB anschliessen Wiederverwendung von Anwendungsdaten und -logik End-to-end Interaktion mitgelieferte Adapter und Entwicklung eigener Adapter per Toolkit ESB ROUTING MATCHING CONVERTING messages between services granularity of services exposed to applications TRANSFORMING HANDLING transport protocols between message formats between requestor and service requestor and service business events from disparate sources z/OS and Linux on System z Adapter z/OS and Linux on System z Adapter Linux on System z Adapter Adapter Adapter z/OS and Linux on System z E-Business Suite 14 © 2013 IBM Corporation Adapter CICS,IMS Woche der Anwendungsentwicklung, Ehningen, 27.3.2014 Carsten Mai IBM Integration Bus Message Modeling © 2013 IBM Corporation The Challenge Unterschiedlichste Datenformate müssen verarbeitet werden ... BINARY 00011110010010011010010 10010010010010010000011 11010100101010110010010 10010010010010001010010 10010010101010101000100 11100010100010010001001 00100100100100101010010 01010100100010010010010 01001001110001010010101 01010101010010010101001 00100010010100101000010 10101010001001010001001 01001010100101010100101 01100101000000000001111 10010010010101110010010 01010101001010101101111 STREAM TABLE COPYBOOK Make Model PKG Extended_Fea tures Ford Prefect 34890 2984782q, 93847920, 3438084 Ford Prefect 34890 2984782q, 93847920, 3438084 Ford Prefect 34890 2984782q, 93847920, 3438084 Ford Prefect 34890 2984782q, 93847920, 3438084 Ford Prefect 34890 2984782q, 93847920, 3438084 Ford Prefect 34890 2984782q, 93847920, 3438084 PROPRIETARY 01 03 05 TP-API-CB. TP-AGAPI-CB. TP-AGAPI-REQUEST PIC X(40). 88 TP-AGAPI-INITIALIZE-REQUEST VALUE 'INITIALIZE-MAPPING'. 88 TP-AGAPI-PERFORM-MAPPING VALUE 'PERFORM-MAPPING'. 88 TP-AGAPI-FINISH-MAPPING VALUE 'FINISH-MAPPING'. 05 TP-AGAPI-VERSION PIC X(04). 88 TP-AGAPI-VERSION-VALID VALUES ARE '0100' '0200'. 88 TP-AGAPI-VERSION-0100 VALUE '0100'. 88 TP-AGAPI-VERSION-0200 VALUE '0200'. 05 TP-AGAPI-RESPONSE. 10 TP-AGAPI-RESPONSE-CODE PIC 9(04) COMP. 88 TP-AGAPI-ALL-OKAY VALUE 0. 88 TP-AGAPI-REQUEST-ERROR VALUE 1. 88 TP-AGAPI-INITIALIZE-ERROR VALUE 2. 88 TP-AGAPI-MAP-ERROR VALUE 3. 88 TP-AGAPI-FINISH-ERROR VALUE 4. 88 TP-AGAPI-UNKNOWN-LOOP-ID VALUE 5. 88 TP-AGAPI-NO-ALGORITHM VALUE 6. 88 TP-AGAPI-NO-PARTNER VALUES 7 15. 88 TP-AGAPI-NO-APPLICATION VALUE 8. 88 TP-AGAPI-ALGORITHM-IO-ERROR VALUE 9. 88 TP-AGAPI-FATAL-GATEWAY-ERROR VALUE 10. 88 TP-AGAPI-GATEWAY-WRITE-ERROR VALUE 11. 88 TP-AGAPI-PARTNER-IO-ERROR VALUE 12. 88 TP-AGAPI-BAD-VERSION VALUE 13. 88 TP-AGAPI-BAD-NUMERIC-TYPE VALUE 14. 88 TP-AGAPI-NO-ALIAS VALUE 15. 88 TP-AGAPI-ACCESS-ERROR VALUE 16. 10 TP-AGAPI-RESPONSE-MESSAGE PIC X(80). 05 TP-AGAPI-APPLICATION-ID PIC X(10). 03 01 CASH RECONCILATION 10029847 - $100,000,000.00 13948589 - $679,495,094.98 13950967 - $588,345,058.00 13950968 - $000,000,000.00 14001321 - $098,957,038.12 AAA: HT4459 AAA: B33566 AAA: C4058G AAB: 948409 AAB: 874931 27 files EBCDIC DDA Application Updates OH,257*IN,142*MI,1 54*WI,80*MT,5*ID,8 *WY,3*CO,21*NM,8* AZ,15*UT,13*NV,4* MN,48*MO,67*ND,9 *SD,9*KS,27 DUNS 0123 F046000INV for 2 months 120799 12 718-339-1700I43989D-2 120799999-b 003000010000 DUNS 4445 P55590 120799499QR 000004004000 ãÖ@Ô…™ƒ£– ™z@Ö•¥… ™£@”…@£– @ÅÂÃÄÉà <MSG 19934749> <ACCT BAL RPT> <ACCTNUM><“14001321”> <ENDBALANCE><” $098,957,038.12”> <DEBIT><“103048382$394,394.00”> <DEBIT><“103048383$001,293.65”> <CREDIT><“987463921$928,943.67”> </ACCTNUM> </MSG> 413 msgs © 2013 IBM Corporation Parser Model Input Message Bit-stream F r e d S m i t h , G r a p h i c s Parser converts bit-stream to logical structure © 2013 IBM Corporation Parser converts logical structure to bit-stream < o r d e r > < n a m e > M r . S m i t h < / n … Output Message Bit-stream Model 17 C a r d … WebSphere Message Broker Message Modeling Physical Logical <order> <name> <first>John</first> <last>Smith</last> </name> <item>Graphics Card</item> <quantity>32</quantity> <price>200</price> <date>07/11/09</date> </order> Order Name John,Smith,Graphics Card, 32,200,07/11/09 John Smith............ Graphics Card......... 3220020071109......... 18 © 2013 IBM Corporation WebSphere Message Broker First String Last String Item Qty Price Date String Integer Integer Date Definieren von Message Modellen C Header COBOL WSDL Copybook Pre-built XML Schema DTD Enterprise Information System (SAP, Siebel, PeopleSoft) File Import DFDL/Message Set Parsers Message Broker 19 © 2013 IBM Corporation WebSphere Message Broker SOAP, MIME, CSV, IDOC, SWIFT, EDIFACT, X12, FIX, HL7, etc Define your own using the Eclipse-based Tooling Unterstützt alle Datentypen High Performance XML Parsing – – – Standardkonformer XML Parser (XMLNSC Domain) mit komplettem Funktionsumfang High Performance XML Schema Validierung Erweitertes 'Opaque Parsing' für optimale XML Subtree Verarbeitung Unterstützt die gebräuchlichen binären Datentypen in Text-Messages (TDS domain) – – hexadezimale Inhalte in Daten-Strukturen; Wiederholungsreferenzen CSV Standard – vorgefertigtes Datenmodel im Toolkit © 2013 IBM Corporation Datenmodellierung mit DFDL Einfacher und leistungsfähiger Standard für Datenmodellierung Für binäre, Text- & Industriestandard Datenformate • Logische Struktur mit Beschreibung der physischen Formate • z.B. Endian, ASCII/EBCDIC, Padding, Ausrichung… Data Format Description Language (DFDL) • in IBM und nicht-IBM Produkten • forge.gridforum.org/projects/dfdl-wg Werkzeuge für leichtes Erstellen der Datenmodelle 'Quick wizards' für Beispieldaten (z.B.) CSV, record oriented data Importer (z.B.) COBOL copybooks DFDL editor für 'power users' • Erstellen des logischen Modells & Definieren der physischen Ausprägungen Test Parsen und Testdaten-Generierung Test, ob DFDL-Definition den Testdaten entpricht • Parser-Trace mit Erfolg-/Fehlermeldungen Auto-Generierung von Testdaten DFDL-Parser kann von allen Broker-Nodes genutzt werden Hervorragende Performance • Unterstützt Streaming, partial Parsing … 21 © 2013 IBM Corporation WebSphere Message Broker Agenda DFDL – a new standard for modeling text and binary data DFDL support in IIB 22 © 2013 IBM Corporation Data modeling – why DFDL? Across organisations, the ability to exchange data is of vital importance But there has been no universal standard for modeling general text and binary data – XML -> use XML Schema – RDBMS -> use database schema – Text/binary -> ?? Existing standards are too prescriptive: “Put your data in this format!” IBM products evolved their own way of modeling text and binary data based on customer need. Examples… – WebSphere Message Broker: MRM message set – WebSphere ESB, IBM Process Server: Data Handlers – Transformation Extender: Type Trees – DataPower: FFD – Cast Iron: Flat File Schema – Sterling Integrator: DDF and IDF files DFDL: a universal, shareable, non-prescriptive description for general text & binary data formats 23 © 2013 IBM Corporation Data Format Description Language (DFDL) A new open standard – From the Open Grid Forum (OGF) – Version 1.0 – ‘Proposed Recommendation’ status A way of describing data… – It is NOT a data format itself! That can describe any data format … – Textual and binary – Commercial record-oriented – Scientific and numeric – Modern and legacy – Industry standards While allowing high performance … – Choose the right data format for the job Leverage XML technology and concepts – Use W3C XML Schema subset & type system to describe the logical format of the data – Use annotations within the XSD to describe the physical representation of the data – Use XPath when referencing fields within the data Support round-tripping – Read and write data in described format from same description Keep simple cases simple – Simple descriptions should be human readable Generality – Think “Type Tree + MRM + more” 24 © 2013 IBM Corporation Example – Delimited text data Separator Initiator Initiator intval=5;fltval=-7.1E8 ASCII text integer ASCII text floating point Separators, initiators (aka tags), & terminators are all examples in DFDL of delimiters 25 © 2013 IBM Corporation Example – DFDL schema <xs:complexType name=“myNumbers"> <xs:sequence> <xs:annotation> <xs:appinfo source="http://www.ogf.org/dfdl/v1.0"> <dfdl:sequence separator=“;” encoding=“us-ascii”/> </xs:appinfo> </xs:annotation> <xs:element name=“myInt" type=“xs:int”> <xs:annotation> <xs:appinfo source="http://www.ogf.org/dfdl/v1.0"> <dfdl:element representation="text" encoding=“us-ascii" textNumberPattern=“###0” lengthKind="delimited" initiator="intval=" .../> </xs:appinfo> </xs:annotation> </xs:element> <xs:element name=“myFloat" type=“xs:float”> <xs:annotation> <xs:appinfo source="http://www.ogf.org/dfdl/v1.0"> <dfdl:element representation="text" encoding=“us-ascii" textNumberPattern=“##0.0#E0” lengthKind="delimited" initiator="fltval=" .../> </xs:appinfo> </xs:annotation> </xs:element> DFDL DFDL </xs:sequence> properties annotation </xs:complexType> 26 © 2013 IBM Corporation ; intval=5 fltval=-7.1E8 Example – DFDL schema (short form) <xs:complexType name=“myNumbers"> <xs:sequence dfdl:separator=“;” dfdl:encoding=“us-ascii” > <xs:element name=“myInt" type=“xs:int” dfdl:representation="text" dfdl:encoding=“us-ascii" textNumberPattern=“###0” dfdl:lengthKind="delimited" dfdl:initiator="intval=" … /> <xs:element name=“myFloat" type=“xs:float” dfdl:representation="text" dfdl:encoding=“us-ascii" textNumberPattern=“##0.0#E0” dfdl:lengthKind="delimited" dfdl:initiator="fltval=" … /> </xs:sequence> </xs:complexType> DFDL properties 27 © 2013 IBM Corporation DFDL processor A DFDL processor uses a DFDL schema to understand a data stream It consists of a DFDL parser and a DFDL serializer The DFDL parser reads a data stream and creates a DFDL ‘infoset’ The DFDL serializer takes a DFDL ‘infoset’ and writes a data stream intval=5;fltval=-7.1E8 28 © 2013 IBM Corporation DFDL DFDL Processor Processor <Document> <Document> <Element name=“myNumbers”/> <Element name=“myNumbers”/> <Element name=“myInt” dataType=“xs:int” <ElementdataValue=“5”/> name=“myInt” dataType=“xs:int” dataValue=“5”/> <Element name=“myFloat” dataType=“xs:float” <ElementdataValue=“-7.1E08”/> name=“myFloat” dataType=“xs:float” dataValue=“-7.1E08”/> </Element> </Element> </Document> </Document> <xs:complexType name=“myNumbers"> <xs:complexType name=“myNumbers">dfdl:encoding=“ascii” ... > <xs:sequence dfdl:separator=“;” <xs:sequence dfdl:separator=“;” dfdl:encoding=“ascii” ... > <xs:element name=“myInt" type=“xs:int” <xs:elementdfdl:representation="text" name=“myInt" type=“xs:int” dfdl:representation="text" dfdl:encoding="ascii“ dfdl:textNumberPattern=“###0” dfdl:encoding="ascii“ dfdl:textNumberPattern=“###0” dfdl:lengthKind="delimited" dfdl:lengthKind="delimited" dfdl:initiator="intval=“ ... /> dfdl:initiator="intval=“ ...type=“xs:float” /> <xs:element name=“myFloat" <xs:element name=“myFloat" type=“xs:float” dfdl:representation="text" dfdl:representation="text" dfdl:encoding="ascii“ dfdl:textNumberPattern=“##0.0#E0” dfdl:encoding="ascii“ dfdl:textNumberPattern=“##0.0#E0” dfdl:lengthKind="delimited" dfdl:lengthKind="delimited" dfdl:initiator="fltval=“ ... /> dfdl:initiator="fltval=“ ... /> </xs:sequence> </xs:sequence> </xs:complexType> </xs:complexType> DFDL features Text data types such as strings, numbers, zoned decimals, calendars, booleans Binary data types such as integers, floats, BCD, packed decimals, calendars, booleans Fixed length data and data delimited by text or binary markup Language data structures found in COBOL, C and PL/1 Industry standards such as SWIFT, HL7, FIX, HIPAA, X12, EDIFACT, ISO8583 Bi-directional text Bit data of arbitrary length Pattern languages for text numbers and calendars Ordered, unordered and floating content Default values on parsing and serializing Nil values for handling out-of-band data Fixed and variable arrays XPath 2.0 expression language including variables to model dynamic data Speculative parsing to resolve choices and optional content Validation to XML Schema 1.0 rules Scoping mechanism to allow common property values to be applied at multiple points Hide elements in the data Calculate element values 29 © 2013 IBM Corporation DFDL language - objects type element * * sequence group complexType choice DFDL properties are placed on yellow objects only 30 © 2013 IBM Corporation simpleType DFDL language – basic annotations 31 Annotation Used on Component Purpose dfdl:element xs:element xs:element reference Contains the DFDL properties of an xs:element and xs:element reference dfdl:choice xs:choice Contains the DFDL properties of an xs:choice. dfdl:sequence xs:sequence Contains the DFDL properties of an xs:sequence. dfdl:group xs:group reference Contains the DFDL properties of an xs:group reference to a group definition containing an xs:sequence or xs:choice. dfdl:simpleType xs:simpleType Contains the DFDL properties of an xs:simpleType dfdl:format xs:schema dfdl:defineFormat Contains a set of DFDL properties that can be used by multiple DFDL schema components. When used directly on xs:schema, the property values act as defaults for all components in the DFDL schema. dfdl:defineFormat xs:schema Defines a reusable data format by associating a name with a set of DFDL properties contained within a child dfdl:format annotation. The name can be referenced from DFDL annotations on multiple DFDL schema components, using dfdl:ref. © 2013 IBM Corporation DFDL language – more advanced annotations 32 Annotation Used on Component Purpose dfdl:assert xs:element, xs:choice xs:sequence, xs:group Defines a test to be used to ensure the data are well formed. Used only when parsing data. dfdl:discriminator xs:element, xs:choice xs:sequence, xs:group Defines a test to be used when resolving a point of uncertainty such as choice branches or optional elements. Used only when parsing. dfdl:escapeScheme dfdl:defineEscapeScheme Defines a scheme by which quotation marks and escape characters can be specified. This is for use with delimited text formats. dfdl:defineEscapeScheme xs:schema Defines a named, reusable escape scheme. The name can be referenced from DFDL annotations on multiple DFDL schema components. dfdl:hidden xs:sequence Defines a hidden element that appears in the schema for use by the DFDL processor, but is not part of the infoset. dfdl:defineVariable xs:schema Defines a variable that can be referenced elsewhere. This can be used to communicate a parameter from one part of processing to another part. dfdl:newVariableInstance xs:element, xs:choice xs:sequence, xs:group Creates a new instance of a variable dfdl:setVariable xs:element, xs:choice xs:sequence, xs:group Sets the value of a variable whose declaration is in scope © 2013 IBM Corporation Links OGF DFDL home page: http://www.ogf.org/dfdl/ DFDL 1.0 specification (pdf): http://www.ogf.org/documents/GFD.174.pdf DFDL 1.0 specification (html): http://www.ogf.org/dfdl/spec.php DFDL tutorial: http://forge.gridforum.org/sf/docman/do/listDocuments/projects.dfdl-wg/docman.root.curr DFDL-WG GridForge project: https://forge.ogf.org/sf/projects/dfdl-wg DFDL Wikipedia page: http://en.wikipedia.org/wiki/DFDL 33 © 2013 IBM Corporation Agenda DFDL – a new standard for modeling text and binary data DFDL support in IIB 34 © 2013 IBM Corporation DFDL support in runtime and toolkit DFDL models – Schema files reside in libraries – Not in Message Sets DFDL domain and high-performance parser – Available in nodes, ESQL, Java, … – On-demand, streaming parser – Use instead of MRM CWF/TDS Tooling for creating DFDL models in ITK – Guided authoring wizards – Language importer wizards – DFDL graphical editor DFDL model debugger – Debug parsing & writing of data in ITK – No deploy necessary! DFDL schema deployed to broker in BAR file – No dictionary file! 35 © 2013 IBM Corporation How does Message Broker use DFDL? Message models Schema files in Message Broker libraries NOT Message Set projects DFDL domain and model-driven parser All nodes, just like other domains and parsers Use instead of MRM CWF/TDS • More capable and higher performing than MRM Creating DFDL models Guided authoring wizards Language importer wizards DFDL editor Model debugger Debug parsing / writing of data within MB toolkit No deploy necessary! Models deployed to broker in BAR file No dictionary file! 36 © 2013 IBM Corporation WebSphere Message Broker Creating a DFDL model New launcher for creating Message Broker project artifacts Or drop existing DFDL schema onto Message Broker library 37 © 2013 IBM Corporation WebSphere Message Broker Select the type of data you are working with Wizards simplify Model Creation Guided authoring Using the DFDL editor Importing from other metadata Already have DFDL schema Select how you want to create the DFDL model 38 © 2013 IBM Corporation WebSphere Message Broker Creating Model using Guided Authoring Make selection Generated model 39 © 2013 IBM Corporation WebSphere Message Broker Creating Model using the Editor Outline view Logical structure view DFDL properties view Problem s view 40 © 2013 IBM Corporation WebSphere Message Broker Testing a model within the editor Parsed ‘infoset’ Run parser Sample Parsed data data 41 © 2013 IBM Corporation No deploy needed! Delimiters highlighted WebSphere Message Broker Hex view Debugging a Model Test Failure Parsed ‘infoset’ up to error Object in error Error messag e Model and data linked Parsed data up to error 42 © 2013 IBM Corporation Trace console WebSphere Message Broker DFDL domain and parser DFDL domain Specify schema & message On Demand or Complete parsing Streaming capability Validation 43 © 2013 IBM Corporation WebSphere Message Broker The DFDL parser is clever! Recursive-descent parser with look-ahead to resolve uncertainty: – Choice – Optional element – Variable array of elements Speculatively attempts to parse data – Until object is either ‘known to exist or not exist’ – Processing error causes the parser to • Suppress error, back track and make another attempt Example: – Tries 1st branch of a choice, but gets a processing error – Back tracks and tries the 2nd branch, which succeeds Discriminator annotation can assert that object is ‘known to exist’ – Prevents incorrect back tracking 44 Initiator (tag) can assert ‘known to exist’ © 2013 IBM Corporation WebSphere Message Broker Using IBM DFDL in other environments Allow the Java IBM DFDL classes to be used outside MB Update to MB license to permit IBM DFDL classes to be copied to remote locations and used from there by application programs – Similar idea to CMP API classes IBM DFDL classes would be fully supported in remote location Java Java Application Application intval=5;fltval=-7.1E8 45 © 2013 IBM Corporation IBM IBMDFDL DFDL for forJava Java <Document> <Document> <Element name=“myNumbers”/> <Element name=“myNumbers”/> <Element name=“myInt” dataType=“xs:int” <ElementdataValue=“5”/> name=“myInt” dataType=“xs:int” dataValue=“5”/> <Element name=“myFloat” dataType=“xs:float” <ElementdataValue=“-7.1E08”/> name=“myFloat” dataType=“xs:float” dataValue=“-7.1E08”/> </Element> </Element> </Document> </Document> Demo ….. Import COBOL → DFL © 2013 IBM Corporation Woche der Anwendungsentwicklung, Ehningen, 27.3.2014 Carsten Mai IBM Integration Bus Message Flows © 2013 IBM Corporation Message Flows Output target (Failure) Input source Output target Reusable Scalable Transactional Transform 48 © 2013 IBM Corporation WebSphere Message Broker Output target Message Flows Transaktional enthält die Verarbeitungs- und Datenmanipulationsoperationen produziert alle Ausgaben (und konsumiert die Eingabe) oder keine – abhängig vom Verarbeitungserfolg Multithreaded Verarbeitung eines Flows in einem Thread. Additional threads können definiert werden → erhöhter Durchsatz bei Spitzenlast können additional Threads genutzt werden, die bei Inaktivität an Pool zurückgegeben werden. Verschachtelung und Verkettung Wiederverwendbarkeit durch Subflows und Verketten individueller Flows 49 © 2013 IBM Corporation Applications und Libraries developing, deploying and managing your integration solutions Application • means of encapsulating resources to solve a specific connectivity problem • application can reference one or more libraries Library • a logical grouping of related routines and/or data • libraries help with reuse and ease of resource management • library can reference one or more libraries These concepts span all aspects of the Toolkit and broker runtime, and are designed to make the development and management of WMB solutions easier. © 2013 IBM Corporation WebSphere Message Broker Services developing, deploying and managing your service-oriented integration solutions. Service • An application with a well-defined interface Service interface is expressed via WSDL with a port type Service interface gives *service* application a structure! • Services promote encapsulation and isolation for serviceoriented integration solutions • Service can reference one or more libraries • Binding must be specified for successful deployment default binding is created out of the box Services span all aspects of the Toolkit and broker runtime, and are designed to make the development and management of service-oriented solutions easier in WMB. © 2013 IBM Corporation WebSphere Message Broker Nodes Bausteine der Message Flows Jeder Node Type erfüllt eine bestimmte Aktion (Input, Output, Verarbeitung,...) Viele unterschiedliche Typen – gruppiert in Kategorien im Message Flow Editor – ca. 100 Typen out-of-the-box 52 © 2013 IBM Corporation WebSphere Message Broker Node Terminology node error terminal output connectors input connector input message tree 53 © 2013 IBM Corporation input terminal Action output terminals WebSphere Message Broker output message trees Lots of Nodes are Built in [1] 54 © 2013 IBM Corporation WebSphere Message Broker Lots of Nodes are Built in [2] weitere Node-Typen mit Produkt-Erweiterungen und SupportPac erhältlich – z.B. WebSphere TX, Tibco RV, VSAM, QSAM Sie können Ihre eigenen User-Defined Nodes entwicklen (in C oder Java)! 55 © 2013 IBM Corporation WebSphere Message Broker Demo …..eine Art 'Hello World' © 2013 IBM Corporation Mediation Patterns - Examples Interaction Patterns Transformation & Routing Patterns Composite Patterns Examples 57 © 2013 IBM Corporation One-way Protocol transform Pub/Sub Event Prop. Transform + Canonical Adapter Request / Response Enrich Gateway Dispersion / Aggregation Log/Monitor + Route Distribute + Transform – Log - Route Correlate Transformation Pattern - Transform Enterprise Service Bus Service Provider Service Requestor Transformation Patterns Transform 58 © 2013 IBM Corporation Enrich Log/Monitor Routing Patterns Route Distribute Correlate Message Transformation Konvertieren eines (logischen) Message-Formates in ein anders Grafisch, easy to use Drag&Drop Felder und Folder, Funktionen 59 © 2013 IBM Corporation Konvertieren von XML in anderes Format Nutzt standard XSL Style sheets ESQL Java Leistungsfähige Transformation XPath-Anweisungen Integration von .NETProgrammen PHP XPath-Anweisungen Grafischer Mapping Node IBM Graphical Data Mapper (GDM) Visuelles Mappen und Transformieren der Source- in die Targetdaten • 'Code-free', hoch performant und skalierbar GDM für das gesamte IBM Produkt-Portfolio designed • z.B. Vollständige Kompatibilität der Map mit MDM Server V9 • Mapping Script Language (MSL) Format grafisches Mapping – einfach und leistungsfähig Transformationen auf Feldebene oder mit komplexen Strukturen • Conditionals (if then else), • Loops (for each), • Functions (target = f(source)) • & more! Datenbanken als Mapping Source und Target in Routing und Enrichment Scenarien) Ergänzt und unterstützt vorhandene Transformations-Sprachen • 'user defined transformation' in Java, SQL, XPath, .NET… einfaches Deployment Maps innerhalb einer BAR-File oder separat JIT compile • Source deploy + runtime compilation = enhanced performance 60 © 2013 IBM Corporation WebSphere Message Broker Deep Integration for .NET New node for native .NET program invocation – Call .NET programs directly via CLR V4; includes app domains for isolation – C#, VB .NET (COM), JScript & F# programming available natively in MB • Extensive range of .NET data types supported for easy integration Integrated Visual Studio Development – Create .NET nodes in Visual Studio; Native MB assemblies simplifies process • e.g. packages, templates, #using, debug, content assist etc – Visual studio compiled resources available without redeploy • Broker .NET watcher loads App Domain with most recent assembly Call .NET programs from new and existing MB nodes – Toolkit can introspect .NET assemblies to dynamically discover available methods • Automatically create appropriate language signatures to simplify invocation – (e.g.) ESQL can now directly invoke .NET programs using simple procedure call .NET performance compares favourably with native ESQL & Java transformations – .NET resource statistics show behaviour partitioned by app domain (calls, storage…) 61 © 2013 IBM Corporation WebSphere Message Broker Transformation Pattern - Enrich and Augment Enterprise Service Bus Service Provider Service Requestor Database, File, or Static data Transformation Patterns Transform 62 © 2013 IBM Corporation Enric h Log/Monitor Routing Patterns Route Distribute Correlate Enrich and Augment IF Body.Order.Date < ‘2008/01/01’ THEN INSERT INTO Database.OldOrders (LastName,Item,Quantity) VALUES (Body.Order.Name.Last, Body.Order.Item, Body.Order.Quantity); ENDIF; Output message Look up employee 00002 (Key not found) Look up employee 00002 Output message DB Select © 2013 IBM Corporation DB Insert /Update Database Input Node Database Input node – Triggered & polled Queries um Message Flow zu starten – Supports Database Update Technologien: • Changes (Insert Update, Delete) in Database Tables --> Database Trigger Records in Event Table Event Table 1.Database trigger 1.Get Event 1.Notification 1.Table update User Table 1.Get Data Database Processor 1.Propagate Data Nutzt Data Tools für 'Code free' oder SQL basierte Queries – RAD Tools erlauben das graphische Erstellen der Database Input Node Properties – Power user können Notification, GetEvent, RetrieveData, PresentData & EndEvent SQL routines spezifizieren Operational Control – Unterstützt alle Message Broker databases – MB Explorer Resource Statistics pro Database 64 © 2013 IBM Corporation WebSphere Message Broker Transformation Pattern – Log or Monitor Enterprise Service Bus Service Provider Service Requestor Database, File, or Static data Transformation Patterns Transform 65 © 2013 IBM Corporation Enrich Log/Monitor Routing Patterns Route Distribute Correlate Monitoring und Auditing Erzeugen von Monitoring und Audit Events im Message Flow – Einsicht in Anwendungs- und Service-Verbindungen – Business Monitoring & Intelligence und Auditing Monitor Analyze Administration und Entwicklungszeit-Konfiguration – jeder MB Node hat einen ‘Monitor’-Tab um Events zu konfigurieren – Transaction: Start, End, Rollback ausgelöst durch Input Nodes – Terminal: von jedem Terminal an jedem Node – Konfigurierbar: Payload Data, Inhalt, Idendität, Korrelations- & Sequencing Daten – Non-invasive: Monitoring-Profile können vorhandenen Flows zugefügt werden Steuerung im Betrieb – Ein-, Ausschalten und Ändern der Event-Erzeugung: • mqsichangeflowmonitoring Kommando – Events werden zu Topics per MQ-Transport publiziert – excellente Performance-Charakteristik Integration mit anderen Produkten – WebSphere Business Monitor – Überwachen und Analysieren von KPIs – Ausführliches Beispiel enthalten – WBMTM – Audit, Repair, Replay 66 © 2013 IBM Corporation Routing Pattern - Route Enterprise Service Bus Service Provider Service Requestor Transformation Patterns Transform 67 © 2013 IBM Corporation Enrich Log/Monitor Routing Patterns Route Distribute Correlate Routing and Distribution Patterns © 2013 IBM Corporation Mediation Patterns – Common Composite Pattern Example Enterprise Service Bus Service Provider Service Requestor Database, File, or Static data + Canonical Adapter Protocol+Data Transform 69 © 2013 IBM Corporation + + Transform – Log - Route Managed File Transfer Unterstütze MFT Produkte – MQ Managed File Transfer (MQ FTE) – Sterling Connect:Direct Business Partners Sterling Enterprise Apps Message Broker Input nodes – Message Flow startet Verarbeitung sobald der FTE Agent einen abgeschlossenen Filetranfer anzeigt – Metadata im LocalEnvironment erlaubt intelligente Verarbeitung – File kann als ganzes oder als einzelne Sätze verarbeitet werden (wie File Node) Output nodes – Erzeugt File und initiiert Transfer – LocalEnvironment ermöglicht dynamisches Setzen der Transferparameter und Metadaten FTE & C:D Agents werden automatisch Installiert, Konfiguriert und Gemanaged 70 © 2013 IBM Corporation WebSphere Message Broker IMS Node IMS Request node – Message Flows können IMS Transactionen aufrufen und Antworten verarbeiten – Typische Scenarien: Web Service->IMS, File->IMS, SAP->IMS… – Hochperformant, synchron, Multi-platform Zugriff auf IMS – ergänzt MQ IMS Bridge & IMS Web Services Synchroner Aufruf von IMS Transactions und Command – Unterstützt viele IMS Facilities •MPP, BMP und Fast Path Transaction Regions •Commit mode 0, 1 •SyncLevel NONE, CONFIRM •Single & multi segment IMS messages nutzt IMS TM Resource Adapter – Integraler Bestandteil von Message Broker •IMS Connect ist erforderlich 71 © 2013 IBM Corporation WebSphere Message Broker CICS Request Node CICS Request Node – – – – Message Flows können CICS Programme/Transaktionen aufrufen und Antworten verarbeiten Typische Scenarien: WebService->CICS, File->CICS, SAP->CICS, IMS->CICS Hochperformanter, synchroner, Multi-platform Zugriff auf CICS ergänzt MQ CICS Bridge und Web Services Synchroner Aufruf von CICS Programmen – Specification von COMMAREA Request & Response bzw. Channel Container – Timeouts, APPLIDs, SYNCONRETURN ebenso verfügbar Security – Link level via SSL, und Message Level Identity via security profiles Flexibler Topology Support – 2 Tier: MB->CICS – 3 Tier: MB->CTG->CICS • CTG ermöglicht zusätzliche HA und WLM Optionen 72 © 2013 IBM Corporation WebSphere Message Broker Leistungsfähige Anwendungsentwicklung Umfassende AD Perspektive – unterstützt alle AD life cycle Schritte – Visuell konsistent mit Integration Explorer Create, modify, delete Nodes&Servers – Create local Node & remote connect – Create local & remote Servers – Start & stop Nodes & Servers – Autokonfigurieren/Konfigurieren der debug Ports – Automatisches Deployment beim Unit test (.mbtest) Schnelles Compile, Debug, Test (CDT) – Debug local & remote – Drag & drop Message Flows direkt – Test message flow direkt oder .mbtest – Drag & drop BARs vom FileSystem – Synchrones Deployment Status Log 73 © 2013 IBM Corporation WebSphere Message Broker IIB Patterns 74 © 2013 IBM Corporation WebSphere Message Broker Programmierbare Message Flows Message Flows per Programm generierbar Kompletter Flow-Lebenszyklus per Java API verfübar • Create flow, add/remove node, change properties • erweitert CMP API um Deployment & Konfiguration Ein API für MBTK, MBX, commands, end users & 3rd Party Message Broker API Ein API ermöglicht Erzeugen und Managen aller IIB Ressourcen z.B. Umbenennen eines Message Flow File msgFlow = new File("main.msgflow"); MessageFlow mf1 = FlowRendererMSGFLOW.read(msgFlow); mf1.setName(mf1.getName()+"Generated"); 75 © 2013 IBM Corporation WebSphere Message Broker Simplify Management mit REST CMP HTTP MQ REST based management API – Complements & compatible with existing CMP interface – HTTP client can manage MB independent of CMP • Includes interface for message record & replay REST Broker GET /admin/eg/MYEGNAME HTTP/1.1 From: machine@ibm.com User-Agent: MyApp/1.0 URI for all MB Resources – ATOM data format for payload describes MB resources & related entities – Intuitively mapped to MB artefacts – Natural navigation of MB resources • e.g. Execution group document contains EG properties & per-message flow ATOM feed HTTP/1.1 200 OK Date: Sun, 1 Oct 2011 21:46:59 GMT Content-Type: text/html Content-Length: 426 <?xml version="1.0" encoding='utf-8'?> <service xmlns=http://www.w3.org/2007/app xmlns:atom="http://www.w3.org/2005/Atom"> <workspace> <atom:title>Execution group feeds</atom:title> <collection href="http://my.broker.com/admin/eg/MYEGNAME/resources" > </collection> </workspace> <executiongroup description.long="" description.short="" ... > </executiongroup> </service> Fully open interface can be exploited by 3 rd party tools – HTTP REST/ATOM formats published & maintained for use by external users – Enables widgets, mash-ups & other situational applications 76 © 2013 IBM Corporation WebSphere Message Broker Web Administration for Universal Access 77 © 2013 IBM Corporation WebSphere Message Broker Record & Replay Record, Edit und Replay von In-flight Daten record edit – umfassendes Audit von Messages, Web, ERP, File,.. – Flexible Topologie: ein oder mehrere Nodes für recording, capture & replay replay Data Recording, Capture & Store – Grafisches Konfigurieren der Aufzeichnung inclusive der kompletten oder Teilen der Daten – Datenquellen momentan beschränkt auf MB-Flows (incl. MB6.1, MB7 & MB8) – Aufzeichnen von Events auf *jedem Node* lokal oder remote • jeder Server kann als 'capture agent' fungieren • 'Configurable service' definiert topic und Target-Database – Agent speichert Daten in einer der unterstützten Datenbanken • Oracle, DB2, SQL Server, Sybase, Informix… Web Tooling für View, Query data – Editors für View, Query Payloads – Web Administration & Capture Replay - Redelivery oder Flow Reprocessing – Replay ausgewählter Daten in Flows oder Applicationen – MB admin konfiguriert logische Ziele • Zuordung zu physischem Protocol, z.B. MQ: {Qmgr, Q} – Nutzer wählt Ziel aus Drop-down Liste 78 © 2013 IBM Corporation WebSphere Message Broker Cached Data – WebSphere eXtreme Scale Built-in facility to share data between multiple brokers Supports highly availability and scalable data sharing Improves mediation response times for reused data No extra moving part – runs within IIB itself Cache shared between flows, integration servers & nodes – Seamless access to global cache from all message flows “elastic scaling” Typical scenarios include multi-broker request-reply and multi-broker aggregation – Improve mediation response times and dramatically reduce application load Fully integrated with IIB Monitoring and Reporting tools – shows cache interactions and other relevant statistics – Activity log shows cache agent operations for write and read No additional WXS license required for IIB use “elastic caching” 79 © 2013 IBM Corporation Worklight mobile services patterns Mobile enable any enterprise service in 2 clicks ! Build robust solutions with integrated caching and security Push data to mobile users from enterprise applications Create end-to-end mobile solutions for Microsoft .NET ● Four new IIB development patterns – Fully integrated in Integration toolkit – Generate Worklight adapter, test application and supporting IIB flows Simple Service to mobile – WSDL based 1. Resource access from mobile - Controlled access to enterprise data as a resource: methods for read create, update and delete 2. Microsoft .Net service pattern 3. Queue based Push Notification Patterns exploits value add IIB capability including policy decision point for access authorisation and WebSphere eXtreme Scale for performance + 80 © 2013 IBM Corporation Why run IIB on z/OS? The golden rules… • IIB on z/OS takes full advantage of the z/OS Sysplex – The only platform supporting MQ Shared Queues for high-availability and optimized “pull” load-balancing with the very best in scalability • IIB on z/OS utilizes many of the other inherent features of z/OS RACF security WLM resource optimisation SMP/E installation control SMF performance recording RRS transaction management for speed and reliability ARM restart • IIB on z/OS offers several specific interfaces to the z/OS platform – QSAM and VSAM nodes – Using WMB on z/OS will typically be much more efficient if some of the interfaced applications are co-located on z/OS • Running on the z/OS and System z platform brings all the security and robustness of the the mainframe platform Looking for the highest scalability and high-availability for a strategic corporate ESB 81 © 2013 IBM Corporation Demo … Web Service Facade für CICS Programm 82 © 2013 IBM Corporation IBM Integration Bus Universal Connectivity – Simplify application connectivity to provide a flexible and dynamic infrastructure Routes and transforms messages FROM anywhere, TO anywhere – Supports a wide range of protocols • MQ, JMS 1.1, HTTP(S), Web Services, File, EIS (SAP,SEBL…), TCP/IP, User Defined – Supports a broad range of data formats • Binary (C/COBOL), XML, Industry (SWIFT, EDI, HIPAA…), User Defined – Interactions and Operations • Route, Filter, Transform, Enrich, Monitor, Distribute, Decompose, Correlate, Detect… Simple programming – Patterns based for top-down, parameterized connectivity of common use cases • Web Service façades, message oriented processing, queue to file… – Construction based for bottom-up assembly of bespoke connectivity logic • Message flows to describe application connectivity comprising… • Message nodes which encapsulate required integration logic which operate on… • Message tree which describes the data in a format independent manner – Transformation options include graphical mapping, PHP, Java, ESQL, XSL and WTX Operational Management and Performance – Extensive Administration and Systems Management facilities for developed solutions – Wide range of operating system and hardware platforms supported – Offers performance of traditional transaction processing environments 83 © 2013 IBM Corporation WebSphere Message Broker Woche der Anwendungsentwicklung, Ehningen, 27.3.2014 Carsten Mai IBM Integration Bus Mapping Node © 2013 IBM Corporation Agenda Mapping Node overview Structured and functional mapping Array processing XPath 2.0 Message assembly processing Database mapping User-defined functions 85 © 2013 IBM Corporation WebSphere Message Broker New Mapping Node for Message Broker Version 8 Improved usability – Simple learning curve – Simple transformations are simple to create – Complex transformations build on concepts previously mastered – Visual debugger support with breakpoints, single step, variables view Improved capability – Builds upon ‘best of breed’ mapping technologies in IBM products – Full XPath 2.0 scripting support • Standards-based language designed for hierarchical data structures Improved performance – Dedicated runtime engine 86 © 2013 IBM Corporation WebSphere Message Broker Broker overview – flows, nodes, message tree Parser associated with bit-stream Parser invoked (on demand) bit-stream tree Parser invoked (in reverse) tree bit-stream Input node reads bit-stream Node accesses logical message tree Output node writes bit-stream Transform Output Input 87 © 2013 IBM Corporation WebSphere Message Broker Creating a new map New maps are created by double clicking on a mapping node, or from the project view Dialog box launched to select source and target definitions – DFDL, XSD, Message Set New map is opened in mapping editor 88 © 2013 IBM Corporation WebSphere Message Broker Specify source and target types Select root elements Supports: – Message Sets – XSD schemas – DFDL schemas 89 © 2013 IBM Corporation WebSphere Message Broker The Mapping Editor 90 © 2013 IBM Corporation WebSphere Message Broker The Mapping Editor Input / Source tree 91 © 2013 IBM Corporation WebSphere Message Broker The Mapping Editor Output / Target tree 92 © 2013 IBM Corporation WebSphere Message Broker The Mapping Editor Properties editor 93 © 2013 IBM Corporation WebSphere Message Broker The Mapping Editor Transform 94 © 2013 IBM Corporation WebSphere Message Broker The Mapping Editor Toolbar 95 © 2013 IBM Corporation WebSphere Message Broker The Mapping Editor Name + Expand - Collapse 96 © 2013 IBM Corporation WebSphere Message Broker Type Occurrence The Mapping Editor Find elements anywhere in the tree Click <Show all> To remove filter 97 © 2013 IBM Corporation WebSphere Message Broker The Mapping Editor Help system - progressive disclosure 98 © 2013 IBM Corporation WebSphere Message Broker The Mapping Editor Source and target trees – Shows structure of the message using an expandable tree – Each element shows name, repeatability (minOccurs..maxOccurs), and type – If the list of elements is too long, then the user can ‘filter’ the list of displayed elements (useful also for searching a large schema) Transform – Defines what to do with the data between the source and the target – Drop down list contains available transforms appropriate to source and target types Properties view – For customising the nature of the transforms 99 © 2013 IBM Corporation WebSphere Message Broker Mapping the Message Broker tree The mapping node understands the WMB ‘Message Assembly’ structure A new map provides default mappings for the ‘Properties’ header – Message ‘Set’, ‘Type’ & ‘Format’ fields are automatically assigned values – All other fields are copied from the input message Properties header The target ‘domain’ (parser) is set in the properties page Full support for – All transport headers (MQMD, RFH2, JMS, HTTP, etc) – LocalEnvironment tree 100 © 2013 IBM Corporation WebSphere Message Broker Creating mappings Drag and drop source to target (can also drag target to source) Choose a transform (how to map) – Defaults to most commonly used transform appropriate to the source and target Basic transforms – Move • Simple copy of source value to target value • Can be used if target is same type (simple or complex) as source • If source and target are repeating element, then there is an implicit loop • If target is optional (according to schema), then element is only created if the source exists – Convert • For casting values between different source and target simple types – Assign • For giving a target a fixed value (no source) • Type the value in the Properties view 101 © 2013 IBM Corporation WebSphere Message Broker Creating mappings 102 © 2013 IBM Corporation WebSphere Message Broker Map navigation Breadcrumb trail Up one level Down one level 103 © 2013 IBM Corporation WebSphere Message Broker Function Transforms The target value can be computed by applying a function to one or more inputs Large function library from XPath 2.0 String manipulation – E.g. concatenation, sub-string, matching, find/replace, regex Numeric calculation – E.g. counting, summing, rounding, min/max etc Date/time processing – E.g. creating timestamps, extracting components of date/time, duration processing 104 © 2013 IBM Corporation WebSphere Message Broker Structured Mapping Maps can be broken down into a hierarchy of ‘nested’ maps using one of the structural transforms – Local • Map a complex source to a complex target in a separate ‘page’ • Reduces clutter in the mapping editor – For each • Iterate over a repeating source element (array) – Append • For appending one array to the end of another – Join • For merging the data from two or more arrays – Submap • Similar to local, but the mapping is defined in a separate map file and is reusable These transforms create a structural container between complex elements – Drill down to create the mappings between the children of these elements – Good practice to use ‘Local’ to avoid clutter in large maps 105 © 2013 IBM Corporation WebSphere Message Broker Conditional Mapping Individual transforms can be configured to occur only if a condition is met – ‘Condition’ tab on properties page • User enters an XPath 2.0 predicate • Content assist available • XPath 2.0 builder available • Mapping is only performed if predicate evaluates to ‘true’ 106 © 2013 IBM Corporation WebSphere Message Broker Conditional Mapping If/Else transform – Allows ‘else’ condition to be mapped as well – ‘Grouped transform’ containing as many else-if conditions as necessary – This is a structural mapping • Each clause contains a nested map Each condition is individually mapped XPath predicates are set in the properties view 107 © 2013 IBM Corporation WebSphere Message Broker Navigate into nested map To configure transformations Array Processing – Cardinality property Cardinality – If the source is an array (repeating element – simple or complex), can specify which elements in the array (by index, starting at 1) are mapped 108 © 2013 IBM Corporation WebSphere Message Broker Array Processing - Looping ‘For each’ transform – loops over each element source element in the repeating structure and produces the same number of target elements – How the structure gets mapped is determined by the nested map – click on the transform to drill down into the nested map If you don’t want to process all of the element in the input array – Use the ‘Cardinality’ tab in the properties page to specify which elements to include. • More than one index can be specified using a comma separated list – 1, 3, 5, 8 • A range of indices can be specified with a colon – 1:5, 8:* (* - means end) – Use the ‘Filter inputs’ tab to specify an XPath 2.0 filter expression Sorting the elements in the array – Use the ‘Sort’ tab in the properties page to specify how to sort the input array 109 © 2013 IBM Corporation WebSphere Message Broker Advanced Array Processing Append transform – concatenates the contents of one array to another – Has two (or more inputs), one output. The order in which the inputs are processed (appended) is specified in the ‘Order’ tab in the properties page. Join transform – merges contents of two (or more) arrays together. – Arrays are correlated by specifying a join condition (XPath 2.0 predicate) – Analogous to the ‘INNER JOIN’ of a relational database 110 © 2013 IBM Corporation WebSphere Message Broker Automap Automates the task of producing transformations between source and target elements of the same (or similar) names Useful for working with large schemas 111 © 2013 IBM Corporation WebSphere Message Broker XPath 2.0 The expression syntax used by properties in the mapping node Specifies location paths for a tree structure – E.g. $Order/Item[1]/Description Type system based on XML Schema (and hence DFDL) Rich function library Expressive syntax supporting complex calculations with minimal code Read-only ‘functional’ language – no side effects ‘Variables’ refer to elements in the input tree High level programming constructs including ‘for’ loops, ‘if-then-else’ conditions http://www.w3.org/TR/xpath20/ 112 © 2013 IBM Corporation WebSphere Message Broker XPath Predicates Any XPath expression that returns a Boolean result Used by many of the transform properties, e.g.: – The ‘condition’ in an ‘If’ or ‘Move’ transform • count($Item) > 5 – The join criteria in a ‘Join’ transform • $Book/ISBN = $Author/ISBN 113 © 2013 IBM Corporation WebSphere Message Broker Custom XPath Transform Transform the input to the output using any legal XPath 2.0 expression 1.6*sum($Item/(Price * Quantity)) 114 © 2013 IBM Corporation WebSphere Message Broker Custom XPath Transform – Array Processing In XPath 2.0, the array (sequence) is a first class type (‘Message’, ‘Broker’, ‘Mapping’, ‘Node’) – is an array of 4 strings – This could be assigned to a repeating target element (‘Message’, ‘Broker’, ‘Mapping’, ‘Node’) <string-val>Message</string-val> <string-val>Broker</string-val> <string-val>Mapping</string-val> <string-val>Node</string-val> 115 © 2013 IBM Corporation WebSphere Message Broker Custom XPath Transform – Array Processing for $var in $array return <expr> for $item at $index in $string-val return concat($index, ': ', $item) <string-val>aaa</string-val> <string-val>bbb</string-val> <string-val>ccc</string-val> <string-val>ddd</string-val> 116 © 2013 IBM Corporation WebSphere Message Broker <string-val>1: <string-val>2: <string-val>3: <string-val>4: aaa</string-val> bbb</string-val> ccc</string-val> ddd</string-val> Inputs – Primary and Supplementary Primary inputs are directly involved in the transformation – they contain the data used to produce the output They can also be used in the properties of the transform – E.g. The ‘condition’ property – whether the mapping should occur – The input is assigned to a variable which is referenced in the XPath predicate • e.g. $Price Supplementary inputs can be added to a transform – Not used directly in the transformation – But can be referenced in the transform properties – E.g. The Move transform can copy its data from one (primary) input element to the target, if a predicate based on another (supplementary) input evaluates to true. – Can have as many supplementary inputs as required 117 © 2013 IBM Corporation WebSphere Message Broker Supplementary Inputs on Structural Transforms Supplementary inputs are used to pass elements into a transform without affecting the primary purpose of that mapping They can be used to pass extra data into a nested map ‘For each’ transform – iterates over the Primary input – Supplementary inputs (both repeating and non-repeating) can be passed into the ‘For each’. – However, they don’t affect the ‘looping’ behaviour of the ‘For each’ transform. – But the nested map displays these inputs on the LHS where they can be used as primary inputs to mappings 118 © 2013 IBM Corporation WebSphere Message Broker Message Assembly – Headers and LocalEnvironment By default, the Properties header and message body are available to map – All other headers are copied from input to output unchanged – LocalEnvironment, ExceptionList and Environment trees are passed through unchanged All transport headers (MQ, JMS, HTTP, etc) can be added to the map and transformed. Headers can also be added and removed LocalEnvironment tree can be added to the map and transformed 119 © 2013 IBM Corporation WebSphere Message Broker Message Assembly – Adding and Deleting Headers 120 © 2013 IBM Corporation WebSphere Message Broker Message Assembly – Adding and Deleting Headers Selected headers are added into the map editor. Headers in the input message that don’t appear in the target map are copied to the output message. Headers not in the input message can be added to the output message by adding them to the target map and mapping to them. Headers in the input message can be deleted by adding them to the target map and not mapping to them. 121 © 2013 IBM Corporation WebSphere Message Broker Casting elements xsd:any elements can be cast to any simple or complex type Other elements can be cast to a derived type Use to map variables in LocalEnvironment Use to map header and body in SOAP message 122 © 2013 IBM Corporation WebSphere Message Broker Database Mapping Data can be extracted from a relational database – Currently support DB ‘SELECT’ Can select fields from DB tables based on data in the input message Graphical SQL ‘WHERE’ clause generator – Can contain parameter placeholders to reference the input message tree – Parameter values specified using XPath The result set of the SELECT is presented as a source tree in the map editor 123 © 2013 IBM Corporation WebSphere Message Broker Database Mapping – JDBC configuration Create JDBC Configurable Service – Using MQ Explorer or command line Set security credentials – mqsisetdbparms Toolkit and Runtime both connect to the DB using JDBC 124 © 2013 IBM Corporation WebSphere Message Broker Database SELECT 125 © 2013 IBM Corporation WebSphere Message Broker Custom ‘User-Defined’ Transforms As well as writing custom transformation logic using XPath 2.0, other languages will be supported for creating user-defined functions – Java • Ubiquitous object oriented programming language • Large skills base • Extensive function library – ESQL • Broker’s domain-specific language • Based on SQL • Familiar to many Broker users 126 © 2013 IBM Corporation WebSphere Message Broker Invoking Java - configuration Open the ‘Java’ perspective Create a new Java project in Package Explorer (Optional) Create a new Java package Create a new Class Import Java class(es) into map… 127 © 2013 IBM Corporation WebSphere Message Broker Invoking Java methods – Simple Types public static String formatPrice(BigDecimal price) { NumberFormat format = NumberFormat.getCurrencyInstance(); String result = format.format(price.doubleValue()); return result; } XPath 2.0 expression 128 © 2013 IBM Corporation WebSphere Message Broker Invoking Java methods – Arrays and Complex Types public static double total(MbElement[] items, String[] initials) throws MbException { double amount = 0; // some algorithm... return amount; } 129 © 2013 IBM Corporation WebSphere Message Broker Invoking ESQL functions CREATE FUNCTION stringToBlob (IN field character) RETURNS BLOB BEGIN RETURN CAST(field AS BLOB CCSID 1208); END; 130 © 2013 IBM Corporation WebSphere Message Broker Invoking Java/ESQL methods – from an XPath expression All user-defined functions are callable from XPath expressions – Including all map properties that use XPath 131 © 2013 IBM Corporation WebSphere Message Broker Summary New v8 Mapping Node – Improved usability, capability and performance Hierarchical mapping editor sub-divides complex transformations – Drag and drop between source and target – Select appropriate transform type (defaults to most commonly used) – Configure advanced options in property editor XPath 2.0 allows complex transformation logic – Provides large built-in function library – Extensible via user-defined functions – Java, ESQL – W3C open standard Interact with Databases 132 © 2013 IBM Corporation WebSphere Message Broker