Ed, with the disclaimer that I've never written a jBPM application, doesn't it
really depends who is driving the process. If user code is managing both the transaction
and signaling the process, then you can handle this quite easily:
| userTransaction.begin();
| boolean rollback = false;
| try {
| process.signal();
| if (userTransaction.getStatus() == ROLLBACK CONDITION) {
| rollback =true; ut.rollback();
| else ut.commit();
| } catch (Exception ex) { rollback = true; userTransaction.rollback()}
|
| if (rollback) {
| ut.begin(); process.signal("failure");
| }
|
If the process is being driven by an asynchronous continuation or a user MDB, then you can
use the DLQ or Transaction Synchronization ideas stated. I'm writing a blog about
this very case. I'll link when I'm done.
As far as DLQ goes. Most(all?) major JMS providers have DLQ support. As for Transaction
Synchronizations? You'd need access to TM yes. But there are well documented ways of
obtaining the TM on each major application server. You just have to look. If you're
in EE5, there is a TransactionSynchroniationRegistry that all vendors must provide.
Answer your questions?
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4070594#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...