you could try a hibernate synchronization. just before the transaction commits, flush and then use deleteProcessInstance
but it is a valid feature request. i'll think about how we can make this easier in later versions.
I think an end-state that would clean up the processInstance would be useful to systems that don't need to keep a history, like ours.
I have figured out some of the answers to my questions (I think). I created a Node with an Action that ends the token, exactly as EndState does. It also calls deleteProcessInstance which is what I wanted. I'm not seeing any bad side affects yet so this solution may work for us.
The only issue I have right now is that not all the entries in the JPBM_BYTEARRAY and JBPM_BYTEBLOCK table are being removed. I believe this may have something to do with the Map being saved multiple times during the process flow, and that somehow ByteArray values are not correctly removed from the database if they are updated. I'm going to keep investigating this issue, as these two tables are causing most of our problems.