This page goes through the excellent workflow patterns list showing how to implement them using BeanFlow.

Basic Control Patterns

Sequence

Execute activities in sequence. Flash animation

There are a few ways to do this. The simplest is regular Java method calls.

public void useRegularMethodCalls() {
    a();
    b();
    c();
}

Another option is to make each activity be a separate method and then chain them together.
The final step can do nothing (which puts the flow in to a suspend or it can explicitly call stop()

public String a() {
	return "b";
}

public String b() {
	return "c";
}

public void c() {
}

Parallel Split

Execute activities in parallel. Flash animation

Firstly we can fork using explicit activity beans

public void myStep() {
	fork(new ActivityA(), new ActivityB(), new ActivityC());
}

In this case each activity class can be any kind of activity; from a simple activity to a full workflow process.

If you are inside a workflow you may wish to fork the evaluation of separate steps in parallel using the method names in the current workflow.

e.g.

public void myStep() {
	fork("a", "b", "c");
}

public void a() {
	// do something...
}     

public void b() {
	// do something...
}     

public void c() {
	// do something...
}

Synchronization

Synchronize two parallel threads of execution.

Exclusive Choice

Choose one execution path from many alternatives

Simple Merge

Merge two alternative execution paths