ode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Karthick Sankarachary (JIRA)" <j...@apache.org>
Subject [jira] Updated: (ODE-450) Expose Deployment Properties In BPEL Process
Date Thu, 04 Dec 2008 19:24:46 GMT

     [ https://issues.apache.org/jira/browse/ODE-450?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Karthick Sankarachary updated ODE-450:
--------------------------------------

    Description: 
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 of now, we externalize certain process
properties and wirings in a deployment descriptor 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, which are defined at deploy-time, directly
in the BPEL process. To that end, we define a new extension XPath function that returns the
node value corresponding to the qualified name of a process property, as shown below:

    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 consider a scenario where a BPEL process invokes an external WSDL service, whose location
is not know a priori. The best way to handle this is to define the endpoint reference (EPR)
of that service at deploy-time as a process property. In the BPEL process itself, we reference
the EPR property and assign it dynamically to the partner link corresponding to that service.
For example, the snippet of deploy.xml below declares a process called "tns:negotiate", which
is given 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:negotiate">
           <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 the BPEL code, the dynamic assignment of the auction service partner link boils down to
this statement:

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

  was:
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("auctionEpr")</from>
            <to partnerLink="auctionRegistrationService" />
         </copy>
    </assign>


> 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
>            Assignee: Karthick Sankarachary
>             Fix For: 1.3
>
>         Attachments: expose-process-properties-for-branch.patch
>
>   Original Estimate: 48h
>  Remaining Estimate: 48h
>
> 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 of now, we externalize certain process
properties and wirings in a deployment descriptor 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, which are defined at deploy-time,
directly in the BPEL process. To that end, we define a new extension XPath function that returns
the node value corresponding to the qualified name of a process property, as shown below:
>     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 consider a scenario where a BPEL process invokes an external WSDL service, whose
location is not know a priori. The best way to handle this is to define the endpoint reference
(EPR) of that service at deploy-time as a process property. In the BPEL process itself, we
reference the EPR property and assign it dynamically to the partner link corresponding to
that service. For example, the snippet of deploy.xml below declares a process called "tns:negotiate",
which is given 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:negotiate">
>            <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 the BPEL code, the dynamic assignment of the auction service partner link boils down
to this statement:
>     <assign>
>          <copy>
>             <from>ode:process-property("auctionEpr")</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.


Mime
View raw message