at work, our development team has created a very simple home-brew statemachine implementation to do a mixture of workflow management and simple business process management, all in plain java. This was a few years ago and met the requirements back then.
As the business process got more complicated, we are now looking into existing solutions supporting more concepts than our simplistic state machine does.
I skimmed the PVM documentation and found java classes resembling activities, nodes, transitions and the like. This looks promising, yet I'm not sure about the intended usage of PVM.
Is PVM intended to be used by developers to create process descriptions by coding in java, without using any of the XMLish or graphical "concrete syntaxes" of process modelling? If "intended to be used" is too much, would this at least be a sane, supported use case of PVM? Or is PVM altogether "under the hood" of jBPM and should not be used directly? How stable is the PVM API expected to be?
The PVM is meant to be the foundation on top of which multiple process languages can be implemented. Read the Process Virtual Machine article for the full discussion. The target languages actually include Java although this is not documented as extensively.
The class org.jbpm.pvm.internal.builder.ProcessDefinitionBuilder from jbpm-pvm.jar provides a fluent interface for creating process definitions straight in Java without parsing any process document. There is a section in the developer guide describiing the builder; however, the class name is outdated.
The interfaces in jbpm-api.jar in fact constitute the API for the PVM, aiming to be as language-neutral as possible. Although not part of the API the process definition builder is relatively stable, it has not been touched in a while.
In sum, direct acess to the PVM is a valid, though advanced, use case.