CamundaCon 2023 ― The Process Orchestration Conference of the Year on Sep 27-28

Save your Seat

How to use BPMN 2.0 ScriptTask with Groovy in JBoss

  • Blog
  • >
  • How to use BPMN 2.0 ScriptTask with Groovy in JBoss
TOPICS

30 Day Free Trial

Bring together legacy systems, RPA bots, microservices and more with Camunda Platform 8

Join the Camunda Developer Newsletter

Get the latest events, release notes, and product updates straight to your mailbox.

TRENDING CONTENT
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"
encoding="UTF-8"?>
<module
xmlns="urn:jboss:module:1.0" name="groovy">
    <resources>
       
<resource-root path="groovy-all.jar"/>
   
</resources>
       
   
<dependencies>
       
<module name="javax.api"/>
       
<module name="org.apache.commons.logging"/>
   
</dependencies>
</module>
 

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">
 <resources>
  <resource-root path="camunda-engine-7.0.0-Final.jar" />
 </resources>

 <dependencies>
  <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="com.fasterxml.uuid.java-uuid-generator"/>
  <module name="org.joda.time" slot="2.1" />    
 
  <b><module name="groovy" services="import" export="true" /></b>  
 </dependencies>

</module>

3.) Have fun with the ScriptTask!

Try All Features of Camunda Platform

Related Content

Did you know that you can keep your process instances moving with Operate? Learn how in this tutorial.
Event-streaming technology has many advantages. Learn how your business processes can benefit from using it for process orchestration.
Combining a process orchestration solution like Camunda with an observability solution like Instana can break down silos and help teams better understand their systems.