Business process service


Using math expressions inside index predicates

CR #429800

Description: The business process service does not support math expressions inside index predicates.


Testing a SOAP service with a public WSDL

CR #429145

Description: If you are using an element that occurs more than once under two different namespaces in a public WSDL, you may have problems if you use the Test dialog.

Workaround: Use the SOAP Inspection dialog.


Using count variables in nested loops

CR #428930

Description: When you create a looping complex activity, a count variable is automatically created to facilitate development. The default count variable name is counter, causing a problem with nested loops. When you create a loop within a loop, all the count variables have the same name.

Workaround: If you plan to use count variables in a nested loop, change the default name of the count variable to a meaningful name within the context of the business process, for example, orderCounter or lineItemCounter.


Expression editor availability

CR #428910

Description: The expression editor is disabled for an assign activity if the source and target have not been specified or, in a Prune, the target has not been specified. The expression editor is available if the source is a literal, but the editor contains the target node only, and nothing can be added.


Deploying two packages that listen for messages on the same input queue

CR #424055

Description: If you deploy two separate packages that listen for messages on the same input queue, you could have problems with the routing of messages to the appropriate business process service. Because each package installs its own JMS listener, this process works intermittently when the message is grabbed by the correct listener, but fails when listener A grabs a message intended for listener B and vice versa.

Workaround: Install both business process services in the same package and use a single JMS input endpoint to expose the services. In this case, one JMS listener is registered that routes messages to one of two business processes.


Business process fails to clean up if it sends correlation values beginning with a space

CR #426619

Description: A stateful business process may fail to be cleaned up after the business process completes if the business process uses correlation values that begin with a space. This problem is due to an error in the interaction between the server and the transaction manager.

Workaround: When running a business process, do not send correlation values that begin with a space. There is no known solution to the problem at this time.


Variable references inside XPath index predicates not supported in assign target

CR #401250

Description: The target (Finish) node of an assign activity does not support variable references inside of XPath index predicates, such as in the following example:

/PurchaseOrder/LineItems/Item[/counter]/PartNum

Workaround: Use the getVariableData pseudofunction to retrieve the value of the variable, as shown in the following example:

/PurchaseOrder/LineItems/Item[getVariableData(‘counter’)]/PartNum


Problem with two stateful business processes in the same package

CR # 403833

Description: Deadlocks can occur when stateful business process #1 invokes stateful business process #2. This occurs when the invocations are in the same package (the same transaction) and multiple threads invoke the services.

Workaround: Break the transaction between business process #1 and business process #2 by wrapping business process #2 with a SOAP service.


XPath number function

CR # 390946

Description: The XPath number function does not return the numeric value of the given argument if it is a Boolean type. For example, if you create an input parameter, connect it to number function, and connect this to an output parameter in an assign, you do not see the expected results.

Workaround: Use the following method to produce the correct results for the above example.

StepsConverting a Boolean argument to a number in an assign activity

  1. Create an input Boolean parameter.

  2. Create an output Float parameter.

  3. Activate the Tool Palette.

  4. Drag and drop an assign activity onto the canvas.

  5. From the Business Process Variables section, drag the parameter you want to use as the source, and drop it into the Source cell of the assign properties.

  6. From the Business Process Variables section, drag the parameter you want to use as the target, and drop it into the Target cell of the assign properties.

  7. Click the Assign tab in the Properties Panel for the assign.

  8. Click in the expression editor to activate the Tool Palette.

  9. Select the Boolean Functions tool palette, drag IsEqualTo, and drop it onto the expression editor.

  10. From the Generic Variable and Constants tool palette, drag String Constant, and drop it onto the expression editor.

  11. Highlight String Constant in the editor, and change the Logical name property to True. Select the check box next to Source text to keep the Logical name and Source name the same.

  12. Change the datatype to Boolean.

  13. From the Number Functions tool palette, drag number and drop it onto the expression editor.

  14. Connect the following to create the flow:

    1. Connect the input variable to IsEqualTo.

    2. Connect True to IsEqualTo.

    3. Connect IsEqualTo to the number.

    4. Connect the number to the output variable.


Substring-after and substring-before function arguments with leading zeros

CR # 399122

Description: The substring-after and substring-before functions do not always give the correct output if the argument strings have leading zeroes. The leading zeroes are deleted.

Workaround: Perform the operations using a map.


DateTime comparisons

CR # 401270

Description: When comparing the value of a dateTime field to the dateTime constant or a variable, Sybase WorkSpace does not always return True even when the condition is True. For example:

getVariableData('BP11243231409382', 'newParameter1', '/ns0:CT/ns0:dateTime') < '2005-08-17T18:00:00'

Workaround: Convert the dateTime field values to ISO dates or times. The ISO format puts the number in a sequence (such as YYYYMMDDHHMMSS) without any of the annotations that are present in the format used by XSD Schema types. When dates and times are in this format, you can compare the two integers to identify which dates are newer or older.

For example, if you have a dateTime format of 2005-08-17T18:00:00, you can perform the following operations on that string to convert it to an ISO dateTime, where dateTime = 2005-08-17T18:00:00:

result = concat( concat( concat( substring(dateTime, 1, 4), substring(dateTime, 6, 2) ), concat( substring(dateTime, 9, 2), substring(dateTime, 12, 2) ) ), concat( substring(dateTime, 15, 2), substring(dateTime, 18, 2)))

This operation would yield result = 20050817180000. Convert this string to an integer using number and round functions, round(number(result)), which could then be used as an integer in a comparison.


Corruption of looping expressions copied from a complex activity

CR # 431557

Description: If the looping expression of a complex activity is collapsed and the complex activity also contains an assign having a collapsed expression, the looping expression is corrupted when the complex activity is cut and pasted into another complex activity.

Workaround: Expand the looping expression of a complex activity before cutting and pasting the complex activity.


WorkSpace hangs on copy or cut of assign activity with multiple rows and collapsed expression

CR # 431554

Description: Sybase WorkSpace hangs when an assign activity containing multiple rows, at least one of which contains a collapsed expression, is copied or cut. Sybase WorkSpace must then be killed from the Windows task manager.

Workaround: Expand any collapsed expressions within an assign activity containing multiple rows before attempting to copy or cut the activity.


Cannot delete target in assign expression editor

CR #408108

Description: If you attempt to delete a target in the expression editor, the action is ignored.


Cannot drag and replace target in assign expression editor

CR #408088

Description: If you attempt to replace an expression target in the expression editor by dragging and dropping the new variable onto the existing variable, the new variable is only placed onto the canvas but does not replace the existing variable.

Workaround: Use the Assign Overview tab to replace expression targets.


Multiple Send Response operations cause delete conflict

CR #398913

Description: Deleting a Send Response operation when the response variable is set to a fault parameter can result in errors.

Workaround: Before deleting a Send Response operation, change the Response variable from the fault parameter to Normal Response.