public void execute(ActivityExecution execution) throws Exception {
    List<PvmActivity> startActivities = new ArrayList<PvmActivity>();
    for (PvmActivity activity : execution.getActivity().getActivities()) {
      if (activity.getIncomingTransitions().isEmpty()) {
        startActivities.add(activity);
      }
    }

    for (PvmActivity startActivity : startActivities) {
      execution.executeActivity(startActivity);
    }
  }
 @SuppressWarnings("unchecked")
 public void timerFires(ActivityExecution execution, String signalName, Object signalData)
     throws Exception {
   PvmActivity timerActivity = execution.getActivity();
   boolean isInterrupting = (Boolean) timerActivity.getProperty("isInterrupting");
   List<ActivityExecution> recyclableExecutions = null;
   if (isInterrupting) {
     recyclableExecutions = removeAllExecutions(execution);
   } else {
     recyclableExecutions = Collections.EMPTY_LIST;
   }
   execution.takeAll(timerActivity.getOutgoingTransitions(), recyclableExecutions);
 }