Per sub project, there are a number of recurring classes and packages. To make the subprojects form a nice, uniform whole, I would like to spend some cycles on harmonizing this.
xxxx = {org.jbpm.pvm, org.jbpm.identity and org.jbpm.task}
Package xxxx : Contains the interface classes of the domain model and the XxxxService session facade service interface.
Package xxxx.impl : Contains the implementations classes for the domain model and the XxxxServiceImpl session facade. The session facade is implemented by delegating to commands executed by a command service.
Package xxxx.cmd : Contains the command implementations
Package xxxx.db : Contains the XxxxDbSession class that extends
DbSession with query methods.
Package xxxx.xml : Bindings and descriptors for the configuration of the db session and the service.
Can you review this proposal ? Identity and task are already like this. pvm might require a bit of moving and renaming to bring it completely in sync.
Double check the XxxxDbSession. I think it would be best to work with classes directly and not introduce a separate interface for it. Afaict, the pluggability would only be used in testing and not in production. In production, people will always use the hibernate/db implementations. So building an in-memory version for testing could be easily done by inheriting from XxxxDbSession and overriding the methods.
WDYT ?