18 Oracle BPEL Process Manager

This chapter describes issues associated with Oracle BPEL Process Manager. It includes the following topics:

18.1 General Issues and Workarounds

This section describes general issue and workarounds. It includes the following topics:

18.1.1 Using Domain Value Map Functions in a Switch Activity

Using domain value map XPath functions such as dvm:lookupValue() in Oracle BPEL Process Manager, specifically in the condition expression for a switch-case activity, causes the functions to fail with an exception error.

As a workaround, perform the following steps:

  1. Use an assign activity block to capture the output of the domain value map function in a variable (for example, dvm_out).

  2. Use the dvm_out variable in a switch activity statement.

18.1.2 Defining a Correlation Set Before Invocation Properties Causes Errors

If a correlation set element appears before the invocation properties inside an invoke activity, errors occur during BPEL process compilation. This is because the correlation set element is placed before the bpelx:inputProperty entries.

<invoke name="Invoke_850" inputVariable="Invoke_850_send_InputVariable"
            partnerLink="send850" portType="ns2:B2B_send_ptt"
operation="send">
      <correlations>
        <correlation initiate="yes" set="CorrelationSet_1" pattern="out"/>
      </correlations>
      <bpelx:inputProperty name="b2b.documentProtocolVersion"
                           expression="'4010'"/>
      <bpelx:inputProperty name="b2b.documentTypeName" expression="'850'"/>
      <bpelx:inputProperty name="b2b.fromTradingPartnerId"
                           expression="'GlobalChips'"/>
      <bpelx:inputProperty name="b2b.toTradingPartnerId"
                           expression="'AcmeRID'"/>
    </invoke> 

This can occur if you create a BPEL process with an invoke activity, create a correlation set for the invoke activity, then update several of the invoke activity properties.

As a workaround, open the BPEL process in Source view in Oracle JDeveloper and manually move the correlation set element below the invoke properties.

<invoke name="Invoke_850" inputVariable="Invoke_850_send_InputVariable"
            partnerLink="send850" portType="ns2:B2B_send_ptt"
operation="send">
      <bpelx:inputProperty name="b2b.documentProtocolVersion"
                           expression="'4010'"/>
      <bpelx:inputProperty name="b2b.documentTypeName" expression="'850'"/>
      <bpelx:inputProperty name="b2b.fromTradingPartnerId"
                           expression="'GlobalChips'"/>
      <bpelx:inputProperty name="b2b.toTradingPartnerId"
                           expression="'AcmeRID'"/>
      <correlations>
        <correlation initiate="yes" set="CorrelationSet_1" pattern="out"/>
      </correlations>
    </invoke> 

18.1.3 Audit Trail Details Display in Server Language Instead of Browser Language

Audit trail information for a BPEL instance displays in the language of your server instead of the language of your web browser.

18.1.4 Do Not Specify the wsa and bpel Property Prefixes with the bpelx:property

Tables H-1 and H-2 of Appendix H, "Normalized Message Properties" of the Oracle Fusion Middleware Developer's Guide for Oracle SOA Suite describe the Oracle BPEL Process Manager and Oracle Web Services Addressing properties.To use these properties correctly with the bpelx:property in activities such as a receive activity, ensure that you do not include the wsa. or bpel. prefixes. For example:

<receive name="receiveInput" partnerLink="bpelprocessb_client"
portType="client:BPELProcessB" operation="process" variable="inputVariable"
 createInstance="yes">
           <bpelx:property name="action" variable="v1"/>
           <bpelx:property name="messageId" variable="v2"/>
           <bpelx:property name="relatesTo" variable="v3"/>
           <bpelx:property name="replyToAddress" variable="v4"/>
           <bpelx:property name="replyToPortType" variable="v5"/>
           <bpelx:property name="replyToService" variable="v6"/> 
</receive>

18.1.5 Selecting the Key for an Entity Variable in the Browse Entity Variable Dialog

