I finally figured it out. Jorge's answer was almost correct, but I had to manually create an Environment variable for ExecutionImpl.getActivity() to succeed. So the final code was
EnvironmentFactory environmentFactory = (EnvironmentFactory)processEngine;
Execution execution = executionService.findExecutionById(executionID);
if (execution instanceof ExecutionImpl) {
ExecutionImpl executionImpl = (ExecutionImpl)execution;
EnvironmentImpl environment = environmentFactory.openEnvironment();
ActivityImpl activityImpl = null;
try {
activityImpl = executionImpl.getActivity();
} finally {
environment.close();
}
if (activityImpl != null) {
return activityImpl.getOutgoingTransitionsMap().keySet();
}
}
return Collections.<String>emptySet();