Understanding jBPM based on Struts background
When you try teach anything new for someone, IMHO the easiest way is to do that relating with something you already know. So far Struts is a framework that almost everybody touched at least once. So I will use some of Strtus concepts to explain jBPM process execution.
jBPM is not just a Process Machine, locked in just one way to promote interaction between tasks, in fact jBPM is a process-language engine, which you can use JPDL, Seam Page Flow or even BPEL as an execution language. By default, jBPM uses JPDL, however you may use others.
Understanding a Process
A process shall be a number of tasks described in several flows, which depending of some condition or behavior you may get different ways. So I will show you guys a very simples process, where you can see an expenses-report approval process:
We have just one TASK, so we may think we have just one ACTION, so is really easy to compare a process execution context with a HttpSession execution context, because both may have variables, a sequence of facts and interactions with Systems or Humans. But you may ask: