Enterprise Patterns in Process Orchestration – Splitter
Summary
Enterprise Integration Patterns (EIP) help in solving recurring problems faced in the integration of enterprise applications. This article introduces the Splitter – one of the Enterprise Integration patterns in the context of SAP NetWeaver Process Orchestration.
Applies to
SAP NetWeaver Process Orchestration EhP1 for SAP NetWeaver 7.3 SP4
Authors
Abdul-Gafoor Mohamed & Prashant Gautam
Product Management, SAP NetWeaver BPM, SAP Labs
The Splitter Pattern in Process Orchestration
Enterprise Integration Patterns – The Splitter
Enterprise Application Integration (EAI) is an integration framework composed of a collection of technologies and services that form a middleware, enabling the integration of systems and applications across an enterprise.[1] A twenty-first century enterprise typically consists of tons of distributed applications, varying percentages of which may be homegrown, acquired, legacy or even a combination of these.
Enterprise Integration Patterns (EIP) are design patterns that help in solving recurring problems faced in the integration of enterprise applications. One such common requirement in Enterprise Integration is to break down a single large message into multiple logical smaller messages. The Splitter pattern helps in cases where each smaller message might need to be handled in a different way and thus avoids a need to send the larger message to all the destinations. The Splitter pattern that helps with this routing capability addresses this question:
“How can we process a message if it contains multiple elements, each of which may have to be processed in a different way?”[2] |
To illustrate the Splitter Pattern, we consider the example of Benn Laptop Repairs, a company that deals with servicing and repairs of laptops. The servicing department receives an order to repair multiple laptops from a customer, Ally Bank. Ally Bank has sent for service, a number of laptops manufactured by some of the top manufacturers of personal computers in the world. Benn Laptop Repairs has allocated different groups in the service department that takes care of service and repairs of computers manufactured by different vendors. Ally Bank’s service request can be routed to a specific group in the service department using the Splitter pattern.
Figure 1. An example illustrating the Splitter pattern
An Integration Scenario for the Splitter
In this example, the service request from Ally Bank triggers the Business System S1 to send a message to SAP NetWeaver PI (AEX), which is delivered to SAP NetWeaver BPM (Inbound[3]). The large message is split in SAP NetWeaver BPM (Outbound) for different targets (groups in Benn Laptop Repair). SAP NetWeaver BPM sends a confirmation to the original sender Business System S1 once the split has occurred.
SAP NetWeaver Process Orchestration Solution Outline
Figure 2. Splitter pattern integration scenario using SAP NetWeaver Process Orchestration
As depicted in Figure 2, we are dealing with these two integration configurations:
- Integration Configuration1 (ICO1) – A message flow can be triggered using a SOAP adapter from Business System S1 that flows through SAP NetWeaver PI (AEX) to SAP NetWeaver BPM.
- Integration Configuration2 (ICO2) – To send the enriched content back to SAP NetWeaver PI (AEX) from SAP NetWeaver BPM and store it as a file in your specified folder using File adapter.
Note: The message flow from Business System S1 could also be simulated by using the Web Services Navigator, details of which can be found in the SAP NetWeaver Web Services Navigator documentation.
SAP Process Orchestration Scenario
Figure 3. A generic SAP Process Orchestration scenario sequence
The Integration Flows have to be created and activated using the same interfaces that were used in the Business Process. The generic scenario referenced above applies to most Enterprise Integration patterns, including the Splitter pattern.
Note: Only XI 3.0 compatible stateless interfaces are supported.
Process Modeling in SAP NetWeaver BPM
Prerequisites
- The service interfaces to be used in the process model – Starting Interface and Automated activity – should be imported from the SAP NetWeaver PI Enterprise Service Repository.
- For testing the BPM Process from the BPM Process repository, the UME action SAP_BPM_TRIGGER_EVENT should be assigned to the specific user role.
Process Model
Figure 4. A splitter scenario modeled in SAP NetWeaver BPM
The Process Model for this scenario is shown in Figure 4. The steps for modeling the process are enumerated below:
- The Splitter Pattern starts with a service interface with count initialized to zero.
- Count the total number of order items in the order list.
- Get the current order item from the order list and send the order item to the Receiver.
- Increment the count on the loop. Repeat until there are no more order items.
- Complete the split process outbound call with type order data on end of loop.
Notes:
- Use the ‘XI’ service reference instead of ‘WS’ in the configuration settings of the automated activity. The Sender Component also needs to be specified.
- Use the SAP NetWeaver PI Integration Flow Designer to create the configuration objects in SAP NetWeaver PI
- Please refer to detailed information on Process Modeling using SAP NetWeaver BPM.
References / Related content
- Gregor Hohpe & Bobby Woolf. (2003). Enterprise Integration Patterns.ISBN 0321200683 Addison-Wesley.
- Enterprise Integration Patterns. Gregor Hohpe
- SAP Process Orchestration Integration Patterns
- Glossary on SAP Help Portal
- Process Modeling with SAP NetWeaver BPM
- SAP Service Marketplace
- SAP NetWeaver Web Services Navigator documentation
- SAP NetWeaver PI help documentation
- SAP NetWeaver BPM help documentation
- SAP Note 1616562
- Installation Guide
[1] Enterprise Application Integration, Wikipedia
[2] Gregor Hohpe & Bobby Woolf, Enterprise Integration Patterns. 2003
[3] Inbound and Outbound are terms used with reference to the application, in this case SAP NetWeaver BPM.
Hi,
First of all, nice blog.
If we want to move away from needing an ABAP stack for PO we will need to implement these integration pattern using nwBPM.
There is one question I would like to ask, though. Why did you not mention multimappings as an implementation of the Split pattern?
I understand it is a limited solution as you can only send the resulting messages to the same business system, but it still is a split pattern.
Regards,
Joppe Koning-van Noort
Hi,
Thanks for the reading and appreciating the blog.
There are multiple methods to implement Splitter Integration Pattern. If the requirement is to have just a simple stateless split then we can directly use Multi-Mappings in SAP NW PI but in case of stateful requirements we propose to use SAP NW BPM.
The scope of this blog was to introduce Process Orchestration with an example with the Splitter pattern as an example.
Regards
Prashant
Hello Abdul-Gafoor Mohamed
Thanks you very much for this blog.
Also could you please share your valuable inputs/suggestions on below thread. Many thanks in advance.
https://answers.sap.com/questions/12907416/how-to-collect-and-group-records-by-loop-count-in.html?childToView=12907504#comment-12907504