This chapter demonstrates how to filter activity instances for every role (grant) the user is assigned to.
To provide a solution, you can use the following code snippets:
UserQuery userQuery = new UserQuery();
userQuery.getFilter().add(UserQuery.ACCOUNT.isEqual("<username>"));
Users users = queryService.getAllUsers(userQuery); User user = (User) users.get(0);
List grants = user.getAllGrants();
ActivityInstanceQuery activityQuery = new ActivityInstanceQuery();
FilterOrTerm orFilter = activityQuery.getFilter().addOrTerm();
for (int x = 0; x < grants.size(); x++) {
String grant = ((Grant) grants.get(x)).getId();
PerformingParticipantFilter performerFilter = PerformingParticipantFilter.forModelParticipant(grant);
orFilter.or(performerFilter);
}ActivityInstances activeInstances = queryService.getAllActivityInstances(activityQuery);
for (int y = 0; y < activeInstances.getSize(); y++) {
ActivityInstance activity = (ActivityInstance) activeInstances.get(y);
System.out.println(y +") Activity OID: "+ activity.getOID() +" / Performer: "+ activity.getPerformedByName());
}Another option is to use the following code:
ServiceFactory serviceFactory = ServiceFactoryLocator.get("motu", "motu");
QueryService queryService = serviceFactory.getQueryService();ActivityInstanceQuery activityQuery = new ActivityInstanceQuery();
FilterOrTerm orFilter = activityQuery.getFilter().addOrTerm(); orFilter.add(PerformingParticipantFilter.ANY_FOR_USER); orFilter.add(PerformingUserFilter.CURRENT_USER);
ActivityInstances activeInstances = queryService.getAllActivityInstances(activityQuery);
for (int y = 0; y < activeInstances.getSize(); y++) {
ActivityInstance activity = (ActivityInstance) activeInstances.get(y);
System.out.println(y +") Activity OID: "+ activity.getOID() +" / Performer: "+ activity.getPerformedByName());
}