Unfortunately, as mentioned here (http://www.k2underground.com/forums/thread/31503.aspx) there is a currently aknown issue where using the WorklistCriteria object within the WorkflowManagement API will return an empty list.
Just to give an update, it is possible to workaround this issue by using WorklistCriteriaFilter instead of WorklistCriteria
I'm not sure ATM if it's possible to cover the same possibilities via this overload
I try to work with the (undocumented) WorklistCriteriaFilter API.
As far as I can understand, in order to build a request, you have to add "regular filters" for "regular" fields using WorklistCriteriaFilter.AddRegularFilter to get the same result as WorklistCriteria.AddFilterField for filters on columns
The tricky part is the WCLogical that is replaced by a RegularFilter.FilterCondition that doesn't have the same values, so you have to build your request differently (the coordination between logical elements is written differently). (BTW, I've never seen such an awkward way to build logical BLOCKED EXPRESSION
Eg. Writing (A OR AND C
using WorklistCriteria :
crit.AddFilterField(sc.WCLogical.StartBracket, sc.WCField.None, sc.WCCompare.Equal, null); // (
crit.AddFilterField(sc.WCField.ActivityName, sc.WCCompare.Equal, "123"); // A
crit.AddFilterField(sc.WCLogical.Or, sc.WCField.ActivityName, sc.WCCompare.Like, "345"); // OR B
crit.AddFilterField(sc.WCLogical.EndBracket, sc.WCField.None, sc.WCCompare.Like, null); // )
crit.AddFilterField(sc.WCLogical.And, sc.WCField.None, sc.WCCompare.Equal, null); // AND
crit.AddFilterField(sc.WCField.ActivityName, sc.WCCompare.Like, "45"); // C
using WorklistCriteriaFilter :
cf.AddRegularFilter(sc.WCField.ActivityName, sc.WCCompare.Equal, "123", RegularFilter.FilterCondition.AND_OPEN); // (A
cf.AddRegularFilter(sc.WCField.ActivityName, sc.WCCompare.Like, "345", RegularFilter.FilterCondition.OR_CLOSE); // OR B)
cf.AddRegularFilter(sc.WCField.ActivityName, sc.WCCompare.Like, "45", RegularFilter.FilterCondition.AND); // AND C
On line 1, we could use either AND_OPEN or OR_OPEN, since the logical operator is ignored for the first item (but _OPEN is used to open the bracket).
The trouble is that you can't write the following request with WorklistCriteriaFilter :
((A OR AND C) OR D
because of the "((" begining sequence. You can do it with WorklistCriteria because it allows to put two brackets in a row using empty filters, but you can't with WorklistCriteriaFilter.
Is there a way to write a filter ((A OR AND C) OR D using WorklistCriteriaFilter?