2008-11-05 4 views
3

Je suis en train d'étudier l'intégration de jBPM avec mon projet actuel, jusqu'ici tout va bien, y compris le jpdl jar dans mon oreille et en utilisant le module de modules 0.8 jbpm, mais je dois avoir un moyen raisonnable de partir à la définition de processus dans le concepteur pour le déploiement en production. Le chemin doit pouvoir être répété dans un certain nombre d'environnements (dev, many test, staging, puis prod) et, dans l'idéal, il doit être fait pendant que le système lui-même ne fonctionne pas.Comment générer des scripts sql pour le déploiement de la définition de processus dans jBPM?

Idéalement, je package la définition entière en tant que script SQL, mais je n'ai vu aucun outil pour traduire depuis processdefinition.xml en sql et l'assembler manuellement semble trop fastidieux et sujet aux erreurs.

Est-ce que quelqu'un d'autre là-bas a eu des expériences ici?

Le système est en cours d'exécution sur websphere 6.1 et il est ma préférence pour éviter l'exécution de code Java au moment de la migration (en cours d'exécution du code Java pour générer des artefacts qui peuvent ensuite être utilisés pendant la migration est ok bien)

Répondre

0

Pourquoi ne pas utiliser la fourmi extensions de tâche fournies par JBPM spécifiquement DeployProcessTask. Vous pouvez déployer dans différents environnements avec un seul fichier .par et les jbpm-cfg.xml correspondants pour les différents environnements dev/test/staging/prod. Le seul changement que vous pourriez avoir à faire est de configurer votre configuration hibernate pour se connecter directement à la base de données au lieu d'utiliser la source de données.

1

Si vous voulez éviter de parcourir la route .par, il est facile d'écrire du code Java simple pour déployer une nouvelle version de définition de processus dans votre base de données. Quelque chose comme

JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance("jbpm.cfg.xml")); 
ProcessDefinition processDefinition = ProcessDefinition.parseXmlInputStream(newPdStream); 
JbpmContext context = jbpmConfiguration.createJbpmContext(); 
context.getGraphSession().deployProcessDefinition(processDefinition); 

Vous aurez besoin d'avoir le hibernate.properties ou hibernate.cfg.xml pour la base de données pertinentes sur le chemin de classe.

Ce qui est génial, c'est que toutes les tâches de gestion de versions sont faites automatiquement pour vous. Nous avions l'habitude d'utiliser un hack où nous avons modifié la définition du processus (ignorant fondamentalement le versioning), mais c'était un énorme désordre pour les instances de processus qui étaient actives à ce moment-là.

1

suggestion Solution: Déployez et intercepter les requêtes SQL

Je ne l'ai pas essayé, mais je vous suggère d'essayer d'utiliser le déploiement du servlet deploy jBPM-console ou

context.getGraphSession().deployProcessDefinition(processDefinition); 

comme suggéré par Shyamsundar

ET

journal les mises à jour sql avec LogDriver: http://rkbloom.net/logdriver/logdriver.tar.gz

Questions connexes