Scope for AgilePoint API Performance

The scope of AgilePoint API performance is to determine the following:
  1. Average time taken to execute AgilePoint APIs in a case where 25 concurrent users are making simultaneous API calls to a server with a load of 500 process instance running. APIs, which are frequently used from the Work Center and form rendering module, are considered for API performance testing.
  2. Average time taken to execute a few of APIs in case of 1, 10, 25, 50 and 100 concurrent users.
  3. API performance as the volume of the process instances in the database grows from 50,000 to 50,000,000.

Impact analysis on AgilePoint API

In this analysis, API performance is observed on how it varies along with number of process instances in database grows from 50,000 to 5,000,000.

The analysis is based on the set of APIs, which are frequently called from the AgilePoint NX Portal like Work Center, Manage Center, and for form rendering. API calls are simulated to mock the real case scenario where the server receives a number of requests concurrently and experiences load. Average time taken by an API is been calculated by considering time for successful request, time for AgilePoint Server to prepare the response, and time for receiving a complete response.

Next, API performance is analyzed based comparisons between the number of users making concurrent API calls, starting from 1 User and further sampling at 10, 25, 50 and 100 users with 500 running process instances.

In summary,

Test Method

To do the multiple concurrent API performance testing, JMeter performance analysis testing tool is been used to capture the average time taken for making API calls.

The Apache JMeter application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance.

Test Criteria

The results are based on the JMeter reports, which provides average time taken by each API call based on number of concurrent users and variation in the API performance as the process instances grows.

Test Result

Figure: Average API time taken for 25 users

Average API time taken for 25 users
API NameAPI DescriptionAverage in Seconds

GetRegisterUser

Retrieve AgilePoint registered user details

0.017

GetActivityInstsByPIID

Get complete activity instance details based on process instance ID

0.017

GetCustomAttr

Retrieve workflow data for a single process instance

0.026

GetCustomAttrsByNames

Retrieve process variable for multiple process instances

0.022

GetEventsByProcInstID

Get all the events associated with a process instance

0.028

GetProcInst

Get process instance details based on the process instance ID

0.024

GetWorkListByUserID

Query to get all the manual work items/tasks for a specified user

0.016

GetProcDefs

Get all process models

0.02

SetCustomAttrs

Update workflow data for single process instance

0.021

FetchProcDefUsingEncodedData

Retrieve process model data based on filter criteria

0.089

FetchProcInstsUsingEncodedData

Retrieve process instance data based on filter criteria

0.054

FetchRegisterUsersUsingEncodedData

Retrieve AgilePoint registered user details based on filter criteria

0.034

GetAllEnabledApplications

Retrieve all application metadata details

0.833

GetFormData

Get the required data for rendering the eForms

0.41

GetFormDetails

Get eForms related files details for the current form rendered

0.33

QueryActivityInstsSQL

Retrieve activity instance data based on filter criteria

0.092

QueryProcDefUsingSQL

Retrieve process model data based on SQL query

0.088

Growth in Average API time taken as the number of concurrent users increases.

Figure: FetchProcInstsUsingEncodedData: Retrieve process instance data based on filter criteria

FetchProcInstsUsingEncodedData Retrieve process instance data based on filter criteria
User countAverage time (seconds)

1

0.007

10

0.007

25

0.043

50

0.092

100

0.172

Figure: GetFormDetails API: Get eForms related files details for the current form rendered

GetFormDetails API Get eForms related files details for the current form rendered
User countAverage time (seconds)

1

0.11

10

0.156

25

0.246

50

0.376

100

0.443

Figure: GetFormData: Get the required data for rendering the eForms

GetFormData Get the required data for rendering the eForms
User countAverage time (seconds)

1

0.041

10

0.055

25

0.186

50

0.324

100

0.52

Figure: GetCustomAttr: Retrieve workflow data of single process instance

GetCustomAttr Retrieve workflow data of single process instance
User countAverage time (seconds)

1

0.012

10

0.045

25

0.07

50

0.15

100

0.267

Figure: GetWorkListByUserID: Query to get all the manual work items/tasks for a specified user

GetWorkListByUserID Query to get all the manual work items or tasks for a specified user
User countAverage time (seconds)

1

0.02

10

0.05

25

0.09

50

0.125

100

0.267

Figure: Growth in Average API time as the number of process instance increases

Growth in Average API time as the number of process instance increases
Total Number of process in Database50,000100,000200,000500,0001,000,0002,000,0005,000,000

Fetch 100 process by start-date and process model

0.0453

0.0500

0.0938

0.1188

0.2338

0.6483

0.9525

Fetch 100 system activities by status and activity name

0.1484

0.2481

0.3579

0.7055

1.3952

2.0049

2.2185

Fetch 100 system tasks by status

0.0610

0.0688

0.1000

0.1922

0.3642

0.7569

1.1732

Fetch 100 human tasks by status and user name

0.0594

0.0933

0.1516

0.5031

0.9016

1.1294

1.6396

Contributing Factors

The results mentioned here are under simulated conditions as described throughout this document. Performance may vary based of the following factors:
  • Hardware specifications for the systems where the test is conducted.
  • Network bandwidth.
  • Usage pattern — i.e., is the load distributed through the day, and does it occur in a random way, or is it a frequent burst of high activity.
  • If more users are accessing system, it is required to add more servers into Network Load balancing.
  • It is required to increase the AgilePoint Server thread count as the load increases for better performance.