Thank for your reply!
->2. Right, so did I. This was not a real issue, just an inconvenience.
->4. Found a way to handle this, most of the "*DataManager*" now fetch the owning JPA Entity and iterate the collections instead of performing a DB query. I re-implemented all relations as JPA collections with ManyToOne and OneToMany. This of course requires all "back link collections" to be filled (5.) to be useable within the same transaction. This is works really fast - most of the JPA first and second level caching mechanism can be used. Indeed we can only support the required minimum for the query operations, but this is ok.
I continued my JPA+Activiti jurney and I it worked quiet well so far. You did an amazing job with the activiti project. If it helps, I continue to give some feedback. I have found some minor points (which I was able to work around using your powerful interfaces). I needed to:
6. subclass org.activiti.engine.impl.variable.SerializableType to remove two calls to Context.getCommandContext().getDbSqlSession() (this does not exist in JPA)
7. subclass org.activiti.engine.impl.persistence.entity.HistoricDetailEntityManagerImpl to remove/replace the setting of the ByteArray handling (maybe already fixed)
8. subclass org.activiti.engine.impl.el.VariableScopeElResolver setValue to set context.setPropertyResolved(true) to prevent resolving the property while in the same transaction (where the property may not be flushed to the JPA db yet)