How to control flows in BusinessWorks 5.X

Emmanuel Marchiset
3 min readMay 9, 2021

This article is the BusinessWorks 5.X version of an article already published for BusinessWorks 6.X and BusinessWorks Container Edition. The original article is available at the following URL :
https://emarchiset.medium.com/how-to-control-flows-in-businessworks-6-x-and-businessworks-container-edition-94e5a35bb745

In most integration scénarios BusinessWorks is processing external events, like WEB Services calls, JMS messages publications or files transfers, that are received at a rate that is mostly depending from the business activity.

This means that at some moments, there could be a high load of events to manage and this may exceed the BusinessWorks configuration capabilities and create problems like high cpu consumption impacting other flows or out of memory errors impacting the flow processing.

In a production environment it is then necessary to have in place some solutions to limit the number of events processed at the same time in BusinessWorks.

BusinessWorks 5.X has its own ‘Max Jobs’ and ‘Flow Limit’ mechanisms to manage this requirement but depending on the transport you are using to receive events this might not be the most efficient solution.

This article is to explain the recommended way to control flows for the most common transports used with BusinessWorks 5.X.

HTTP based flows

For HTTP based flows the number of events processed at the same time in BusinessWorks 5.X is by default set to 75. This can be adjusted at deployment time for each Process Starter of an Archive in the ‘Advanced’ tab of the ‘Service Configuration’ panel by setting a value different than zero to the Flow Limit property. After updating the value of a Flow Limit property the archive must be redeployed for the change to be taken into account.

Setting the value of the Flow Limit property is equivalent to setting the engine property bw.plugin.http.server.maxProcessors for the selected Process Starter to ‘<valueOfFlowLimit> — 1’.

As mentioned in the Chapter 8 of BusinessWorks 5.X Administration documentation the bw.plugin.http.server.maxProcessors property specifies the maximum number of threads available for incoming HTTP requests. The HTTP server will not create more than the number of threads specified by this parameter. The default maximum number of threads is 75.

Setting the Flow Limit property for a Process Starter in TIBCO Administrator

This property can also be set in the deployment.xml file used by AppManage when deployment are managed in scripted mode.

With the example above you can check that the following property is added at deployment in the application tra file:

FlowLimit.WEBOrdersAPI.process=25

JMS based flows

For JMS based flows the most efficient way to control the flows is to configure in the applications the JMS Receive Message activities to use ‘Client Acknowledgement’ with a ‘Max Sessions’ and manage confirmations explicitly with ‘Confirm’ activities. With such configuration the number of events processed at the same time in BusinessWorks is defined by the Max Sessions Parameter.

Example of a process implementing the best practice for JMS Flow Control

In this approach the flow control is efficiently managed by the EMS server and the number of flows processed in parallel in BusinessWorks remain at the value defined by Max Sessions as long as it is needed.

It is strongly recommended to manage the value of the Max Sessions Parameter with a property to allow the operation team to adjust its value in the run time environment.

In the case the application with the JMS Receive Message activity would not use ‘Client Acknowledgement’ then the Flow Limit mechanism has to be used.

Other kind of flows

For other kind of flows there are two cases to consider:

· The Process starter activity doesn’t implement any flow control mechanism, in that case it is recommended to use the BusinessWorks Flow Limit mechanism

For example, for file based flows (triggered by a File Poller activity) or Mail based flows (triggered by the Receive Mail activity) the best solution is to use the Flow Limit mechanism.

· The Process starter activity has some kind of flow control mechanism, in that case it is recommended to use the available mechanism

Additional elements

Note also that I recommend to not use the ‘Max Jobs’ mechanism while it has a strong impact on performance. In my opinion it should be used only when no other options are working.

--

--

Emmanuel Marchiset

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