jBPM4 Building from Source

This page explains how to get the jbpm 4 process engine sources, the various things you can build with it and how to set up your eclipse.

Requirements

  • JDK 5 or higher
  • Maven 2.0.9 or higher
  • Subversion

Other build instructions

Getting the sources

Perform anonymous checkout of the sources like this:

svn co http://anonsvn.jboss.org/repos/jbpm/jbpm4/trunk jbpm4

jBPM developers should check out the sources using the following url

svn co https://svn.jboss.org/repos/jbpm/jbpm4/trunk jbpm4

Building the default modules

To build the default modules run:

[jbpm4]$ mvn clean install

Before you commit, first do an update and then this command should run OK with your updates.

 

A successfull build/test run ends like this:

[INFO] ------------------------------------------------------------------------
 [INFO] Reactor Summary:
 [INFO] ------------------------------------------------------------------------
 [INFO] jBPM 4 ................................................ SUCCESS [7.812s]
 [INFO] jBPM 4 - API .......................................... SUCCESS [11.844s]
 [INFO] jBPM 4 - Log .......................................... SUCCESS [1.281s]
 [INFO] jBPM 4 - Test Base .................................... SUCCESS [1.110s]
 [INFO] jBPM 4 - PVM .......................................... SUCCESS [24.953s]
 [INFO] jBPM 4 - Task ......................................... SUCCESS [6.937s]
 [INFO] jBPM 4 - jPDL ......................................... SUCCESS [3.438s]
 [INFO] jBPM 4 - Examples ..................................... SUCCESS [10.047s]
 [INFO] jBPM 4 - Enterprise ................................... SUCCESS [6.359s]
 [INFO] jBPM 4 - Test DB ...................................... SUCCESS [10.922s]
 [INFO] jBPM 4 - Test POJO .................................... SUCCESS [3.109s]
 [INFO] ------------------------------------------------------------------------
 [INFO] ------------------------------------------------------------------------
 [INFO] BUILD SUCCESSFUL
 [INFO] ------------------------------------------------------------------------
 [INFO] Total time: 1 minute 28 seconds
 [INFO] Finished at: Fri Jan 16 13:45:35 CET 2009
 [INFO] Final Memory: 22M/45M
 [INFO] ------------------------------------------------------------------------

Building the distribution

If you're running outside the Red Hat VPN (only employees have it) you'll have to fetch the oracle driver yourself as we're not allowed to redistribute it in our public repositories.

 

Download the oracle ojdbc14.jar driver here: http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc101040.html

 

Then install the oracle driver into your local repository like this

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.1.0.5 -Dpackaging=jar -Dfile=path/to/file

To build the distribution,

[jbpm4]$ mvn -Pdistro clean install

In case you are working outside the Red Hat VPN and downloaded a different version of the Oracle driver, build the distribution as follows.

[jbpm4]$ mvn -Pdistro -Doracle.version=10.1.0.5 clean install

After that finishes successfully, you'll find the distribution package in modules/distro/target/jbpm-{version}.zip

On windows you can add the schemadocs profile with -Pschemadocs. In other operating systems, the schema docs generation fails.

 

