I'm trying to use the Management API to find a worklist item. Our existing code based on a K2 sample works but is slow when there are a lot of processes. I'm trying to find a worklistitem by serial number (i.e. 879_47). The more efficient filter approach never brings back my result.
Any ideas on what's wrong?
// this works but is inefficient because it brings back everything and loops:
SourceCode.Workflow.Management.WorklistItems wl = cnnWMS.GetWorklistItems("", "", "", "", "", "", "");
foreach (SourceCode.Workflow.Management.WorklistItem wi in wl)
{
if (wi.ProcInstID + "_" + wi.ActInstDestID == serialNumber)
{
managedWorklistItem = wi;
break;
}
}
// This doesn't work, always returning null even though I know the work item exists. This would be more efficient. What's wrong???
WorklistCriteria criteria = new WorklistCriteria();
criteria.AddFilterField(WCField.SerialNumber, WCCompare.Equal, serialNumber);
SourceCode.Workflow.Management.WorklistItems wl = cnnWMS.GetWorklistItems(criteria);
if (wl != null)
{
foreach (SourceCode.Workflow.Management.WorklistItem wi in wl)
{
if (wi.ProcInstID + "_" + wi.ActInstDestID == serialNumber)
{
managedWorklistItem = wi;
break;
}
}
}