How to use BPMN 2.0 ScriptTask with Groovy in JBoss

  • Blog
  • >
  • How to use BPMN 2.0 ScriptTask with Groovy in JBoss
Note: this blogpost only applies to camunda BPM version  < 7.1.0. Starting from camunda BPM 7.2.0 we ship Groovy as part of the pre-packaged distribution.

Recently at a customer we added a ScriptTask to a process and wanted to run a Groovy script. Pretty easy with camunda BPM – but in the JBoss environment you have to know how to correctly put Groovy on the classpath – as we correctly use the JSR 223 stuff to recognize existing Scripting Languages.
Adding a scriptTask to a process to run a Groovy script

To help others and to remind myself I quickly wanted to blog how to do this.

1.) Add groovy module to your JBoss

Download latest groovy-all.jar and copy it to JBOSS_HOME/modules/groovy/main/groovy-all.jar.
Create JBOSS_HOME/modules/groovy/main/module.xml with the following content:

<?xml version="1.0"
xmlns="urn:jboss:module:1.0" name="groovy">
<resource-root path="groovy-all.jar"/>
<module name="javax.api"/>
<module name="org.apache.commons.logging"/>

2.) Add dependency to groovy in the camunda engine module

Edit file  JBOSS_HOME/modules/org/camunda/bpm/camunda-engine/main/module.xml. Add one line in the dependencies:

 <module name="groovy"
services="import" export="true" />
Important is the services=”import” which tells JBoss to recognize the META-INF/services directory in groovy – which is does not by default. This is the small thing with normally takes some hours to solve – hope this helps somebody out there. The whole module.xml now looks more or less like this:

<module xmlns="urn:jboss:module:1.0" name="org.camunda.bpm.camunda-engine">
  <resource-root path="camunda-engine-7.0.0-Final.jar" />

  <module name="javax.api" />
  <module name="javax.transaction.api"/>
  <module name="javax.enterprise.api" />
  <module name="javax.inject.api" />
  <module name="javax.ejb.api" />
  <module name="javax.xml.bind.api" />
  <module name="javax.servlet.api" />
  <module name="org.jboss.vfs" />
  <module name="org.mybatis.mybatis" />
  <module name=""/>
  <module name="org.joda.time" slot="2.1" />    
  <b><module name="groovy" services="import" export="true" /></b>  


3.) Have fun with the ScriptTask!

Try All Features of Camunda

Related Content

Achieve our first certification as a Camunda Certified Professional—Developer.
We've been working hard to reduce the job activation latency in Zeebe. Read on to take a peek under the hood at how we went about it and then verified success.
2023 was quite a year for Zeebe, and the team has been hard at work improving performance. Get an overview of all the latest technical improvements.