Cost-Based Optimization of Integration Flows - Datenbanken ...
Cost-Based Optimization of Integration Flows - Datenbanken ...
Cost-Based Optimization of Integration Flows - Datenbanken ...
- No tags were found...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
2 Preliminaries and Existing Techniques<br />
Receive (o1)<br />
[service: s3, out: msg1]<br />
Assign (o1)<br />
[out: msg1]<br />
@type='MATMAS04'<br />
Translation (o3)<br />
[in: msg1, out: msg2]<br />
Assign (o4)<br />
[in: msg2, out: msg3]<br />
Switch (o2)<br />
[in: msg1]<br />
Invoke (o7)<br />
[service s1, in: msg3]<br />
@type='MATMAS05'<br />
Translation (o5)<br />
[in: msg1, out: msg2]<br />
Assign (o6)<br />
[in: msg2, out: msg3]<br />
Receive (o1)<br />
[service: s5, out: msg1]<br />
Assign (o2)<br />
[in: msg1, out: msg2]<br />
Invoke (o3)<br />
[service: s4, in: msg2, out: msg3]<br />
INNER<br />
Join (o4)<br />
[in: msg1,msg3, out: msg4]<br />
Invoke (o2)<br />
[service s1, in: msg1, out msg2]<br />
Invoke (o3)<br />
[service s2, in: msg1, out msg3]<br />
Join (o4)<br />
[in: msg2,msg3, out: msg4]<br />
Groupby (o5)<br />
[in: msg4, out: msg5]<br />
INNER<br />
Assign (o8)<br />
[in: msg2, out: msg4]<br />
Assign (o5)<br />
[in: msg4, out: msg5]<br />
Assign (o6)<br />
[in: msg5, out: msg1]<br />
Invoke (o9)<br />
[service s2, in: msg4]<br />
Invoke (o6)<br />
[service s3, in: msg5]<br />
Invoke (o7)<br />
[service s3, in: msg1]<br />
(a) Plan P 1<br />
(b) Plan P 2<br />
(c) Plan P 3<br />
Figure 2.9: Example Horizontal <strong>Integration</strong> <strong>Flows</strong><br />
2.4.1 Horizontal <strong>Integration</strong>: EAI<br />
The use case <strong>of</strong> horizontal integration addresses the integration <strong>of</strong> the operational systems<br />
(SCM, Material, ERP, CRM, and eCommerce) <strong>of</strong> our example scenario. This use case<br />
is typical for EAI (Enterprise Application <strong>Integration</strong>) scenarios, where updates within<br />
an operational system trigger immediate data synchronization in the sense <strong>of</strong> message<br />
exchange by data-driven integration flows. Due to the OLTP character in terms <strong>of</strong> many<br />
short business transactions in the operational systems, many instances <strong>of</strong> integration flows<br />
with rather small amounts <strong>of</strong> data per instance are executed over time. Within the scope<br />
<strong>of</strong> this use case, various integration flows exist. We pick four concrete examples with<br />
different characteristics and define these integration flows in detail.<br />
Example 2.4 (Material Synchronization). Figure 2.9(a) illustrates an integration flow<br />
(plan P 1 ) that is used to synchronize material (basic material and products) master data<br />
from the ERP system to the SCM system as well as to the Material system. Essentially,<br />
when new material has been created within the ERP system, a proprietary material message<br />
is automatically sent to the integration platform. This asynchronously initiates a plan<br />
instance <strong>of</strong> P 1 . The Receive operator (o 1 ) writes the internal message to an instancelocal<br />
variable. Subsequently, a Switch operator o 2 evaluates the message type (MATMAS04<br />
or MATMAS05 for inter-version compatibility) and decides which alternative Switch path is<br />
executed. After specific schema transformations (Translation) that differ according to<br />
the present message type, queries are prepared (Assign) in order to send (Invoke) the<br />
data to the external systems s 1 (SCM) and s 2 (Material).<br />
Example 2.5 (Orders Processing). The integration flow (plan P 2 ) shown in Figure 2.9(b)<br />
propagates order messages that have been submitted within our eCommerce Web shop to<br />
the central ERP system. During execution <strong>of</strong> an instance <strong>of</strong> this plan, additional master<br />
data <strong>of</strong> the customer are read from the CRM database and joined to this message. In<br />
detail, the Receive operator (o 1 ) gets an orders message from the queue and writes it<br />
to a local variable. Then, the Assign operator (o 2 ) is used in order to prepare a query<br />
with the customer name <strong>of</strong> the received message as a parameter. Subsequently, the Invoke<br />
operator (o 3 ) queries the external system s 4 (CRM system) in order to load master data<br />
information for that customer. Here, one SQL query Q i per plan instance (per received<br />
28