The distribution package is also published in the repository.  (note that it's called jbpm-distro-{version}.zip in the repo)

Build scripts

Developer configuration

In the following build files, configurable properties can be customized in file ${user.home}/.jbpm4/build.properties


As a developer, at least you need to specify jbpm.parent.dir  Typically you also want to specify the jboss.distro.dir and the eclipse.distro.dir

jbpm.parent.dir=${user.home}/jbpm
jboss.distro.dir=${user.home}/downloads/jboss
eclipse.distro.dir=${user.home}/downloads/eclipse

JDBC properties can also be specified in files ${user.home}/.jbpm4/jdbc/${database}.properties

 

Or properties can also be provided on the command line like:

 

ant -Djbpm.parent.dir=/usr/jbpmbuild reinstall.jbpm

Default values

Here are the configurable properties and their default values as used throughout the scripts.

<property name="database" value="hsqldb" />
<property name="jbpm.version" value="4.0.0-SNAPSHOT" />
<property name="jbpm.home" value="${jbpm.parent.dir}/jbpm-${jbpm.version}" />
<property name="jbpm.filename" value="jbpm-distro-${jbpm.version}.zip" />
<property name="jbpm.distro.dir" value="../modules/distro/target" />
<property name="jbpm.distro.path" value="${jbpm.distro.dir}/jbpm-${jbpm.version}.zip" />
<property name="jboss.version" value="5.0.0.GA" />
<property name="jboss.distro.dir" value="${jbpm.home}/downloads" />
<property name="jboss.parent.dir" value="${jbpm.home}" />
<property name="jboss.version" value="5.0.0.GA" />
<property name="jboss.filename" value="jboss-${jboss.version}.zip" />
<property name="jboss.distro.dir" value="${jbpm.home}/downloads" />
<property name="jboss.distro.filename" value="jboss-${jboss.version}.zip" />
<property name="jboss.distro.path" value="${jboss.distro.dir}/${jboss.filename}" />
<property name="jboss.distro.url" value="http://downloads.sourceforge.net/jboss/${jboss.distro.filename}" />
<property name="jboss.home" value="${jboss.parent.dir}/jboss-${jboss.version}" />
<property name="jboss.server.configuration" value="default" />
<property name="jboss.server.config.dir" value="${jboss.home}/server/${jboss.server.configuration}" />
<property name="eclipse.filename" value="eclipse-jee-ganymede-SR2-win32.zip" />
<property name="eclipse.distro.url" value="http://mirror.cc.vt.edu/pub/eclipse/technology/epp/downloads/release/ganymede/SR2/${eclipse.filename}" />
<property name="eclipse.distro.dir"  value="${jbpm.home}/downloads" />
<property name="eclipse.parent.dir" value="${jbpm.home}" />
<property name="eclipse.distro.path" value="${eclipse.distro.dir}/${eclipse.filename}" />

qa/build.xml

This is the build script to install jBPM and the helper scripts to drive the continuous integration.   This script is only available in the sources. Other scripts will also be available in the distribution, but this script is not.

[jbpm4/qa]$ ant -p
Buildfile: build.xml
     [echo] database.......... hsqldb
     [echo] jbpm.version...... 4.4-SNAPSHOT
     [echo] jbpm.home......... /home/aguizar/jbpm/jbpm-4.4-SNAPSHOT
     [echo] jbpm.distro.path.. ../modules/distro/target/jbpm-4.4-SNAPSHOT.zip

Main targets:

 internal.enterprise.test.setup.base   reinstalls jbpm, reinstalls jboss, installs jbpm into jboss, starts jboss and then creates the jbpm schema
 reinstall.jbpm                        deletes the jbpm installation and then reinstalls jbpm
 testsuite.enterprise.setup            reinstalls jbpm, reinstalls jboss, installs jbpm into jboss, starts jboss and then creates the jbpm schema
 testsuite.enterprise.setup.for.debug  reinstalls jbpm, reinstalls jboss, installs jbpm into jboss, starts jboss and then creates the jbpm schema
 testsuite.enterprise.teardown         drops the jbpm schema and stops jboss
 testsuite.jboss.setup                 reinstalls jbpm, reinstalls jboss, installs jbpm into jboss, starts jboss and then creates the jbpm schema
 testsuite.jboss.setup.for.debug       reinstalls jbpm, reinstalls jboss, installs jbpm into jboss, starts jboss and then creates the jbpm schema
 testsuite.jboss.teardown              drops the jbpm schema and stops jboss

distro/src/main/files/install/build.xml

This script contains the targets related to installing jboss, installing jbpm into jboss and starting and stopping jboss. It also contains the targets related to creating and dropping the db  schema. This script will be part of the distro and also be usable by our users.

 

[modules/distro/src/main/files/install]$ ant -p
Buildfile: build.xml

Main targets:

 clean.cfg.dir                 Deletes the ${cfg.dest.dir}
 create.cfg                    Creates a configuration in ${cfg.dest.dir}
 create.jbpm.schema            creates the jbpm tables in the database
 create.user.webapp            Generates a configuration in dir /install/generated/user-webapp
 delete.jboss                  Deletes jboss installation
 delete.tomcat                 Deletes tomcat installation
 demo.setup.jboss              installs jboss and jbpm, starts jboss, creates the db schema, deploys examples, loads example identities, installs and starts eclipse
 demo.setup.tomcat             installs tomcat, installs jbpm into tomcat, starts tomcat, creates the jBPM DB schema, deploys examples, loads example identities, installs and starts eclipse
 demo.teardown.jboss           drops the db schema and stops jboss
 demo.teardown.tomcat          stops tomcat and then the hsqldb server if needed
 drop.jbpm.schema              drops the jbpm tables from the database
 get.eclipse                   downloads eclipse to ${eclipse.distro.dir}
 get.jboss                     Downloads jboss into ${jboss.distro.dir}
 get.tomcat                    Downloads tomcat into ${tomcat.distro.dir} if it is not available
 hsqldb.databasemanager        start the hsqldb database manager
 install.eclipse               unzips eclipse, downloads eclipse if it is not available in ${eclipse.distro.dir}
 install.examples.into.tomcat  deploys all the example processes
 install.jboss                 Downloads jboss to ${jboss.distro.dir} if its not available and then unzips jboss
 install.jbpm.into.jboss       Installs jBPM into JBoss
 install.jbpm.into.tomcat      Installs jBPM into tomcat
 install.signavio.into.jboss   installs signavio into jboss
 install.signavio.into.tomcat  installs signavio into tomcat
 install.tomcat                Downloads tomcat to ${tomcat.distro.dir} if its not available and then unzips tomcat
 load.example.identities       loads the example users and groups into the database
 reinstall.jboss               Deletes the previous jboss installation and re-installs jboss
 reinstall.jboss.and.jbpm      Deletes the previous jboss installation and re-installs jboss and installs jbpm in it
 reinstall.tomcat              Deletes the previous tomcat installation and re-installs tomcat
 reinstall.tomcat.and.jbpm     Deletes the previous tomcat installation and re-installs tomcat and installs jbpm in it
 start.eclipse                 starts eclipse
 start.jboss                   starts jboss and waits till jboss is booted, then lets jboss run in the background
 start.tomcat                  Starts Tomcat and waits till it is booted, then lets Tomcat run in the background
 stop.jboss                    signals jboss to stop, but doesn't wait till its finished
 stop.tomcat                   Signals Tomcat to stop, but doesn't wait till its finished
 upgrade.jbpm.schema           Upgrades the jBPM tables in the database to the current version

distro/src/main/files/examples/build.xml

This script contains the target for deploying the examples to the database.  This script will be part of the distro and also be usable by our users.

[modules/distro/src/main/files/examples]$ ant -p
Buildfile: build.xml

Main targets:

Other targets:

 create.and.deploy.examples
 examples.jar
 jbpm.libs.path
 log.properties

Testing against a particular database

[jbpm4]$ mvn -Ddatabase=mysql test

Running the test suites on another JDK

To run the test suite on another JDK, make sure it is the default java in the path.

 

On windows, you can do this easily by a command like this:

set PATH=C:\Software\jdk1.6.0_07\bin;%PATH%

 

To see what the current configured JDK is, you can check the version like this

java -version

Running the enterprise test suite

[jbpm4]$ mvn -Djboss.bind.address=localhost test

Useful maven command line options

-DskipTests will skip execution of the test suite.

-o will run the build offline.  Maven will not check the snapshot repositories for updates.  Saves time.

-U will force updates of libraries

Setting up your eclipse

You'll need

 

After you checked out the jbpm4/trunk, you do:

  • File --> Import...
  • General --> Existing projects into Workspace
  • Select jbpm4/trunk/modules as the root directory
  • All the modules with an eclipse project should now appear.  By default, all the checkboxes are checked
  • Click 'Finish'

 

Eclipse will point to the libraries of your local mvn repository.  To get the libraries there, activate 'Project' --> 'Update All Maven Dependencies'

 

Go to Window --> Preferences --> Java --> Code Style --> Formatter and import jbpm4/trunk/eclipse/jbpm.profile.xml