break LABEL;
    public void doAction(long id, int actionId, Map inputs) throws WorkflowException {        WorkflowStore store = getPersistence();        WorkflowEntry entry = store.findEntry(id);        WorkflowDescriptor wf = getWorkflow(entry.getWorkflowName());        List currentSteps = store.findCurrentSteps(id);        ActionDescriptor action = null;        PropertySet ps = store.getPropertySet(id);        Map transientVars = new HashMap();        if (entry.getState() != WorkflowEntry.ACTIVATED) {            return;        }        if (inputs != null) {            transientVars.putAll(inputs);        }        populateTransientMap(entry, transientVars, wf.getRegisters(), new Integer(actionId), currentSteps);        boolean validAction = false;LABEL:         for (Iterator iter = currentSteps.iterator(); iter.hasNext();) {            Step step = (Step) iter.next();            StepDescriptor s = wf.getStep(step.getStepId());            for (Iterator iterator = s.getActions().iterator();                    iterator.hasNext();) {                ActionDescriptor actionDesc = (ActionDescriptor) iterator.next();                if (actionDesc.getId() == actionId) {                    action = wf.getAction(actionId);                    if (isActionAvailable(action, transientVars, ps)) {                        validAction = true;                        break LABEL;                    }                }            }        }        if (!validAction) {            throw new InvalidActionException("Action " + actionId + " is invalid");        }        try {            transitionWorkflow(entry, currentSteps, store, wf, action, transientVars, inputs, ps);            completeEntry(id);        } catch (WorkflowException e) {            context.setRollbackOnly();            throw e;        }    }