How Can I Query a List of Work Items Based on Process Template Name?

Objective

To query a list of work items based on process model name.

Summary

API such as QueryWorkList and QueryWorkListEx can be used to query a list of Work Items based on the process template name even though the WF_MANUAL_WORKITEMS table does not have a column for Process Template name (which is kept in a separate table).

Resolution

The following is an example of query a list of work items with a specific process template name.

string where = "";
SQLExprBuilder eb = SQLExprBuilder.GetBuilder( Global.DataBaseVendor );
if
( criteria.processTemplateName != null && criteria.processTemplateName.Length > 0 )
{
// To query the work item list belong to the specified process template name
if ( where.Length > 0 ) where += " and ";
where += eb.GetExpr("WF_PROC_DEFS.DEF_NAME", Constants.EQ, criteria.processTemplateName );
}
wks = api.QueryWorkListEx( where );

OR

public WFManualWorkItem[] GetProcessInstanceWorkItems( 
   string ProcessInstanceID )
        {
           string _searchClause = "";
try
        {
           if ( ProcessInstanceID.Length > 0 )
                    _searchClause += "WF_PROC_DEFS.DEF_NAME = '" + ProcessTemplateName + "'";

WFManualWorkItem[] wks = api.QueryWorkListEx( _searchClause );
                return wks;
           }
            catch ( Exception e )
            {
              throw new Exception( "Error with GetProcessInstanceWorkItems", e );
            }
        }