2011-02-10 11 views
6

Mi piacerebbe sostituire l'implementazione BPM personalizzata con Activiti o jBPM-5 in un prodotto che utilizza Hibernate (No JPA) con Spring per l'implementazione di livelli persistenti. Sfortunatamente, sia Activiti che jBPM5 richiedono JPA (in base alla loro documentazione) e non è possibile migrare tutte le implementazioni di Hibernate esistenti su JPA nel prodotto.È possibile utilizzare i file .hbm in un'applicazione JPA con Hibernate come provider JPA?

  1. C'è un modo per configurare JPA 2.0 (provider JPA è Hibernate) con la molla 3 senza migrare implementazione Hibernate per JPA (vale a dire conservare i file .hbm)?

Nota: sono consapevole che l'applicazione non è compatibile con JPA e non è possibile utilizzare un altro provider JPA.

  1. Se c'è un modo, si supponga che il gestore transazioni Spring JTA sia configurato con le impostazioni corrette. è possibile eseguire la logica dell'applicazione e la logica del flusso di lavoro BPM in un'unica transazione Spring?
+0

Questo non è esattamente rispondere alla tua domanda, ma di recente ho avuto una situazione simile, e ha finito per utilizzare HibernateTools per convertire i file .hbm.xml * per JPA annotato fagioli. E 'stato abbastanza indolore e mi ha salvato lo sforzo di passare attraverso quello che stai facendo ora. È un'opzione per te? – Fil

+0

Grazie @ Filip Zalewski. Il prodotto è grande in termini di dimensioni. Unico motivo, dovrei passare a JPA è eseguire BPM e l'applicazione nella stessa transazione. Non penso, la migrazione è la scelta giusta. – Sujee

+0

Sembra possibile: http://bill.burkecentral.com/2007/07/06/co-existence-with-hibernate-jpa-and-ejb3/ http://docs.jboss.org/hibernate/entitymanager/ 3.6/reference/it/html/configuration.html –

risposta

1

Per le transazioni vedere Activiti Spring Transaction Documenti. Se non puoi eseguire il porting della tua applicazione per usare JPA, un'altra opzione è quella di sovrapporre una facciata al tuo dominio Hibernate. Activiti ti consente di invocare metodi sui bean gestiti in primavera, in modo da poter creare una facciata o utilizzare un livello di servizio esistente. Dai un'occhiata alle applicazioni di esempio fornite con Activity per vedere come funziona l'integrazione della molla.

0

jBPM con JPA può essere integrato con precedenti applicazioni non JPA utilizzando Spring. Le interazioni con jBPM usano JPA, ma la tua applicazione userebbe l'ibernazione. L'unico inconveniente è che devi gestire 2 transazioni diverse, ma tutti i problemi possono essere per lo più mitigati.

enter image description here

  1. Inizia la transazione Hibernate primo ed eseguire una logica di business che si desidera

  2. Inizia la transazione JBPM chiamando le API jBPM per avviare un processo, o di inviare un evento, etc.

  3. Qualsiasi implementazione di WorkItemHandler deve unirsi alla transazione esterna utilizzando le API di factory di sessione

  4. Hibernate flush() deve essere chiamato alla fine di ogni esecuzione WorkItemHandler al fine di innescare la maggior parte delle eccezioni generate dal codice di attività

  5. Il WorkItemHandler dovrebbe prendere alcuna eccezione generata dal codice di business e rigenerare in modo che il JBPM transazione non riesce anche

Problemi correlati