Pronto.
O exemplo é o seguinte, suponha o XML:
<?xml version="1.0" encoding="UTF-8"?>
<process-definition
xmlns="urn:jbpm.org:jpdl-3.2"
name="simple">
<start-state name="start">
<transition name="to_state" to="first">
<action name="action" class="com.sample.action.MessageActionHandler">
<message>Going to the first state!</message>
</action>
</transition>
</start-state>
<state name="first">
<transition name="to_end" to="end">
<action name="action" class="com.sample.action.MessageActionHandler">
<message>About to finish!</message>
</action>
</transition>
</state>
<end-state name="end"></end-state>
</process-definition>
Isto é um processo jBPM, definido em notação jPDL, que é um XML. Passado como parâmetro para o método:
public ProcessDefinition getDefinition(String process) {
ProcessDefinition def = ProcessDefinition.parseXmlString(process);
return def;
}
Você terá parseado seu XML para uma definição de processo. A partir dessa definição, você pode gerar instâncias de processos, que serão usadas por cada cliente do mesmo. Para conseguir a instância, você usa um código assim:
ProcessInstance instance = new ProcessInstance(processDefinition);
A partir da instância, você pode ir usando o método signal(); para ir prosseguindo pelos estados do workflow (isso quando o workflow é simples; para workflows envolvendo tarefas, por exemplo, a coisa é um pouco mais complicada). Mas enfim, isso demonstra o fato de que é perfeitamente possível gerar instâncias de workflows dinâmicas com o jBPM.
[]´s