SlideShare a Scribd company logo
1 of 11
Facilitating Rich Data Manipulation in BPEL 
                           using E4X




                          Tammo van Lessen, Jörg Nitzsche, Dimka Karastoyanova
                                  Institute of Architecture of Application Systems
                                                        (IAAS)

University of Stuttgart
Universitätsstr. 38
70569 Stuttgart
Germany
                                                                            tammo.van.lessen@iaas.uni‐stuttgart.de
The Talk Today

           Motivation and Introduction
           Combining WS‐BPEL with E4X
                     Extension Assign Operation & Extension Activity
                     Injecting BPEL variables
                     Built‐in functions
           Conclusions




© Tammo van Lessen                                                     2
Problem Statement
                     Business Analyst




                     Process Developer




© Tammo van Lessen                       3
Low‐level Problems
           BPEL Variables must be initialized              var TShoppingCart shoppingCart
                                                           var TItem item
                                                           var EItem eitem
           Data types are typically not aligned
                                                                            Create 
              Data mediation required                                      Shopping
                                                           selectionFailure Cart

           Array manipulation is cumbersome
              doXSLTransform                                   AddItem                Complete

              Custom XSL scripts needed
                                                  Data type  Check                    Submit
           Reuse not possible                     mismatch Availability                Order



                                                               Add to
                                                                                      Confirm
                                              doXSLTransform    Cart




© Tammo van Lessen                                                                               4
Alternatives

           BPELJ
                     Use plain old Java snippets
                     Pro: Easy to use
                     Con: W3C DOM still quite cumbersome


           Semantic Data Mediation
                     SUPER technology
                     Pro: Killer feature on the conceptual level
                     Con: Requires too much modelling efforts

           <s:mediate inputVariable=quot;xquot; outputVariable=quot;yquot; mediatorIRI=quot;urn:anyquot;? />




© Tammo van Lessen                                                                     5
What is JavaScript/E4X?
           JavaScript
                     ECMA 262, Edition 3
                     JavaScript 1.6
           E4X
                     Proposed by BEA
                     ECMA 357
                     XML support at the language level
                        Literals, nodes, attributes, namespaces…
                     XPath‐like syntax
                     foreach…
                     Allows nodesets as LHS expressions
           var items = <items>
                          <item name=quot;SOA bookquot; price=quot;40quot; quantity=quot;2quot;/>
                          <item name=quot;BPM bookquot; price=quot;35quot; quantity=quot;3quot;/>
                          <item name=quot;EAI bookquot; price=quot;30quot; quantity=quot;1quot;/>
                       </items>;

           alert( items.item.(@name == quot;SOA bookquot;).@quantity );

           for each( var thisPrice in items..@price ) {
               sum += thisPrice;
           }

                                                                            6
© Tammo van Lessen
Using Javascript/E4X in BPEL <assign>

   <assign name=quot;e4x-assignquot;>
       <extensionAssignOperation>
           <js:snippet>
               myVar.TestPart += ' World';
           </js:snippet>
       </extensionAssignOperation>
   </assign>



   <assign name=quot;e4x-array-assignquot;>
       <extensionAssignOperation>
           <js:snippet>
               load('shoppingCartUtils.js');
               shoppingCart.parameters = createShoppingCartSkeleton();
               shoppingCart.parameters.items += createCartItem(item);
               shoppingCart.parameters.items.item.(@hyped=='true').price *= 2;
           </js:snippet>
       </extensionAssignOperation>
   </assign>




           BPEL variables are injected into JS context
           Variables can be read and written


                                                                                 7
© Tammo van Lessen
Using Javascript/E4X in BPEL <extensionActivities>

   <extensionActivity name=“adjustShippingDetailsquot;>
       <js:snippet>
           if (goldRatio > 1.0 || silverRatio > 1.0) {
               throwFault('urn:myprocess', 'IllegalArgumentFault',
                          'discount ratios must be <= 1.0');
           }
           if (customer.type == 'gold') {
               po.items.item.price *= goldRatio;
           } else if (customer.type == 'silver') {
               po.items.item.price *= silverRatio;
           } else if (customer.type == 'besteffort') {
               po.shippingMode = 'snailmail';
           }
       </js:snippet>
   </extensionActivity>




           JavaScript functions can be used to reuse such 
           snippets
           Use with caution!


                                                                     8
© Tammo van Lessen
Built‐in Functions
           load(…)
                     Loads custom JS/E4X library
           print(…)
                     Prints debug output to console
           piid()
                     Returns process instance ID
           activityName()
                     Returns activity name

           processName()
                     Returns the process’ QName
           throwFault(namespace, localpart, faultmsg)
           throwFault(xmlobject)
                     Throws a BPEL fault

           validate(…)
                     Validates a variable’s content against its schema
                                                                         9
