"Shouldn't" is in the eye of the beholder, especially whenever transactions are concerned.
JBPM won't commit until it is blocked in the process, i.e, everything's waiting for something asynchronous to happen. So it's working as expected.
I figure there must be some common idioms used for "commit the current transaction and start another one HERE", but I haven't seen anything useful yet on the forum or elsewhere.
As a general transaction-breaker tool, you could make an asynchronous node actionhandler that kicks off another thread to signal it back immediately. That would do the trick. Synchronization might be a little tricky.
If your specific case (wait 20 seconds) is a real need, you could use a Timer node or a parameterized actionhandler as I described above. If I remember right, Timer nodes aren't good at doing pure real-time like this.
Please write back if you discover anything else that's useful.