Search BAW Processes and Tasks with TWSearch Query
You can use a JavaScript TWSearch object to get data from process and task instances. It lets you choose which details to retrieve, set…
Search BAW Processes and Tasks with TWSearch Query
You can use a JavaScript TWSearch object to get data from process and task instances. It lets you choose which details to retrieve, set filters, and organize or sort the results.
Structure of a TWSearch Query
A TWSearch query involves the following steps:
- Define Columns: Specify the data fields you want to retrieve.
- Set Filters: Apply filters to narrow down results based on specific column values.
- Specify Sort Order: Determine the order in which the results should be sorted.
- Organize Results: Decide how to group or structure the retrieved data.
- Run the Query: Execute the search and convert the results into a list of complex variables.
Here, I have created a simple solution to demonstrate how the TWSearch functionality works.

P8Hub Process
Configuring Variables
- Open the process that contains the variables you want to configure.
- Navigate to the Variables tab.
- For each variable you want to search or display in the Process Portal task list check the Visible in Process Portal option in the Details section.
- If the variable is complex, ensure you check the box for each parameter you want to make available.
- In the Alias text box, enter a name for the variable. This alias will be used when performing searches.

Exposed variables

Request form
Next, I created a new service flow named Search P8Hub Requests, which includes a server script to implement TWSearch.
In this example, there are two columns of type BusinessData, using PH_RequestNumber and PH_RequestorName as the search column names. I also created a few private variables to implement specific conditions based on the requirements.

Variables of Search P8Hub Request service flow
TWSearchColumns — colInstanceID, colInstanceName, colRequestNumber, colRequestorName, colProcessInstStatus.
TWSearchConditions — CondInstanceName, condRequestorName, condRequestNumber, condProcessInstStatus.
var search = new TWSearch();
//###############################Instance data columns####################################
var colInstanceID = new TWSearchColumn();
colInstanceID.type = TWSearchColumn.Types.ProcessInstance;
colInstanceID.name = TWSearchColumn.ProcessInstanceColumns.ID;
var colInstanceName = new TWSearchColumn();
colInstanceName.type = TWSearchColumn.Types.ProcessInstance;
colInstanceName.name = TWSearchColumn.ProcessInstanceColumns.Name;
var colRequestNumber = new TWSearchColumn();
colRequestNumber.type = TWSearchColumn.Types.BusinessData;
colRequestNumber.name = "PH_RequestNumber";
var colRequestorName = new TWSearchColumn();
colRequestorName.type = TWSearchColumn.Types.BusinessData;
colRequestorName.name = "PH_RequestorName";
var colProcessInstStatus = new TWSearchColumn();
colProcessInstStatus.type = TWSearchColumn.Types.ProcessInstance;
colProcessInstStatus.name = TWSearchColumn.ProcessInstanceColumns.Status;
//###############################Instance data columns####################################
search.columns = new Array(colInstanceID, colInstanceName, colRequestNumber, colRequestorName, colProcessInstStatus);
//###############################Instance data columns####################################
var condInstanceName = new TWSearchCondition;
condInstanceName.column = colInstanceName;
condInstanceName.operator = TWSearchCondition.Operations.StartsWith;
condInstanceName.value = "P8Hub Process:";
var conditions = new Array(condInstanceName);
if (tw.local.requestorName) {
var condRequestorName = new TWSearchCondition;
condRequestorName.column = colRequestorName;
condRequestorName.operator = TWSearchCondition.Operations.Contains;
condRequestorName.value = tw.local.requestorName.trim();
conditions.push(condRequestorName);
}
if (tw.local.requestNumber) {
var condRequestNumber = new TWSearchCondition;
condRequestNumber.column = colRequestNumber;
condRequestNumber.operator = TWSearchCondition.Operations.Contains;
condRequestNumber.value = tw.local.requestNumber.trim();
conditions.push(condRequestNumber);
}
if (tw.local.status) {
var condProcessInstStatus = new TWSearchCondition;
condProcessInstStatus.column = colProcessInstStatus;
condProcessInstStatus.operator = TWSearchCondition.Operations.Contains;
condProcessInstStatus.value = tw.local.status.trim();
conditions.push(condProcessInstStatus);
}
search.conditions = conditions;
var result = search.execute();
tw.local.p8Requests = [];
var obj = {};
var x = 0;
for (var i = 0; i < result.rows.length; i++) {
if (result.rows[i].values[2] && result.rows[i].values[3]) {
obj.pid = result.rows[i].values[0].toString();
obj.instanceName = result.rows[i].values[1];
obj.requestNumber = result.rows[i].values[2];
obj.requestorName = result.rows[i].values[3];
obj.status = result.rows[i].values[4];
tw.local.p8Requests[x] = obj;
x++;
}
}

Search P8Hub Requests Service
When testing the service using the debugger, this was the result:

Data retrieved after Debugging
As shown here, we can retrieve data from process and task instances using JavaScript TWSearch objects and this data can be used to generate custom reports.
메타데이터
- post_id
- ea3bcd8b4526
- slug
- search-baw-processes-and-tasks-with-twsearch-query-ea3bcd8b4526
- url
- https://medium.com/@gihanshamikeliyanage/search-baw-processes-and-tasks-with-twsearch-query-ea3bcd8b4526
- canonical_url
- https://medium.com/@gihanshamikeliyanage/search-baw-processes-and-tasks-with-twsearch-query-ea3bcd8b4526
- author_url
- https://medium.com/@gihanshamikeliyanage
- status
- ok
- fetched_at
- 2026-06-10 12:26:30