Lo único que hay que hacer es definir una clase heredada de Workflow con enums (java 5) como posibles pasos del workflow e implementar un método por cada enum.
Ejemplo (de los fuentes de BeanFlow):
package org.apache.servicemix.beanflow;En este ejemplo, el contructor define que cuando comienza el workflow se inicializa en el paso A (stepA), y en cada uno de los pasos (métodos que comenzan con "step" igual que el enum "Step"), se devuelve el siguiente paso a ejecutar.
public class SimpleWorkflow extends Workflow{
public static enum Step {
stepA, stepB, stepC, stop
};
public SimpleWorkflow() {
super(Step.stepA);
}
// Workflow steps
// -------------------------------------------------------------------------
public Step stepA() {
return Step.stepB;
}
public Step stepB() {
return Step.stepC;
}
public Step stepC() {
return Step.stop;
}
}
Este sencillo workflow puede ser lanzado luego instanciándolo y ejecutando el método "start":
package org.apache.servicemix.beanflow;Por supuesto no todo termina allí, ya que BeanFlow provee mecanismos para hacer workflows paralelos, joins, detener worflows iniciados o saber el estado de un workflow.
import org.apache.servicemix.beanflow.util.ActivityTestSupport;
public class SimpleWorkflowTest extends ActivityTestSupport {
public void testWorkflow() throws Exception {
SimpleWorkflow workflow = new SimpleWorkflow();
workflow.start();
Thread.sleep(2000);
assertStopped(workflow);
}
}
Y todo en menos de 30 clases.