I was able to do this with a process flow custom code.
treenode activity = param(2);
Token token = param(3);
treenode processFlow = ownerobject(activity);
int num = Group("MyOperators").subnodes.length;
Object obj;
string labelName = "idleOps";
for(int i = 1; i <= num; i++){
obj = ownerobject(Group("MyOperators").subnodes.value);
if(obj.stats.state().valueString == "idle"){
Token newToken = Token.create(NULL, getactivity(processFlow, "Breathe"), 1);
newToken.labels.assert(labelName).value = obj;
}
}
When the code is fired, it looks for all operators in "MyOperators" group that have the state = "idle". For each one, it creates a token with a label "idleOps" that contains the path of the operator. All of these new tokens are sent to the Breathe activity.
I created a model that uses this custom code to pull all operators that are idle to help with the multiprocessor when an item arrives at the multiprocessor.
UseIdleGroup.fsm