← Back to list

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…

P8 Hub🍁 · 2025-01-20 03:11 · 0 claps · 2.9 min read
#ibm #baw #filenet #javascript #twsearch
Open on Medium ↗
Wiki topics: 🌐 · Web Development

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:

  1. Define Columns: Specify the data fields you want to retrieve.
  2. Set Filters: Apply filters to narrow down results based on specific column values.
  3. Specify Sort Order: Determine the order in which the results should be sorted.
  4. Organize Results: Decide how to group or structure the retrieved data.
  5. 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

P8Hub Process

Configuring Variables

  1. Open the process that contains the variables you want to configure.
  2. Navigate to the Variables tab.
  3. 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.
  4. If the variable is complex, ensure you check the box for each parameter you want to make available.
  5. In the Alias text box, enter a name for the variable. This alias will be used when performing searches.

Exposed variables

Exposed variables

Request form

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

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

Search P8Hub Requests Service

When testing the service using the debugger, this was the result:

Data retrieved after Debugging

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