package org.jboss.mobicents.seam.actions; import java.util.ArrayList; import java.util.List; import javax.faces.model.SelectItem; import org.jboss.seam.ScopeType; import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; import org.jboss.seam.bpm.Jbpm; import org.jbpm.JbpmContext; /** * Switches JBPM process definitions dynamically */ @Name("processDefinitionSwitcher") @Scope(ScopeType.APPLICATION) public class ProcessDefinitionSwitcher { static final String[] ORDER_DEFS = { "ordermanagement3.jpdl.xml", "ordermanagement2.jpdl.xml", "ordermanagement1.jpdl.xml" }; @In(value = "org.jboss.seam.bpm.jbpm") private Jbpm jbpm; @In private JbpmContext jbpmContext; public List<SelectItem> getProcessDefinitions() { List<SelectItem> result = new ArrayList<SelectItem>(); for (String def : ORDER_DEFS) { result.add(new SelectItem(def, def.substring(0, def.length() - 9))); } return result; } private String currentProcessDefinition; public String getCurrentProcessDefinition() { return currentProcessDefinition; } public void setCurrentProcessDefinition(String def) { currentProcessDefinition = def; } public String switchProcess() { jbpmContext.deployProcessDefinition(jbpm .getProcessDefinitionFromResource(currentProcessDefinition)); return null; } }