champagne champagne
play

Champagne: Champagne: Data Change Propagation for Data Change - PowerPoint PPT Presentation

Champagne: Champagne: Data Change Propagation for Data Change Propagation for Heterogeneous Information Systems Heterogeneous Information Systems Ralf Rantzau Carmen Constantinescu Uwe Heinkel Holger Meinecke University of Stuttgart


  1. Champagne: Champagne: Data Change Propagation for Data Change Propagation for Heterogeneous Information Systems Heterogeneous Information Systems Ralf Rantzau Carmen Constantinescu Uwe Heinkel Holger Meinecke University of Stuttgart Germany

  2. Motivation: Enterprise Application Integration Motivation: Enterprise Application Integration Network of The Problem � Heterogeneous IT infrastructures Data Dependencies � Heterogeneous IT infrastructures � Full enterprise data integration often � Full enterprise data integration often Stock Stock too expensive or infeasible too expensive or infeasible Inventory Inventory � Need to change, establish and adapt � Need to change, establish and adapt dependencies frequently and easily Facility Layout dependencies frequently and easily Facility Layout ERP ERP Design Design Our Approach � Loose coupling of information � Loose coupling of information Legacy Order Legacy Order systems is enough System Management systems is enough System Management � Keep IS as autonomous as possible � Keep IS as autonomous as possible SCM SCM � Build bridges between IS by defining � Build bridges between IS by defining data dependencies data dependencies

  3. XML-Based Data Change Propagation XML-Based Data Change Propagation Dependency (Source, Propagation Script, Destinations) Dependency (Source, Propagation Script, Destinations) Dependency (Source, Propagation Script, Destinations) XML Input Output Change XML XML XML Changed Data Data adapted to Propagation (update, insert, each destination delete) XRL+ XSLT XSLT XSLT XSLT Transformation XSLT XSLT Filtering (Xpath) Transformation Scripts Routing (XSLT: XML Stylesheet Language Transformations) Propagation Script (XRL+: Exchangeable Routing Language Plus)

  4. Champagne Architecture Champagne Architecture Systems Input 2 Propagation Engine (XRL+) A 1 1 S 1 (XML) 3 (any) 5 6 Output 1 . . . . . . . . . Filter Transformer 7 (XPath) (XSLT) Output N 4 8 Propagation Manager S N A N 9 (XML) Internal 1 (any) . . . Graphical User Interface Adaptors Systems Internal M Queue Schema Editor Dependency Editor (XML Schema) (XRL+, XSLT) Manager Dependency Manager (JMS) Runtime Tool Design-Time Tool 1. Dependencies 2. Propagation Scripts (XRL+) 3. Transformation Scripts (XSLT) 4. System Info & Schemas (XML Schema) Repository (RDBMS)

  5. Exchangeable Routing Language Plus (XRL+) Exchangeable Routing Language Plus (XRL+) XRL: XML-Based Workflow Definition Language XRL: XML-Based Workflow Definition Language � Introduced by W. v.d. Aaalst and A. Kumar, 2000 � Introduced by W. v.d. Aaalst and A. Kumar, 2000 � Routing Schema Elements: � Routing Schema Elements: � Branch conditions � Branch conditions � Loops � Loops � Sequential Execution � Sequential Execution � Parallel Execution � Parallel Execution � Wait, Event, Timeout � Wait, Event, Timeout XRL+: Extension of XRL for Propagation Process Specification XRL+: Extension of XRL for Propagation Process Specification � Major new elements: � Major new elements: � MESSAGE_EVENT (system, schema, xml_out) � MESSAGE_EVENT (system, schema, xml_out) � PROPAGATE (system, schema, xml) � PROPAGATE (system, schema, xml) � TRANSFORM (xml_in, xml_out, xslt) � TRANSFORM (xml_in, xml_out, xslt) � FILTER (xml_in, xml_out, xpath_expr) � FILTER (xml_in, xml_out, xpath_expr)

  6. Example XRL+ Propagation Script Example XRL+ Propagation Script <xrl:route id=“1” created_by=“script_designer” <xrl:route id=“1” created_by=“script_designer” creation_date=“2002-08-20” creation_date=“2002-08-20” Input Queue Input Queue xmlns:xrl=“http://www.uni-stuttgart.de/XRL”> xmlns:xrl=“http://www.uni-stuttgart.de/XRL”> <xrl:sequence> <xrl:sequence> <xrl:wait sync=1> <xrl:wait sync=1> <xrl:message_event <xrl:message_event system=“OMS” schema=“production_order” system=“OMS” schema=“production_order” xml_out=“PO”/> message_event timer_event time = 600 sec xml_out=“PO”/> message_event timer_event time = 600 sec <xrl:timer_event <xrl:timer_event type=“relative” time=“600”/> type=“relative” time=“600”/> </xrl:wait> </xrl:wait> Wait sync=1 <xrl:parallel> Wait sync=1 <xrl:parallel> <xrl:sequence> <xrl:sequence> <xrl:filter <xrl:filter xml_in=“PO” xml_in=“PO” xml_out=“f1” xml_out=“f1” expression=“//transport/@start=‘M003’”/> expression=“//transport/@start=‘M003’”/> Filter Filter <xrl:transform <xrl:transform start = M003 start = M003 xml_in=“f1” xml_in=“f1” xslt=“OM2FLD.xsl” xslt=“OM2FLD.xsl” xml_out=“fld_out”/> xml_out=“fld_out”/> Transform <xrl:propagate Transform <xrl:propagate OM2FLD.xsl xml=“fld_out” OM2FLD.xsl xml=“fld_out” system=“FLD” schema=“material_flow”/> system=“FLD” schema=“material_flow”/> </xrl:sequence> </xrl:sequence> <xrl:propagate Propagate Propagate <xrl:propagate Propagate Propagate xml=“PO” FLD Legacy xml=“PO” FLD Legacy system=“Legacy” schema=“production_order” /> system=“Legacy” schema=“production_order” /> </xrl:parallel> </xrl:parallel> </xrl:sequence> </xrl:sequence> FLD Output Queue Legacy Output Queue </xrl:route> FLD Output Queue Legacy Output Queue </xrl:route>

  7. XML-Based Data Change Propagation: An Example XML-Based Data Change Propagation: An Example order_management.xrl input.xml om2fld.xsl <?xml version=”1.0” encoding=”ISO8859-2”?> <?xml version=”1.0” encoding=”ISO8859-2”?> <xrl:ROUTE id=”ex” created_by=”script_designer” <?xml version=”1.0” encoding=”ISO8859-2”?> <xslt:transform version=”1.0” creation_date=”2002-08-20”> <production_order> xmlns:xslt=”http://www.w3.org/1999/XSL/Transform”> <xrl:SEQUENCE> <operation> <xslt:output method=”xml” encoding=”ISO8859-2” <xrl:WAIT sync=”1”> <transport start=”M002” dest=”M001” qual=”A12”> indent=”yes”/> <xrl:MESSAGE_EVENT <part no=”P001” amount=”5000”/> <xslt:template match=”/production_order”> system=”OMS” schema=”production_order” xml_out=”input”/> </transport> <material_flow> </xrl:WAIT> </operation> <xslt:apply-templates select=”.”/> <xrl:TRANSFORM xml_in=”om” xslt=”om2fld.xsl” xml_out=”t1”/> <operation> </material_flow> <xrl:PROPAGATE xml=”output” system=”FLD” schema=”material_flow”/> <drilling unit=”M001” cost_center=”DM1”> </xslt:template> </xrl:SEQUENCE> <part no=”P001” amount=”5000”/> <xslt:template match=”//transport”> </xrl:ROUTE> Propagation Script <manufacturing_lead_time days=”0” hours=”3” mins=”40”/> <xslt:element name=”transport”> </drilling> <xslt:attribute name=”start”> </operation> (XRL+) <xslt:value-of select=”@start”/> <operation> </xslt:attribute> <transport start=”M001” dest=”M003” qual=”C13”> <xslt:attribute name=”dest” <part no=”P001” amount=”5000”/> <xslt:value-of select=”@dest”/> output.xml </transport> </xslt:attribute> </operation> . . . <operation> ... <xsl:variable name=”qual” select=”@qual”/> <milling unit=”M003” cost_center=”BM2” > <material_flow> <xslt:element name=”employee”> <part no=”P001” amount=”5000”/> <transport start=”M002” dest=”M001”> <xslt:attribute name=”hourly_wage” <manufacturing_lead_time days=”0” hours=”1” mins=”13”/> <part no=”P001” amount=”5000”/> <xslt:value-of select= </milling> <employee qualification=”A12” ”document(‘http://www.SMS.com/employee.xml’) </operation> hourly_wage=”129”/> //employee[qual@q=$qual]h_wage@h_w”/> </ production_order> </transport> </xslt:attribute> <transport start=”M001” dest=”M003”> </xslt:element> Source Data <part no=”P001” amount=”5000”/> </xslt:element> <employee qualification=”C13” </xslt:template> hourly_wage=”45”/> (XML) </xslt:transform > </transport> </material_flow> Transformation Script Propagated Data ... Destination Data (XML) (XSLT) (XML)

Recommend


More recommend