Dashboard > PXE > ... > Service Providers > BPEL Service Provider > View

Page Operations


Navigation


PXE Log In   View a printable version of the current page.
BPEL Service Provider
Added by Paul Brown, last edited by Paul Brown on Jan 20, 2005

The BPEL Service Provider ([com.fs.jlo.bpel.provider.BpelServiceProvider]) extends the PXE container to support BPEL processes execution. Installing this service provider in a PXE domain makes it possible to deploy BPEL process definitions as PXE services.

Service Provider Configuration

There are two questions that are answered at configuration time:

  1. Which persistence implementation should be used?
  2. Which expression / query languages will be supported?

Both of these questions are answered using the configuration properties described below.

Configuration Properties

Property Description
stateStoreConnectionFactory The classname of the [StateStoreConnectionFactory] implementation that should be used for persistence.
expressionLanguageFactory The classname(s) of the [ExpressionLanguageRuntime] implementation(s) that are to be used for evaluation of BPEL expressions. If multiple classnames are specified they should be separated by either "," or ";". If no classnames are specified, the default XPath implementation will be used.

PXE Stand-Alone Server Configuration

The PXE stand-alone server uses a configuration file — pxe-config.properties — to configure service providers. The configuration for the BPEL Service Provider, should look something like:

pxe-config.properties
.
.
.
# BPEL Service Provider
pxe.j2ee.provider.sp3.uri=uri:bpelProvider
pxe.j2ee.provider.sp3.class=\
  com.fs.jlo.bpel.provider.BpelServiceProvider
pxe.j2ee.provider.sp3.property.stateStoreConnectionFactory=\
  com.fs.jlo.daohib.bpel.StateStoreConnectionFactoryImpl
pxe.j2ee.provider.sp3.property.expressionLanguageFactory=\
  foo.bar.MyExpressionLanguageRuntimeImpl
.
.
.

Service Deployment

A BPEL process definition must be pre-compiled into a compiled BPEL process (a .cbp file) before it can be deployed as a PXE service. This compilation can be performed either by the bpelc command or through [programmatic means]. The .cbp file must be placed in the resource repository of a PXE system, and is referenced (by URI) from the PXE service configuration in the system deployment descriptor.

Deployment Properties

Property Description
compiledProcess URI of the compiled BPEL process. This URI is resolved using the system's resource repository

Ports

A BPEL process communicates with external services through partner links, which can define a partner role and/or a my role. The partner role of a partner link is a reference to an external service, while the "my" role of a partner link represents an interface to the BPEL process. Each BPEL service must declare appropriate ports for each of these roles. Each my role must have a corresponding exported port declaration, while each partner role must have a corresponding imported port declaration.

The link between the ports and the BPEL partner-link roles is established through naming convention; a port name must take on one of the following forms:

  1. partnerLink.role : the role named role of partner link named partnerlink
  2. scope:partnerLink.role : the role named role of partner link named partnerLink declared in a scope named scopeName
  3. scope[m]:partnerLink.role : the role named role of partner link named partnerLink declared in the mth occurance of a scope named scopeName
  4. partnerLink[n].role : the role named role of the nth occurance of partner link named partnerLink declared anywhere in the process

If there are multiple partner links with the same name declared in a single process (as can happen when partner links are declared within a <scope>) then a form that unamigously selects a single partner link must be used. For example the following BPEL process:

<process name="HelloWorld" ....>
   <partnerLinks>
      <partnerLink name="helloPartnerLink" 
         partnerLinkType="test:HelloPartnerLinkType" 
         myRole="me" />
   </partnerLinks>
   <receive .../>
   <reply .../>       
</process>

could declare its port using the simplest (first) form:

<system-descriptor ....>
  .
  .
  <services>
     .
     .
    <service name="helloWorld.BpelService" provider="uri:bpelProvider">
      <exports>
        <port name="helloPartnerLink.me" type="hw:HelloPortType" ... />
      </exports>
    </service>
  </services>
</system-descriptor>

However, the BPEL process:

<process name="HelloWorld" ....>
   <partnerLinks>
      <partnerLink name="helloPartnerLink" 
         partnerLinkType="test:HelloPartnerLinkType" 
         myRole="me" />
   </partnerLinks>

   <scope>
     <partnerLinks>
       <partnerLink name="helloPartnerLink" 
          partnerLinkType="test:HelloPartnerLinkType" 
          myRole="me" />
     </partnerLinks>
     .
     .
   </scope>
</process>

would have to use one of the more precise forms; for example:

<system-descriptor ....>
  .
  .
  <services>
     .
     .
    <service name="helloWorld.BpelService" provider="uri:bpelProvider">
      <exports>
        <port name="helloPartnerLink[1].me" type="hw:HelloPortType" ... />
        <port name="helloPartnerLink[2].me" type="hw:HelloPortType" ... />
      </exports>
    </service>
  </services>
</system-descriptor>

Port-Level Properties

Property Description
endpointReference String representation of an end-point reference to associate with this port. This property is used to establish the initial value of a partner link's end-point reference. This property is only relevant for imported ports.


Site powered by a free Open Source Project / Non-profit License (more) of Confluence - the Enterprise wiki.
Learn more or evaluate Confluence for your organisation.
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 1.4.1 Build:#212 Jun 02, 2005) - Bug/feature request - Contact Administrators