Developing a plug-in using the StaffQueryResultPostProcessorPlugin interface
The StaffQueryResultPostProcessorPlugin interface allows you to modify the people query results. This interface
does not offer the performance optimizations that are available in
the StaffQueryResultPostProcessorPlugin2 interface.
You must implement all four methods that are defined in the interface.
Each method receives context information about a different type of
invocation.
- Task instance
- For task instances, you must implement the following method for
the following task roles: Administrator, Reader, Potential Starter,
Potential Owner, and Editor.
public StaffQueryResult processStaffQueryResult(StaffQueryResult originalStaffQueryResult, Task task, int role, Map context); - Escalation instance (for a task instance)
- For escalations of task instances, you must implement the following
method for the escalation role Escalation Receiver.
public StaffQueryResult processStaffQueryResult(StaffQueryResult originalStaffQueryResult, Escalation escalation, Task task, int role, Map context); - Task template
- For task templates, you must implement the following method for
the task template roles Potential Instance Creator, Administrator,
and Reader.
public StaffQueryResult processStaffQueryResult(StaffQueryResult originalStaffQueryResult, TaskTemplate template, int role, Map context); - Application component
- For any application components that have no modeled Potential
Instance Creator specification, you must implement the following method.
public StaffQueryResult processStaffQueryResult(StaffQueryResult originalStaffQueryResult, ApplicationComponent applicationComponent, int role, Map context);
Note: If you want to call the HumanTaskManagerService
interface from this class, do not call a method that updates the task
that produced the event. This action might result in inconsistent
task data in the database.
Parameters
The originalStaffQueryResult parameter is of type StaffQueryResult. It contains information about the user entries that are retrieved during people resolution, for example, by accessing the virtual member manager people directory.The context parameter is of type
Map. The following code snippets show how to access specific
information in the context.- People assignment criteria definition
- To access this information proceed as follows:
Where paramName is the name of a parameter that you want the value of.Map pacAsMap = (Map) context.get("HTM_VERB"); // to retrieve the name of the people assignment criteria (PAC) String pacName = (String) pacAsMap.get("HTM_VERB_NAME"); // to retrieve the PAC parameter names Set paramNames = pacAsMap.keySet(); // to retrieve the value of a specific parameter String paramValue = (String) pacAsMap.get(paramName);
- Replacement variables specified as people assignment criteria parameter values
- To access this information proceed as follows:
Where replVarName is the name of a replacement variable that you want the value of.Object replVarObj = context.get(replVarName); if (replVarObj instanceof String) String replVarValue = (String) replVarObj; if (replVarObj instanceof String[]) String[] replVarValues = (String[]) replVarObj;
- List of users that have been explicitly excluded by people resolution
- To access this information proceed as follows:
String[] removedUserIDs = (String[]) context.get("HTM_REMOVED_USERS");
Example: StaffQueryResultPostProcessorPlugin implementation
The following example illustrates shows how you might change the
Editor role of a task called
SpecialTask.import java.util.Collection;
import java.util.Locale;
import java.util.Map;
import com.ibm.task.api.ApplicationComponent;
import com.ibm.task.api.Escalation;
import com.ibm.task.api.EscalationTemplate;
import com.ibm.task.api.Task;
import com.ibm.task.api.TaskTemplate;
import com.ibm.task.spi.StaffQueryResult;
import com.ibm.task.spi.StaffQueryResultFactory;
import com.ibm.task.spi.StaffQueryResultPostProcessorPlugin;
import com.ibm.task.spi.UserData;
public class MyStaffResultProcessor implements StaffQueryResultPostProcessorPlugin
{
public StaffQueryResult processStaffQueryResult(StaffQueryResult originalStaffQueryResult,
ApplicationComponent applicationComponent,
int role,
Map context)
{ return(originalStaffQueryResult); }
public StaffQueryResult processStaffQueryResult(StaffQueryResult originalStaffQueryResult,
Escalation escalation,
Task task,
int role,
Map context)
{ return(originalStaffQueryResult); }
public StaffQueryResult processStaffQueryResult(StaffQueryResult originalStaffQueryResult,
EscalationTemplate template,
int role,
Map context)
{ return(originalStaffQueryResult); }
public StaffQueryResult processStaffQueryResult(StaffQueryResult originalStaffQueryResult,
Task task,
int role,
Map context)
{
StaffQueryResult newStaffQueryResult = originalStaffQueryResult;
StaffQueryResultFactory staffResultFactory = StaffQueryResultFactory.newInstance();
if (role == com.ibm.task.api.WorkItem.REASON_EDITOR &&
task.getName() != null &&
task.getName().equals("SpecialTask"))
{
Map userDataMap;
UserData userDataObj;
// get the user data map from passed staff query result and clear
// the map. Then add a new Editor (new UserData instance)
userDataMap = newStaffQueryResult.getUserDataMap();
userDataMap.clear();
userDataObj = staffResultFactory.newUserData("MyEditor",
new Locale("en-US"),
"MyEditor@company.com");
userDataMap.put(userDataObj.getUserName(), userDataObj);
}
return(newStaffQueryResult);
}
public StaffQueryResult processStaffQueryResult(StaffQueryResult originalStaffQueryResult,
TaskTemplate template,
int role,
Map context)
{ return(originalStaffQueryResult); }
} // end of class MyStaffResultProcessorFor more information about this interface, see the Javadoc.
This topic only applies to BAW, and is located in the BAW repository. Last updated on 2025-03-13 12:15