API Performance Improvements Using User Sessions

Last published at: June 21st, 2023

API's are the primary way to access most applications. And as applications become increasingly feature-and-function-rich, their API can become more complex and impact performance.  Workflow applications evolved in this exact way:  when they were rudimentary then their APIs were small and there were few issues - but as features and functionality were added, API performance degraded noticeably. 

In order to counter typical complexity and performance degradation,  FlowWright introduced user sessions.  User sessions are handled at API and user interface level.  

Potential problem?  With some API constructors, it takes a database connection string and an external user name to execute, meaning that every constructor would have to look up a workflow user id for the external user.  You can add caching to speed up these processes, but some deadlock scenarios and other issues, such as duplicate users, will often still manifest. 

What's the solution? FlowWright minimizes the number of calls made to the database through the original constructor by  introducing new user and server session objects.  Using the normal constructor, once an API object is created, you can ask for the user session object and use it to create other API objects.  Here's an example of that:

FWProcessDesign oDesign = new FWProcessDesign("db connection string", "external user name");
FWUserSession oUserSession = oDesign.GetUserSession();

FWProcessRuntime oRuntime = new FWProcessRuntime(oUserSession);

It follows that once the user session is established, all other constructors will use this new user session object to construct.  

User interfaces are smart enough to use these user sessions: once a user successfully logs into FlowWright, the web server session stores a FlowWright user session object, and this user session object is used for constructing FlowWright API objects while the user is logged in and using the FlowWright user interface.  Once the user logs off, the web server session is abandoned and the user session is destroyed at that point for application security reasons.

Use of the API approach, along with other innovative uses of the Microsoft technology stack, contribute to FlowWright being the fastest and most robust BPM/Workflow application available today.