package com.jboss.dvd.seam;
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.annotations.Synchronized;
import org.jboss.seam.bpm.Jbpm;
import org.jbpm.JbpmContext;
/**
* Switches JBPM process definitions dynamically
*/
@Name("processDefinitionSwitcher")
@Scope(ScopeType.APPLICATION)
@Synchronized
public class ProcessDefinitionSwitcher
{
static final String[] ORDER_DEFS = {
"ordermanagement1.jpdl.xml",
"ordermanagement2.jpdl.xml",
"ordermanagement3.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;
}
}