To avoid the PermissionDeniedException you can use the follwing procedure: http://answers.axonivy.com/questions/744/how-can-i-disable-xpert-ivy-security-permission-checkshttp://answers.axonivy.com/questions/744/how-can-i-disable-xpert-ivy-security-permission-checks
I'd use the new task query API to get these results. It's a fluent API which allows SQL like task filtering:
TaskQuery query = TaskQuery.create();
query.where()
.activatorName().isNotNull().and()
.activatorName().isNotEqual("#"+ISecurityConstants.SYSTEM_USER_NAME)
.orderBy().startTimestamp().ascending();
java.util.List<ITask> tasks = Ivy.wf().getTaskQueryExecutor().getResults(query);