© Tammo van Lessen
Conclusions
           Variable Assignments in vanilla BPEL are cumbersome
                     Adding items to lists is not possible
                        Would require a nodeset as LHS expression
                        Can be done using external XSL scripts
                     Batch‐updating an XPath match is not possible
                     Variable initialization is very verbose
                     No reuse possible for recurring data manipulation tasks.
           Using E4X in BPEL
                     Provides a convenient syntax for rich XML manipulation
                     Reuse of such scripts across activities and processes is possible
                     Simplifies array manipulation
           Implementation available
                     Publicly available in Apache ODE
                     Will be part of the upcoming 2.0 release

                                                                                         10
© Tammo van Lessen
End of Document

More Related Content

What's hot

Professional JavaScript Development - Creating Reusable Code
Professional JavaScript Development -  Creating Reusable CodeProfessional JavaScript Development -  Creating Reusable Code
Professional JavaScript Development - Creating Reusable CodeWildan Maulana
 
How to upgrade your application with no downtime (using edition-based redefin...
How to upgrade your application with no downtime (using edition-based redefin...How to upgrade your application with no downtime (using edition-based redefin...
How to upgrade your application with no downtime (using edition-based redefin...Oren Nakdimon
 
Domain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with RailsDomain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with RailsDeclan Whelan
 
New features in abap
New features in abapNew features in abap
New features in abapSrihari J
 
Advanced React Component Patterns - ReactNext 2018
Advanced React Component Patterns - ReactNext 2018Advanced React Component Patterns - ReactNext 2018
Advanced React Component Patterns - ReactNext 2018Robert Herbst
 
Relentless Refactoring
Relentless RefactoringRelentless Refactoring
Relentless RefactoringMark Rickerby
 
Enterprise Data Validation
Enterprise Data ValidationEnterprise Data Validation
Enterprise Data ValidationKevin Hazzard
 

What's hot (7)

Professional JavaScript Development - Creating Reusable Code
Professional JavaScript Development -  Creating Reusable CodeProfessional JavaScript Development -  Creating Reusable Code
Professional JavaScript Development - Creating Reusable Code
 
How to upgrade your application with no downtime (using edition-based redefin...
How to upgrade your application with no downtime (using edition-based redefin...How to upgrade your application with no downtime (using edition-based redefin...
How to upgrade your application with no downtime (using edition-based redefin...
 
Domain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with RailsDomain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with Rails
 
New features in abap
New features in abapNew features in abap
New features in abap
 
Advanced React Component Patterns - ReactNext 2018
Advanced React Component Patterns - ReactNext 2018Advanced React Component Patterns - ReactNext 2018
Advanced React Component Patterns - ReactNext 2018
 
Relentless Refactoring
Relentless RefactoringRelentless Refactoring
Relentless Refactoring
 
Enterprise Data Validation
Enterprise Data ValidationEnterprise Data Validation
Enterprise Data Validation
 

Similar to Facilitating Rich Data Manipulation in BPEL using E4X

Smart Client Development
Smart Client DevelopmentSmart Client Development
Smart Client DevelopmentTamir Khason
 
NHibernate (The ORM For .NET Platform)
NHibernate (The ORM For .NET Platform)NHibernate (The ORM For .NET Platform)
NHibernate (The ORM For .NET Platform)Samnang Chhun
 
Jscript Fundamentals
Jscript FundamentalsJscript Fundamentals
Jscript Fundamentalsrspaike
 
Webcast 09/2008 - Silverlight 2 Beta 2
Webcast 09/2008 - Silverlight 2 Beta 2Webcast 09/2008 - Silverlight 2 Beta 2
Webcast 09/2008 - Silverlight 2 Beta 2sleguiza
 
Extending Schemas
Extending SchemasExtending Schemas
Extending SchemasLiquidHub
 
2 Roads to Redemption - Thoughts on XSS and SQLIA
2 Roads to Redemption - Thoughts on XSS and SQLIA2 Roads to Redemption - Thoughts on XSS and SQLIA
2 Roads to Redemption - Thoughts on XSS and SQLIAguestfdcb8a
 
Wai Aria - An Intro
Wai Aria - An IntroWai Aria - An Intro
Wai Aria - An IntroMatt Machell
 
Javazone 2010-lift-framework-public
Javazone 2010-lift-framework-publicJavazone 2010-lift-framework-public
Javazone 2010-lift-framework-publicTimothy Perrett
 
Nhibernatethe Orm For Net Platform 1226744632929962 8
Nhibernatethe Orm For Net Platform 1226744632929962 8Nhibernatethe Orm For Net Platform 1226744632929962 8
Nhibernatethe Orm For Net Platform 1226744632929962 8Nicolas Thon
 
Practical catalyst
Practical catalystPractical catalyst
Practical catalystdwm042
 
Advanced Oracle Troubleshooting
Advanced Oracle TroubleshootingAdvanced Oracle Troubleshooting
Advanced Oracle TroubleshootingHector Martinez
 
XML Schema Patterns for Databinding
XML Schema Patterns for DatabindingXML Schema Patterns for Databinding
XML Schema Patterns for DatabindingPaul Downey
 
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...goodfriday
 
Service Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMixService Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMixBruce Snyder
 

Similar to Facilitating Rich Data Manipulation in BPEL using E4X (20)

Smart Client Development
Smart Client DevelopmentSmart Client Development
Smart Client Development
 
NHibernate (The ORM For .NET Platform)
NHibernate (The ORM For .NET Platform)NHibernate (The ORM For .NET Platform)
NHibernate (The ORM For .NET Platform)
 
Jscript Fundamentals
Jscript FundamentalsJscript Fundamentals
Jscript Fundamentals
 
Webcast 09/2008 - Silverlight 2 Beta 2
Webcast 09/2008 - Silverlight 2 Beta 2Webcast 09/2008 - Silverlight 2 Beta 2
Webcast 09/2008 - Silverlight 2 Beta 2
 
Extending Schemas
Extending SchemasExtending Schemas
Extending Schemas
 
2 Roads to Redemption - Thoughts on XSS and SQLIA
2 Roads to Redemption - Thoughts on XSS and SQLIA2 Roads to Redemption - Thoughts on XSS and SQLIA
2 Roads to Redemption - Thoughts on XSS and SQLIA
 
Jquery 1
Jquery 1Jquery 1
Jquery 1
 
Wpf Tech Overview2009
Wpf Tech Overview2009Wpf Tech Overview2009
Wpf Tech Overview2009
 
Wai Aria - An Intro
Wai Aria - An IntroWai Aria - An Intro
Wai Aria - An Intro
 
Javazone 2010-lift-framework-public
Javazone 2010-lift-framework-publicJavazone 2010-lift-framework-public
Javazone 2010-lift-framework-public
 
Nhibernatethe Orm For Net Platform 1226744632929962 8
Nhibernatethe Orm For Net Platform 1226744632929962 8Nhibernatethe Orm For Net Platform 1226744632929962 8
Nhibernatethe Orm For Net Platform 1226744632929962 8
 
Practical catalyst
Practical catalystPractical catalyst
Practical catalyst
 
Advanced Oracle Troubleshooting
Advanced Oracle TroubleshootingAdvanced Oracle Troubleshooting
Advanced Oracle Troubleshooting
 
XML Schema Patterns for Databinding
XML Schema Patterns for DatabindingXML Schema Patterns for Databinding
XML Schema Patterns for Databinding
 
Ajax
AjaxAjax
Ajax
 
Sinatra
SinatraSinatra
Sinatra
 
Metaprogramming
MetaprogrammingMetaprogramming
Metaprogramming
 
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
 
Service Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMixService Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMix
 
Struts2
Struts2Struts2
Struts2
 

More from Tammo van Lessen

Behavior-driven Business Process Development with BPMN
Behavior-driven Business Process Development with BPMNBehavior-driven Business Process Development with BPMN
Behavior-driven Business Process Development with BPMNTammo van Lessen
 
Vorsicht Schuldenfalle - Was die IT aus der Finanzwelt lernen kann
Vorsicht Schuldenfalle - Was die IT aus der Finanzwelt lernen kannVorsicht Schuldenfalle - Was die IT aus der Finanzwelt lernen kann
Vorsicht Schuldenfalle - Was die IT aus der Finanzwelt lernen kannTammo van Lessen
 
Quality Assurance and Testing of Automated Business Processes
Quality Assurance and Testing of Automated Business ProcessesQuality Assurance and Testing of Automated Business Processes
Quality Assurance and Testing of Automated Business ProcessesTammo van Lessen
 
Business Process Management with BPMN & BPEL
Business Process Management  with BPMN & BPELBusiness Process Management  with BPMN & BPEL
Business Process Management with BPMN & BPELTammo van Lessen
 
Web Service Composition mit WS-BPEL und dem Open-Source-Orchester
Web Service Composition mit WS-BPEL und dem Open-Source-OrchesterWeb Service Composition mit WS-BPEL und dem Open-Source-Orchester
Web Service Composition mit WS-BPEL und dem Open-Source-OrchesterTammo van Lessen
 
Virtualizing Services and Resources with ProBus: The WS-Policy-Aware Service...
Virtualizing Services and Resources with ProBus: The WS-Policy-Aware Service...Virtualizing Services and Resources with ProBus: The WS-Policy-Aware Service...
Virtualizing Services and Resources with ProBus: The WS-Policy-Aware Service...Tammo van Lessen
 
SOA-based Business Integration with Eclipse BPEL and Apache ODE
SOA-based Business Integration with Eclipse BPEL and Apache ODESOA-based Business Integration with Eclipse BPEL and Apache ODE
SOA-based Business Integration with Eclipse BPEL and Apache ODETammo van Lessen
 
Formalizing Message Exchange Patterns using BPEL light
Formalizing Message Exchange Patterns using BPEL lightFormalizing Message Exchange Patterns using BPEL light
Formalizing Message Exchange Patterns using BPEL lightTammo van Lessen
 
An Execution Engine For Semantic Business Processes
An Execution Engine For Semantic Business ProcessesAn Execution Engine For Semantic Business Processes
An Execution Engine For Semantic Business ProcessesTammo van Lessen
 
Web Services Orchestration with BPEL 2.0
Web Services Orchestration with BPEL 2.0Web Services Orchestration with BPEL 2.0
Web Services Orchestration with BPEL 2.0Tammo van Lessen
 

More from Tammo van Lessen (13)

Behavior-driven Business Process Development with BPMN
Behavior-driven Business Process Development with BPMNBehavior-driven Business Process Development with BPMN
Behavior-driven Business Process Development with BPMN
 
Vorsicht Schuldenfalle - Was die IT aus der Finanzwelt lernen kann
Vorsicht Schuldenfalle - Was die IT aus der Finanzwelt lernen kannVorsicht Schuldenfalle - Was die IT aus der Finanzwelt lernen kann
Vorsicht Schuldenfalle - Was die IT aus der Finanzwelt lernen kann
 
Logging & Metrics
Logging & Metrics  Logging & Metrics
Logging & Metrics
 
Quality Assurance and Testing of Automated Business Processes
Quality Assurance and Testing of Automated Business ProcessesQuality Assurance and Testing of Automated Business Processes
Quality Assurance and Testing of Automated Business Processes
 
Business Process Management with BPMN & BPEL
Business Process Management  with BPMN & BPELBusiness Process Management  with BPMN & BPEL
Business Process Management with BPMN & BPEL
 
Web Service Composition mit WS-BPEL und dem Open-Source-Orchester
Web Service Composition mit WS-BPEL und dem Open-Source-OrchesterWeb Service Composition mit WS-BPEL und dem Open-Source-Orchester
Web Service Composition mit WS-BPEL und dem Open-Source-Orchester
 
BPM meets Semantic Web
BPM meets Semantic WebBPM meets Semantic Web
BPM meets Semantic Web
 
Virtualizing Services and Resources with ProBus: The WS-Policy-Aware Service...
Virtualizing Services and Resources with ProBus: The WS-Policy-Aware Service...Virtualizing Services and Resources with ProBus: The WS-Policy-Aware Service...
Virtualizing Services and Resources with ProBus: The WS-Policy-Aware Service...
 
SOA-based Business Integration with Eclipse BPEL and Apache ODE
SOA-based Business Integration with Eclipse BPEL and Apache ODESOA-based Business Integration with Eclipse BPEL and Apache ODE
SOA-based Business Integration with Eclipse BPEL and Apache ODE
 
Formalizing Message Exchange Patterns using BPEL light
Formalizing Message Exchange Patterns using BPEL lightFormalizing Message Exchange Patterns using BPEL light
Formalizing Message Exchange Patterns using BPEL light
 
BPM meets Semantic Web
BPM meets Semantic WebBPM meets Semantic Web
BPM meets Semantic Web
 
An Execution Engine For Semantic Business Processes
An Execution Engine For Semantic Business ProcessesAn Execution Engine For Semantic Business Processes
An Execution Engine For Semantic Business Processes
 
Web Services Orchestration with BPEL 2.0
Web Services Orchestration with BPEL 2.0Web Services Orchestration with BPEL 2.0
Web Services Orchestration with BPEL 2.0
 

Recently uploaded

"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 

Recently uploaded (20)

"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 

Facilitating Rich Data Manipulation in BPEL using E4X

  • 1. Facilitating Rich Data Manipulation in BPEL  using E4X Tammo van Lessen, Jörg Nitzsche, Dimka Karastoyanova Institute of Architecture of Application Systems (IAAS) University of Stuttgart Universitätsstr. 38 70569 Stuttgart Germany tammo.van.lessen@iaas.uni‐stuttgart.de
  • 2. The Talk Today Motivation and Introduction Combining WS‐BPEL with E4X Extension Assign Operation & Extension Activity Injecting BPEL variables Built‐in functions Conclusions © Tammo van Lessen 2
  • 3. Problem Statement Business Analyst Process Developer © Tammo van Lessen 3
  • 4. Low‐level Problems BPEL Variables must be initialized var TShoppingCart shoppingCart var TItem item var EItem eitem Data types are typically not aligned Create  Data mediation required Shopping selectionFailure Cart Array manipulation is cumbersome doXSLTransform AddItem Complete Custom XSL scripts needed Data type  Check Submit Reuse not possible mismatch Availability Order Add to Confirm doXSLTransform Cart © Tammo van Lessen 4
  • 5. Alternatives BPELJ Use plain old Java snippets Pro: Easy to use Con: W3C DOM still quite cumbersome Semantic Data Mediation SUPER technology Pro: Killer feature on the conceptual level Con: Requires too much modelling efforts <s:mediate inputVariable=quot;xquot; outputVariable=quot;yquot; mediatorIRI=quot;urn:anyquot;? /> © Tammo van Lessen 5
  • 6. What is JavaScript/E4X? JavaScript ECMA 262, Edition 3 JavaScript 1.6 E4X Proposed by BEA ECMA 357 XML support at the language level Literals, nodes, attributes, namespaces… XPath‐like syntax foreach… Allows nodesets as LHS expressions var items = <items> <item name=quot;SOA bookquot; price=quot;40quot; quantity=quot;2quot;/> <item name=quot;BPM bookquot; price=quot;35quot; quantity=quot;3quot;/> <item name=quot;EAI bookquot; price=quot;30quot; quantity=quot;1quot;/> </items>; alert( items.item.(@name == quot;SOA bookquot;).@quantity ); for each( var thisPrice in items..@price ) { sum += thisPrice; } 6 © Tammo van Lessen
  • 7. Using Javascript/E4X in BPEL <assign> <assign name=quot;e4x-assignquot;> <extensionAssignOperation> <js:snippet> myVar.TestPart += ' World'; </js:snippet> </extensionAssignOperation> </assign> <assign name=quot;e4x-array-assignquot;> <extensionAssignOperation> <js:snippet> load('shoppingCartUtils.js'); shoppingCart.parameters = createShoppingCartSkeleton(); shoppingCart.parameters.items += createCartItem(item); shoppingCart.parameters.items.item.(@hyped=='true').price *= 2; </js:snippet> </extensionAssignOperation> </assign> BPEL variables are injected into JS context Variables can be read and written 7 © Tammo van Lessen
  • 8. Using Javascript/E4X in BPEL <extensionActivities> <extensionActivity name=“adjustShippingDetailsquot;> <js:snippet> if (goldRatio > 1.0 || silverRatio > 1.0) { throwFault('urn:myprocess', 'IllegalArgumentFault', 'discount ratios must be <= 1.0'); } if (customer.type == 'gold') { po.items.item.price *= goldRatio; } else if (customer.type == 'silver') { po.items.item.price *= silverRatio; } else if (customer.type == 'besteffort') { po.shippingMode = 'snailmail'; } </js:snippet> </extensionActivity> JavaScript functions can be used to reuse such  snippets Use with caution! 8 © Tammo van Lessen
  • 9. Built‐in Functions load(…) Loads custom JS/E4X library print(…) Prints debug output to console piid() Returns process instance ID activityName() Returns activity name processName() Returns the process’ QName throwFault(namespace, localpart, faultmsg) throwFault(xmlobject) Throws a BPEL fault validate(…) Validates a variable’s content against its schema 9 © Tammo van Lessen
  • 10. Conclusions Variable Assignments in vanilla BPEL are cumbersome Adding items to lists is not possible Would require a nodeset as LHS expression Can be done using external XSL scripts Batch‐updating an XPath match is not possible Variable initialization is very verbose No reuse possible for recurring data manipulation tasks. Using E4X in BPEL Provides a convenient syntax for rich XML manipulation Reuse of such scripts across activities and processes is possible Simplifies array manipulation Implementation available Publicly available in Apache ODE Will be part of the upcoming 2.0 release 10 © Tammo van Lessen