protected void registerActionDefinitions() { actionDefinitions.clear(); for (ProcessDefinition processDef : processDefinitions) { String type = processDef.getResourceType(); String processName = processDef.getName(); if (processName.startsWith(type.toLowerCase())) { processName = processName.substring(type.length() + 1, processName.length()); } Map<String, ActionDefinition> actionDefs = actionDefinitions.get(type); if (actionDefs == null) { actionDefs = new HashMap<String, ActionDefinition>(); actionDefinitions.put(type, actionDefs); } ActionDefinition def = actionDefs.get(processName); if (def == null) { def = new ActionDefinition(); actionDefs.put(processName, def); } for (StateTransition transition : processDef.getStateTransitions()) { if (transition.getType() != StateTransition.Style.DONE) { def.getValidStates().add(transition.getFromState()); } } } }
protected void registerStates() { transitioningStates.clear(); for (ProcessDefinition def : processDefinitions) { Set<String> validStates = this.validStates.get(def.getResourceType()); Set<String> states = transitioningStates.get(def.getResourceType()); for (StateTransition transition : def.getStateTransitions()) { if (states == null) { states = new HashSet<String>(); transitioningStates.put(def.getResourceType(), states); } if (validStates == null) { validStates = new TreeSet<String>(); this.validStates.put(def.getResourceType(), validStates); } switch (transition.getType()) { case DONE: states.add(transition.getFromState()); break; case TRANSITIONING: states.add(transition.getToState()); break; default: } if (ObjectMetaDataManager.STATE_FIELD.equals(transition.getField())) { validStates.add(transition.getToState()); validStates.add(transition.getFromState()); } } } }
protected void addTransitions(ProcessDefinition def, Set<String> nodes, StringBuilder buffer) { String doneName = getName(def); String name = def.getName(); String link = getLink(def); List<StateTransition> transitions = def.getStateTransitions(); for (StateTransition transition : transitions) { String from = getTransitionName(transition, transition.getFromState()); String to = getTransitionName(transition, transition.getToState()); buffer.append(" \"").append(from).append("\" -> \"").append(to).append("\""); if (transition.getType() == Style.TRANSITIONING) { buffer.append(" [style=\"dotted\" label=\"" + name + "\" URL=\"" + link + "\"]"); } if (transition.getType() == Style.DONE) { buffer.append(" [color=\"orange\" label=\"" + doneName + "\" URL=\"" + link + "\"]"); } buffer.append(";\n"); if (transition.getType() == Style.TRANSITIONING && !nodes.contains(to)) { buffer.append(" \"").append(to).append("\" [color=\"orange\"];\n"); nodes.add(to); } } }
@Override public void start() { String type = schemaFactory.getSchemaName(Agent.class); if (type == null) { return; } for (ProcessDefinition def : processDefinitions) { if (!type.equals(def.getResourceType())) { continue; } for (StateTransition transition : def.getStateTransitions()) { if (transition.getType() == StateTransition.Style.DONE) { transitioningToDone.put(transition.getFromState(), transition.getToState()); } } } }