Oracle SOA Suite Enterprise Service Bus: Oracle Integration Product Management
Oracle SOA Suite Enterprise Service Bus: Oracle Integration Product Management
Slide 2
ESB Header Support
• Use Cases
– Files, JMS, AQ, MQ, B2B, Apps
• Header Transformation
– Uses XSL Transformations
– XSL variables
– New XPATH Get/Set Header functions
– Minimal GUI Support
Slide 3
One Way Invocation
• Request Header
• Outbound Header
Routing Service
Propagate
Slide 4
Two Way Request/Reply Invocation
Routing Service
Pass-through
Slide 5
Header Transformation
Slide 6
Header Transformation Extension Functions
Where,
xpathExpression : XPath expression to get/set
value : value to be set for the xpathExpression
namespaceDecl : namespace declarations in the form ‘prefix=namespace;’
Slide 7
Header Transformation Example
Example:
To read ‘fileName’ header from an inbound file adapter message
Slide 8
Header Transformation Example
Example:
To write ‘fileName’ header to an outbound file adapter message
Slide 9
Header Based Routing
• Supported using XPath extension functions
• User can add filters using Request headers and Inbound Response Headers
• Syntax is same as that for the current filter expressions.
{ filterExprssion };{ namespaceDeclaration }
• Namespace for all the extension functions is :
http://www.oracle.com/XSL/Transform/java/oracle.tip.esb.server.headers.E
SBHeaderFunctions
Where,
xpathExpression : XPath expression to read the header
Slide 10
Header Based Routing Example
Example:
To check if ‘fileName’ read by inbound file adapter message is Payload.xml
Slide 11
Dynamic SOAP Endpoint Example
Example:
To dynamically override the outbound SOAP endpoint, set the
Location header to http://localhost:7777/esb in your XSL as shown
below.
Slide 12
Known Limitations
Slide 13
File Header Demo JDeveloper
• File to File
• Filter routes only if input Filename = ‘Mobile.xml’
• Transform propagates filename to output adapter
Slide 14
File Header Demo XPATH Filter
Filter Expression
ehdr:getRequestHeader('/fhdr:InboundFileHeaderType/fhdr:fileName') = 'Mobile.xml'
Slide 15
File Header Demo XSLT
XSL Variables Design View
INFILENAME, OUTFILENAME
Slide 16
File Header Demo XSLT
XSL Variables Source View
INFILENAME, OUTFILENAME
…
<xsl:variable name="INFILENAME"
select="ehdr:getRequestHeader('/fhdr:InboundFileHeaderType/fhdr:fileName','fhdr=http://xmlns.oracle.com/pcbpel/adapter/file/;')"/>
<xsl:variable name="OUTFILENAME"
select="ehdr:setOutboundHeader('/fhdr:OutboundFileHeaderType/fhdr:fileName', $INFILENAME, 'fhdr=http://xmlns.oracle.com/pcbpel/adapter/file/;')"/>
…
Slide 17
File Header Demo Runtime
Slide 18
File Header Demo Instructions
Note: The C:\temp location is hard coded in both adapters. You can unzip to
another location and then run the file adapter wizards to change the location.
Slide 19
Additional Header Info
Adapter Namespace In Properties Out Properties XPATH Example
JMS http://xmlns.oracle.com/pcbpel/adapter/jms/ jmsAdapterInboundHeader.wsdl jmsAdapterOutboundHeader.wsd ('/jhdr:JMSInboundHeadersAndProper
JMSCorrelationID JMSDestinationName ties/jhdr:JMSInboundHeaders/jhdr:J
JMSDeliveryMode JMSDestinationProperties MSCorrelationID') = 'HIGH'
JMSExpiration JMSCorrelationID
JMSMessageID JMSType
JMSPriority JMSReplyTo
JMSRedelivered
JMSType
JMSTimestamp
JMSReplyTo
Other adapter examples: See BPEL Samples and Adapter OTN Pages
Slide 20