Skip to main content

Split Join in OSB for sequential process(Orchestration)

Introduction to Split-Joins:A split-join is a mediation pattern that can be used in a Service Bus to direct the flow and processing of messages. Split-joins let you split a service payload, such as an order, into individual messages that are sent to multiple services concurrently, as opposed to standard sequential processing. This greatly improves service performance. Split-join achieves this by splitting an input message payload into sub-messages (split), routing them concurrently to their destinations, and aggregating the responses into one overall return message (join). This process of payload splitting and response aggregation is called a split-join pattern.
You create and design split-joins in the JDeveloper/eclipse with OSB plugin enabled Split-Join Definition Editor. You can then export the split-join and its associated resources, and import those resources to the Oracle Service Bus Console for testing and production. A split-join is saved to a file in JDeveloper, and is always based on a WSDL operation. A split-join can be invoked from a proxy service, a pipeline, or another split-join. A split-join can invoke a proxy or business service, a pipeline, or another split-join.
Our problem: We have 3 different procedure which will be called, Scenario is PL1 , PL2, PL3. Based on a request code PL1 or PL2 will be called, both PL are sharing common input and output, So output from both will be same, The output of PL1 or PL2 will be work as an input for PL3 and the output from the PL3 will be merged in the response that is generated by PL1 or PL2 response, As this is a sequential process and with the OSB proxy we can't achieve this, So for same we are using OSB split-join component which will be used by proxy service as a business service.
1.Proxy service.
2.Business services for all the procedures.
3.Business service for the split-jon flow.
Proxy service Design:
Business service design:
ConsultaDir_SplitJoin.flow(Split-join)1:
ConsultaDir_SplitJoin.flow(Split-join)2:initialize the response variable with xsd main element, else it will generate an error with the message that "response variable is used before initialization" or we can say before using any declared variable it is mandatory to initialize a variable.
ConsultaDir_SplitJoin.flow(Split-join)3:
ConsultaDir_SplitJoin.flow(Split-join)4:
ConsultaDir_SplitJoin.flow(Split-join)5:Make a copy of the response which is generated by PL1 or PL2, As the main response variable of flow is type of message, So you can't iterate over it.
ConsultaDir_SplitJoin.flow(Split-join)6:
Xquery used for merging PL3 response in main response: As we are using assign tag for merging PL3 response with PL1 so we need to again add main response in the Xquery as it will be replaced by NULL, As assign tag is assigned to a variable and the value is replaced by new value.
<ns1:mainResponseTagName>

<data>
{

for $directoriosMedico at $counterValue in $FlowResponse/data/dataList
return
<Response>
{
Main response tags
}
{
for $P_SUCURSALES_ITEM in $PL3_Variable/ns3:ITEM[$counterValue]/ns3:P_SUCURSALES/ns3:P_ITEM
return
<ResponseInner>
{
PL3 response tags, available in main response
</ResponseInner>
}
</Response>
}
</data>
</ns1:mainResponseTagName>

Comments

  1. Could you please reload the screen shots, which are not visible here Please...

    ReplyDelete

Post a Comment

Popular posts from this blog

Oracle SOA 12C rest adapter with Custom HTTP headers

Most existing web applications are connected through web services, which are commonly known as SOAP services. More and more users are relying on mobile devices for communication, and they’re looking for lighter ways to access enterprise information on the go. REST services are the answer for the mobile device platform, because they get rapid responses and fast access to data. Oracle SOA Suite 12 c  provides a complete set of service infrastructure components for designing, deploying, and managing composite applications. Oracle SOA Suite 12 c  enables services to be created, managed, and orchestrated into composite applications and business processes. Some time we have need to send HTTP headers in REST service, In OSB we use header component and add what ever is needed but in oracle SOA 12C it's little bit different. Let see how we can do it. Create one SOA Application. Create one SOA Sample project inside SOA Application. Go to composite and drag drop REST ...

Swagger API document from Any WADL & Schema in Oracle SOA

Hi everyone, Hope everyone is doing well these days, Recently i started a project work over how to generate swagger API document for your any REST API, In case if you don't know what is swagger please go and check " https://swagger.io/tools/swagger-editor/ ". It's a great and easy to use tool which will help to create user friendly, human readable form API documentation with extension for generating API client in different languages with capability of testing your API from same. What is swagger editor, Design, describe, and document your API on the first open source editor fully dedicated to OpenAPI-based APIs. The Swagger Editor is great for quickly getting started with the OpenAPI (formerly known as the Swagger Specification) specification, with support for Swagger 2.0 and OpenAPI 3.0.  What benefits you will get by using swagger, Runs Anywhere, The Editor works in any development environment, be it locally or in the web. Smart Feedback, Validate you...

ParseEscapedXML Function In Oracle BPEL XSLT Is Throwing Parsing Error For Special Character &

The ampersand escape sequence "&" in a Database Record/XML Payload is being converted to '&amp;' by the BPEL composite.  This results in the XSLT transformation code throwing an oracle.xml.parser.v2.XMLParseException error/exception when the parseEscapedXML method is invoked against the data. The parseEscapedXML method was deprecated in in 12C and should not longer be used. It has been replaced by the new method oraext:parseXML. There is a know bug in the oraext:parseXML method that was address in patch 21377740. The fixes that were made in 21377740 where incorporated into the  12.2.1.0.0 GA release, thus there no patch needed  for the issue.   Note: No backport fix for 12.1.3 was released