Seleccionar página

Instalar jBPM 3.1.2 como servicio MBean en JBoss 4.0.4.GA sobre MySQL 5.0.22-1 y Fedora Core 5

por | Oct 11, 2006 | General

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.

Te puede interesar…

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *