Hoy instalamos jBPM 3.1.2 como servicio MBean en JBoss 4.0.4.GA sobre MySQL 5.0.22-1 y Fedora Core 5
Probado con las versiones:
– Descargarse el servidor de aplicaciones JBoss AS 4.0.4.GA.
– Tener la base de datos MySQL 5.0.22-1
– Fedora 5 Core
Como ayuda, está http://docs.jboss.org/jbpm/v3/userguide/thejbpmdatabase.html
en la referencia oficial pero es para PosgreSQL aunque los pasos son muy similares en otras BD; está bien para saber que se hace y la respuesta en el foro de maverick http://www.jboss.com/index.html?module=bb&op=viewtopic&t=72947 y en https://sourceforge.net/forum/message.php?msg_id=3301077.
Por defecto, el motor de workflow jBPM funciona contra la BD Hipersonic ya que es la configuración que por defecto acompaña al Hibernate incluido en el proyecto. En caso de desear cambiar la BD se ha de descargar el kit jbpm-starters-kit-3.1.2 (http://www.jboss.com/products/jbpm/downloads); en su interior, al descomprimirlo aparecen los directorios jBPM (proyecto jBPM), jbpm-db (extensión para cambiar a otras BD: Oracle, MySQL, …) jbpm-server (servidor JBoss AS con jBPM instalado como servicio MBean sobre Hipersonic) y jbpm-designer (plugin de Eclipse para trabajar con los workflows de forma visual).
En mi caso, tengo descomprimido el zip en /usr/java/jbpm-starters-kit-3.1.2 y aparecen los directorios: jbpm, jbpm-db, jbpm-designer y jbpm-server.
En /usr/java/jboss-4.0.4.GA está descomprimido el servidor JBoss AS a partir del .zip aunque podíamos haber hecho otras instalaciones similares con la ejecución del instalable jar.
Desde MySQL (mysql -u root) crear la database jbpmtest (create database jbpmtest).
Crear la base de datos jbpmtest:
[root@dhcppc0 jbpm-db]# mysql Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 3 to server version: 5.0.22 Type 'help;' or 'h' for help. Type 'c' to clear the buffer. mysql> create database jbpmtest; Query OK, 1 row affected (0.00 sec) mysql> exit Bye
Generar una copia de ficheros para MySQL:
[root@dhcppc0 jbpm]# cd src/resources/ [root@dhcppc0 resources]# ls gpd jboss-4.0.x jbpm.jar jbpm.war hsqldb jbpm-identity.jar jbpm.sar starters-kit [root@dhcppc0 resources]# cp -Rf hsqldb/ mysql [root@dhcppc0 resources]# cd mysql/ [root@dhcppc0 mysql]# ls -al total 16 drwxr-xr-x 2 root root 4096 oct 11 09:04 . drwxr-xr-x 11 root root 4096 oct 11 09:04 .. -rw-r--r-- 1 root root 440 oct 11 09:04 create.db.hibernate.properties -rw-r--r-- 1 root root 1111 oct 11 09:04 identity.db.xml
Modificar el fichero create.db.hibernate.properties con:
# these properties are used by the build script to create # a hypersonic database in the build/db directory that contains # the jbpm tables and a process deployed in there hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect hibernate.connection.driver_class=com.mysql.jdbc.Driver hibernate.connection.url=jdbc:mysql://localhost:3306/jbpmtest hibernate.connection.username=root hibernate.connection.password= hibernate.show_sql=true #hibernate.query.substitutions=true 1, false 0 #hibernate.c3p0.min_size=1 #hibernate.c3p0.max_size=3
Recuerda tener los drivers JDBC de MySQL; en mi caso, tengo /opt/java/jre/lib/ext/mysql-connector-java-5.0.3-bin.jar aunque tambien se puede meter el jar en el lib/mysql (crearlo) del proyecto jbpm.
En el directorio jbpm, modificar del fichero build.deploy.properties la tarea ant “create.db”:
En target name=”create.db”, borrar db.start, db.stop
Reemplazar todas las apariciones de ‘hsqldb’ por ‘mysql’.
Eliminar la línea final donde aparece ‘db.stop’
Te quedará algo así:
<jbpmschema actions=»create»
cfg=»${basedir}/src/config.files/hibernate.cfg.xml»
properties=»${basedir}/src/resources/mysql/create.db.hibernate.properties»/>
<loadidentities file=»${basedir}/src/resources/mysql/identity.db.xml»
cfg=»${basedir}/src/config.files/hibernate.cfg.xml»
properties=»${basedir}/src/resources/mysql/create.db.hibernate.properties»/>
<deployprocess cfg=»${basedir}/src/config.files/hibernate.cfg.xml»
properties=»${basedir}/src/resources/mysql/create.db.hibernate.properties»>
Ejecutar
[root@dhcppc0 jbpm]# ant create.db -buildfile build.deploy.xml
La base de datos jbpmtest ya tendrá sus tablas, filas, … A ver si es verdad…
[root@dhcppc0 jbpm-db]# mysql -u root Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 5 to server version: 5.0.22 Type 'help;' or 'h' for help. Type 'c' to clear the buffer. mysql> use jbpmtest; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +-------------------------+ | Tables_in_jbpmtest | +-------------------------+ | JBPM_ACTION | | JBPM_BYTEARRAY | | JBPM_BYTEBLOCK | | JBPM_COMMENT | | JBPM_DECISIONCONDITIONS | | JBPM_DELEGATION | | JBPM_EVENT | | JBPM_EXCEPTIONHANDLER | | JBPM_ID_GROUP | | JBPM_ID_MEMBERSHIP | | JBPM_ID_PERMISSIONS | | JBPM_ID_USER | | JBPM_LOG | | JBPM_MESSAGE | | JBPM_MODULEDEFINITION | | JBPM_MODULEINSTANCE | | JBPM_NODE | | JBPM_POOLEDACTOR | | JBPM_PROCESSDEFINITION | | JBPM_PROCESSINSTANCE | | JBPM_RUNTIMEACTION | | JBPM_SWIMLANE | | JBPM_SWIMLANEINSTANCE | | JBPM_TASK | | JBPM_TASKACTORPOOL | | JBPM_TASKCONTROLLER | | JBPM_TASKINSTANCE | | JBPM_TIMER | | JBPM_TOKEN | | JBPM_TOKENVARIABLEMAP | | JBPM_TRANSITION | | JBPM_VARIABLEACCESS | | JBPM_VARIABLEINSTANCE | +-------------------------+ 33 rows in set (0.00 sec) mysql>exit
Configurar el fichero build.properties ajustando las variables de jboss.home, jbpm.home y ant.home.
# jbpm.version only used for creating javadocs and the distribution package jbpm.version=3.1.2 # ant.home is only used in the ant.install.libs target for copying the junit and clover libs ant.home=/opt/java/apache-ant # jbpm.home is only to allow build scripts to open the browser with the html test results jbpm.home=/usr/java/jbpm-starters-kit-3.1.2/jbpm # jboss config proper only used for deployment jboss.home=/usr/java/jboss-4.0.4.GA jboss.version=4.0.x jboss.source.configuration=default # for creating the distribution jbpm.gpd.version=3.0.4
Cambiar el fichero /usr/java/jbpm-starters-kit-3.1.2/jbpm/src/config.files/hibernate.cfg.xml y ajustarlo para MySQL.
<!-- jdbc connection properties --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jbpmtest</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password"></property>
Meter un fichero jbpm-ds.xml (el datasource de MySQL para jBPM) en /usr/java/jboss-4.0.4.GA/server/jbpm/deploy
<?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>JbpmDS</jndi-name> <connection-url>jdbc:mysql://localhost:3306/jbpmtest</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>root</user-name> <password></password> <metadata> <type-mapping>mySQL</type-mapping> </metadata> </local-tx-datasource> </datasources>
Cambiar el fichero /usr/java/jbpm-starters-kit-3.1.2/jbpm/src/resources/jbpm.sar/META-INF/jboss-service.xml
y cambiar DefaultDS por JbpmDS (el datasource que hemos hecho antes)
<server> <mbean code="org.jbpm.db.jmx.JbpmService" name="jboss.jbpm:name=DefaultJbpm,service=JbpmService" description="Default jBPM Service"> <attribute name="JndiName">java:/jbpm/JbpmConfiguration</attribute> <depends>jboss.jca:service=DataSourceBinding,name=JbpmDS</depends> </mbean> </server>
Si no se hace lo siguiente, el subproyecto jboss.war da un error de ehcache al arrancar jboss: Hay que decirle que añada más librerías (Descargar hibernate 3.2 o ehcache 1.2).
Ir a la tarea 'build.webapp' de build.deploy.xml Reemplazar con Insertar
Ejecutar
[root@dhcppc0 jbpm]# ant -buildfile build.deploy.xml
Instalará el proyecto en /usr/java/jboss-4.0.4.GA/server/jbpm
Para arrancar el JBoss AS con este perfil, poner .run.sh -c jbpm
Para acceder al cliente web de jBPM, ir a http://localhost:8080/jbpm pero ya sabes que si quieres acceder el servicio MBean, tendrás que acceder vía JNDI.
En los foros, los ejemplos que dan consisten en modificar los ficheros a posteriori directamente de /usr/java/jboss-4.0.4.GA/server/jbpm y añadir / modificar ficheros pero en el fondo hacen lo mismo.
En el fondo, una vez creadas la BD con sus datos, lo único que cambia son los ficheros $JBOSS_HOME/server/jbpm/deploy/jbpm-ds.xml, $JBOSS_HOME/server/jbpm/deploy/jboss.sar/META-INF/jboss-service.xml y el fichero hibernate.cfg.xml que está dentro de $JBOSS_HOME/server/jbpm/deploy/jbpm.sar.cfg.jar
Para la gente que quiera Eclipse con parte de los plugins de los productos JEMS, descargar de http://labs.jboss.com/portal/jbosside/download/index.html JBossIDE-XXX-bundle, que contiene el IDE Eclipse con todos los plugins integrados por defecto.
0 comentarios