This page last changed on Jun 16, 2006 by tcarlson.

Mule users can include the PXE WS-BPEL engine inside their ESB architecture using the PXE component shipped with Mule 1.1 and later. This allows you to execute WS-BPEL processes within Mule. The PXE component is easy to set up, the following example uses the Async Demo supplied with the PXE distribution. It will receive events on a Jms queue called bpel.queue and invoke the Pxe Bpel application in the ./async-pxe-sdb/ directory.

<mule-descriptor name="pxe" implementation="org.mule.extras.pxe.PxeComponent">
    <inbound-router>
        <endpoint address="jms://bpel.queue"/>
    </inbound-router>
    <properties>
        <property name="pxeEndpoint" value="com.bptest.process.ProcessSVC/ProcessPORT"/>
        <property name="defaultOperation" value="com.bptest.process:Run"/>
        <property name="configuration" value="async-pxe-sdb/"/>
    </properties>
</mule-descriptor>

The pxeEndpoint property is the endpoint to invoke on the BPEL process, this is in the form of -

[namespaceURI]/[Port name]

The defaultOperation property is optional and specifies which operation to invoke if one is not specified on the incoming event. The operation is a QName and can be specifed as a property on the inbound endpoint or on the incoming event using the property name 'bpel.operation' in the form of -

[namespaceURI]:[localPart]
or
[localPart]

If no bpel.operation has been set on the incoming event and the defaultOperation property has not been set on the PxeComponent an exception will be thrown at runtime.

The configuration property specifies the location of your PXE application; this is a directory on the file system or classpath where all pxe configuration and bpel files are located.

You will also need to add the Mule Jmx agent to your configuration so that the PXE component can register its management objects with an MBean server. You can cut and paste the following configuration -

<agents>
    <!-- starts an RMI registry on the default port 1099. -->
    <agent name="RMI" className="org.mule.management.agents.RmiRegistryAgent"/>
    <agent name="JMX" className="org.mule.management.agents.JmxAgent">
        <properties>
            <property name="connectorServerUrl" value="service:jmx:rmi:///jndi/rmi://localhost:1099/server">
            <map name="connectorServerProperties">
                <property name="jmx.remote.jndi.rebind" value="true"/>
            </map>
        </properties>
    </agent>
<agents>

Finally, Pxe requires a transaction manager so you need to add a Transaction Manager to your Mule configuration, in this case using the JOTM Manager -

<transaction-manager factory="org.mule.extras.jotm.JotmTransactionManagerFactory"/>

You can view the Pxe test case in CVS here.

Document generated by Confluence on Nov 27, 2006 10:27