Expose Deployment Properties In BPEL Process
--------------------------------------------

                 Key: ODE-450
                 URL: https://issues.apache.org/jira/browse/ODE-450
             Project: ODE
          Issue Type: New Feature
          Components: BPEL Compilation/Parsing, BPEL Runtime
    Affects Versions: 1.2
         Environment: platform-independent
            Reporter: Karthick Sankarachary
             Fix For: 1.3


Often times, one would like to be able to assert some influence over the 
runtime behavior of a BPEL process even though it is "code-complete". As a 
matter of fact, we already externalize certain process properties and wirings 
in a deployment artifact known as deploy.xml. However, we stop short of 
exposing those properties in the BPEL process, which is a known limitation.

What we need is a mechanism to reference properties defined at deploy-time 
directly in the BPEL process. To that end, we will define an extension XPath 
function that will return the node object corresponding to the qualified name 
of a process property, as follows:

    ode:process-property($name as item() ) as node()

where $name refers to any schema item that resolves to a QName, and
             the return node value is the child of the property element with 
the given name.

Let us see how a service EPR that is defined at deploy-time can be dynamically 
assigned to a partner link in the BPEL process, thereby changing the target 
location of that partner after the fact. In the snippet of deploy.xml shown 
below, the process called "tns:process" is assigned a property called 
"auctionEpr" whose value is set to a BPEL <service-ref> element. 

    <deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03";
                   xmlns:tns="http://ode/bpel/process";>
        <process name="tns:process">
           <property name="auctionEpr">
            <sref:service-ref 
                xmlns:sref=" http://docs.oasis-open.org/wsbpel/2.0/serviceref";
                xmlns:addr="http://example.com/addressing";
                xmlns:as="http://example.com/auction/wsdl/auctionService/";>
                <addr:EndpointReference>
                    
<addr:Address>http://example.com/auction/RegistrationService/</addr:Address>
                    <addr:ServiceName>as:RegistrationService</addr:ServiceName>
                </addr:EndpointReference>
            </sref:service-ref>
          </property>...
        </process>
    </deploy>

In order to assign this user-defined EPR to a certain partner link, you would 
use an assign statement that looks something like this:

    <assign>
         <copy>
            <from>ode:process-property("epr")</from>
            <to partnerLink="auctionRegistrationService" />
         </copy>
    </assign>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to