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

Solution for BPM standard dashboard & activity guide not working in Oracle SOA 12.2.1.0 C

As earlier i publish a post about different issue of Oracle BPM, After some oracle support i got to fixed them. Issue Blog Here... Issue 3:BPM 12.2.1 process workspace activity guide not working. if you have a normal BPM Process, then this is the issue. In order to have data populated in "Activity Guide" firstly you should create a BPMN Guided Business Process. Below you can find the documentation about activity guide and how to create a Guided Business Process: https://docs.oracle.com/middleware/1221/bpm/bpm-develop/GUID-F765955D-90A5-48D4-8D2A-2F01FBB539E3.htm#BPMPD901 And here is specified: " A Guided Business Process is modeled as an activity guide that is based on a business process. The Activity Guide includes a set of Milestones. A milestone is a contained set of tasks that the end user has to complete. A milestone is complete when the user successfully runs a specific set of tasks in the milestone. " And in the below chapters you will find the

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 adapt

Dynamic Routing in OSB 12C

Dynamic Routing in OSB cab be used when the BusinessService endpoint required to be determine at runtime in message flow. Consider a scenario where OSB has to route the incoming requests to 2 different services based on the CustomerType element value sent in the payload. So create a XQuery resource with the following contents. Observe that we are using the absolute path of business service in configuration as required by dynamic routing. Following is the XML schema that we use:>>  Customer.xsd <?xml version="1.0" encoding="windows-1252" ?> <xsd:schema targetNamespace="http://xmlns.oracle.com/schema/Customer" xmlns:xsd="http://www.w3.org/2001/XMLSchema"             xmlns:ns1="http://xmlns.oracle.com/schema/Customer">   <xsd:complexType name="Customer">     <xsd:sequence>       <xsd:element name="CustomerId" type="xsd:string"/>       <xsd:elemen