Dynamically Determining the Process to Call

You can use the Process Name Dynamic Override field on the Configuration tab to specify an XPath expression that determines which process to call. This is useful for calling a different process depending upon the value of the XPath expression. For example, you have an incoming HTTP request that contains an attribute named orderAmount. For all incoming orders over $10,000, you want to call a process that includes activities in the Manual Work palette to obtain the proper approvals. For orders under $10,000, you want to call a process that handles the order automatically. You can create the following expression that resolves to the proper process name for each type of order:

if($IncomingOrder/orderAmount > 10000) then
           ’/MyProject/manualApproval.process’
      else ’/MyProject/processOrder.process’

Use the full path and name of the process file as stored in the project directory.

When you use the Process Name Dynamic Override field, you must also specify a process to call in the Process field. The input, output, and error definitions of the specified process must be the same as any process that the expression in the Process Name Dynamic Override field can evaluate to.

Tip: It may be helpful to create process definitions that act as programmatic interfaces when using the Process Name Dynamic Override field.
Tip: In the example above, you may create a process named orderProcessOrApprove. The only purpose of this process is for specifying the input, output, and error schemas. Place this process in the Process field of the Call Process tab. Then, create the manualApproval and processOrder process definitions as copies of the orderProcessOrApprove process. The Call Process activity then has the correct input, output, and error schemas for all processes that can be called.
Note: If you use the Process Name Dynamic Override field, make sure you include all potentially callable subprocesses when you create your Process Archive for deployment. TIBCO Designer cannot determine which subprocesses are potentially callable at design time, and therefore they cannot be automatically included in a process archive. For more information about creating process archives, see TIBCO Designer™ User's Guide.