When selecting the local part of an entity key by browsing entity variables, entity icons display in the expanded element tree. These icons are identified by a blue x inside parentheses, and indicate which elements include entity keys. Selecting these elements does not update the Key Local Part or Key Namespace URI fields in the Specify Key dialog. Instead, you must expand these elements to select the actual key to get the key's local part and namespace. For example:

  1. In the Bind Entity dialog, click the Add icon to invoke the Specify Key dialog.

  2. To the right of the Key Local Part field, click the Browse Entity Variable icon.

  3. Note that a blue x inside parentheses indicates which elements include entity keys. Do not select these elements.

  4. Expand these elements to display the entity keys available for selection.

  5. Select an entity key, and click OK.

    The Key Local Part and Key Namespace URI fields of the Specify Key dialog are populated with information about your selection.

18.1.6 MIME Type for Voice Notification in BPEL Voice Activity Requires Modification

In a BPEL voice activity, the MIME type for message content generated in the source code is in text/vxml format. However, the message sent from the composite to the voice XML driver must be in text/plain format. This is because the voice XML driver adds the voice XML wrapper to the message before sending it to the destination point.

If the message content sent to the driver is in text/vxml format for the MIME type, a message delivery failure occurs. Therefore, manually change the MIME type for the voice payload content to be text/plain in Source mode in Oracle JDeveloper.

<scope name="VoiceApproval">
. . .
. . .
   <copy>
      <from expression="string('text/plain')"/>
      <to variable="varNotificationReq" part="VoicePayload"
      query="/VoicePayload/ns1:Content/ns1:MimeType"/>
   </copy> 
. . .
. . .
</scope>

18.1.7 Client Java API Is Not Backward Compatible

Custom applications coded with the Oracle BPEL Process Manager 10.1.3 Client Java API cannot currently be upgraded to the 11g Release 1 PS2 Client Java API. Programs coded to the Oracle BPEL Process Manager 10.1.3 API must be rewritten. In addition, the current API is not compatible with previous versions of the 11g API, although the differences are minimal.

The version of the API in this release has been finalized. It is now fully supported and is backward compatible from this release onwards.

Visit the following URL for details:

http://www.oracle.com/technology/products/soa/bpel/collateral/documentation.html

18.2 Configuration Issues and Workarounds

This section describes configuration issues and their workarounds. It includes the following topic:

18.2.1 BPEL XPath Expression Function ora:getAttachmentContent

The ora:getAttachmentContent function reads SOAP attachment content and encodes that data in base64 format in a BPEL process by providing the BPEL variable as an argument, which has an href of the SOAP attachment. The following example shows how to use this function:

<copy>
   <from expression="ora:getAttachmentContent('input','bin')"/>
   <to variable="initiateTaskInput" part="payload"
    query="/taskservice:initiateTask/task:task/task:attachment/task:content"/>
</copy>

This example copies the attachment content, which has its href stored in the "input/bin" variable, to the content variable in base64-encoded format.

18.3 Documentation Errata

This section describes documentation errata. It includes the following topics:

18.3.1 Subscribe To Events Template in Create BPEL Process Dialog

The online help for the Create BPEL Process dialog in Oracle JDeveloper does not include a description of the Subscribe to Events option that is available in the Template dropdown list.

If you select this option, the dialog is refreshed to display a business events table and Filter, Add, and Delete icons.

  • Click the Add icon to select an event to which to subscribe. Your selection is then displayed in the event table. You can then select the consistency level and whether or not to publish this event.

  • Click the Filter icon to create a filter expression for the selected event. This selection launches the Expression Builder dialog.

  • Click the Delete icon to delete the selected event.

For more information about business events, see Chapter "Using Business Events and the Event Delivery Network" of Oracle Fusion Middleware Developer's Guide for Oracle SOA Suite.

18.3.2 Incorrect Syntax for FlowN Activity

Section "What Happens When You Create a FlowN Activity" of Chapter "Using Parallel Flow in a BPEL Process" of the Oracle Fusion Middleware Developer's Guide for Oracle SOA Suite shows the following count XPath function syntax in the receive activity that, if used, results in a selection failure:

expression="count(bpws:getVariableData('inputVariable','payload','/client:Nflow
HotelsProcessRequest/client:ListOfHotels/client:HotelName'));"/>

Instead, use the following syntax.

count($InputVariable.payload/client:HotelName)