How to set a Flow Limit for a given BusinessWorks 6.X or BusinessWorks Container Edition Component

Emmanuel Marchiset
3 min readMar 21, 2021

The Flow Limit mechanism of BusinessWorks is a mean to limit the number of instances of a given Process running simultaneously for an application in an appnode. In other words this is a mechanism to control the parallelism of execution of processes exposing a Component or started by a Process Starter activity.

This BusinessWorks mechanism is available for all transports managed in BusinessWorks (JMS, File Poller, etc) but this is not the most efficient for some transports.

The Flow Limit can be enabled using a property managed in the config.ini file of the target appspace or appnode as explained in the template appspace config.ini file :

Explanations on Flow Limit from the appspace_config.ini_template file

This article is mainly to explain how to get the needed elements to use this mechanism.

How to set a Flow Limit for a given Component

You first need to identify the application name and version, this is available in Studio in the Package Unit / Overview panel of the application project:

Application Name and Application Version from Studio

You can also get those elements using the following bwadmin command:

show -d <DOMAIN_NAME> -a <APPSPACE_NAME> applications

For example:

Application Name and Application Version from bwadmin

You then need to find the Component name, this is available in Studio in the Module Descriptors / Components panel of the module project:

Component Name from Studio

You can also get this element using the following bwadmin command :

getcomponents -d <DOMAIN_NAME> -a <APPSPACE_NAME> -n <APPNODE_NAME> <APPLICATION_NAME> <APPLICATION_VERSION>

For example:

Component Name from bwadmin

Once you have collected the above elements you can set the flow limit by adding a property in the config.ini file of the target appspace (to apply to all appnodes of the appspace) or in the config.ini file of each appnode of the appspace (to have different values for each appnode).

In the example above, we have the following elements:

Application name = OrderProcessing.application

Application version = 1.0

Component Name = ComponentProcess

So the property to add to never have more than two instances of the process ‘OrderFileProcessing’ running at the same time is the following:

bw.application.job.flowlimit.OrderProcessing.application.1.0.ComponentProcess=2

Note that the Flow Limit parameter can be defined for all Processes of a given application by using just the application name, for example:

bw.application.job.flowlimit.OrderProcessing.application=2

Note

This feature is also available in BusinessWorks Container Edition (BWCE) environment, details are available in the following support Knowledge Base article :
https://support.tibco.com/s/article/How-to-set-flowlimit-at-component-level-in-ActiveMatrix-BusinessWorks-Container-Edition-application

Starting from BusinessWorks 6.7.0 it is possible to dynamically update the flow limit from the Application level 2, AppSpace level 2, and AppNode level 2 pages of the Admin UI (in other words from the TEA).

It is also possible to do this by using a REST API documented here for BusinessWorks:
https://docs.tibco.com/pub/activematrix_businessworks/6.9.1/doc/html/Default.htm#administration/tuning.htm?Highlight=Updating%20Flow%20Limit%20Dynamically

And documented here for BusinessWorks Container Edition:
https://docs.tibco.com/pub/bwce/2.8.1/doc/html/Default.htm#bwce-app-monitoring/updating-flow-limit-.htm?TocPath=Application%2520Monitoring%2520and%2520Troubleshooting%257C_____8

Reference

https://docs.tibco.com/pub/activematrix_businessworks/6.10.0/doc/html/perf-bench-tuning/flow-limit-bw.appli.htm

https://support.tibco.com/s/article/How-to-set-up-Flow-Limit-in-BW-6-x

--

--

Emmanuel Marchiset

I work as an Architect at TIBCO Software on Integration products. Opinions here are my own.