@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); }
@SuppressWarnings("unchecked") public void lastExecutionEnded(ActivityExecution execution) { ActivityExecution outgoingExecution = execution.getParent().createExecution(); outgoingExecution.setConcurrent(false); ((InterpretableExecution) outgoingExecution) .setActivity((ActivityImpl) execution.getActivity()); execution.setConcurrent(false); execution.setActive(false); ((InterpretableExecution) execution).setEventScope(true); List<PvmTransition> outgoingTransitions = execution.getActivity().getOutgoingTransitions(); if (outgoingTransitions.isEmpty()) { outgoingExecution.end(); } else { outgoingExecution.takeAll(outgoingTransitions, Collections.EMPTY_LIST); } }