In this post I want to share a useful tip for those working with Red Hat JBoss BPM Suite 6.x (based on Drools jBPM 6.2). During development phase is normal to redeploy your project many times to view/test your changes.
As you already know the JBoss BPM Suite offers a rich and powerful Workbench that supports the full BPM life circle (from design to deployment) – Business Central (Kie Workbench).
At this time the jBPM Deployment Manager checks for any existing project artifact with the same Maven GAV coordinates (Group Artifact Version). The Maven GAV coordinate uniquely identifies each project artifact deployed and managed by the BPMS. So when you try to redeploy your project without change the project version before, your Build & Deploy will fail.
In the server.log you can see the following error entry:
16:46:21,464 ERROR [org.jbpm.console.ng.bd.backend.server.DeploymentManagerEntryPointImpl] (http-/127.0.0.1:8080-8) Deployment of unit org.specialtripsagency:specialtripsagencyproject:2.0.1 failed: unit already deployed! (override deployment: false): org.jbpm.console.ng.bd.exception.DeploymentException: unit already deployed! (override deployment: false)
You can workaround this going to Process Deployments (top Menu > Deploy in the Business Central) and undeploy the Process artifact.
But doing this every time you want to test a change is very boring and time consuming.
To avoid this you can pass a System Property to the BPMS during the startup to instruct it to accept artifacts redeployment using the same Maven GAV coordinates.
Start you BPMS server instance using the following system property
Note: This approach is documented in the official Product documentation – Administration Guide (item 2.4).
Now you can redeploy your process’ project without having to change the project version every time you want t test a change. See the server.log snippet below showing the deployment of my project after our change:
17:53:21,654 INFO [org.drools.compiler.kie.builder.impl.KieRepositoryImpl] (http-localhost/127.0.0.1:8080-3) KieModule was added: MemoryKieModule[releaseId=org.specialtripsagency:specialtripsagencyproject:2.0.1] 17:53:21,945 INFO [org.jbpm.kie.services.impl.store.DeploymentSynchronizer] (http-localhost/127.0.0.1:8080-3) Deployment unit org.specialtripsagency:specialtripsagencyproject:2.0.1 removed successfully 17:53:21,947 INFO [org.jbpm.console.ng.bd.backend.server.DeploymentManagerEntryPointImpl] (http-localhost/127.0.0.1:8080-3) Deploying unit org.specialtripsagency:specialtripsagencyproject:2.0.1 17:53:22,392 INFO [org.drools.compiler.kie.builder.impl.KieRepositoryImpl] (http-localhost/127.0.0.1:8080-3) KieModule was added: ZipKieModule[releaseId=org.specialtripsagency:specialtripsagencyproject:2.0.1,file=/home/rsoares/.m2/repository/org/specialtripsagency/specialtripsagencyproject/2.0.1/specialtripsagencyproject-2.0.1.jar] 17:53:22,785 INFO [org.jbpm.kie.services.impl.store.DeploymentSynchronizer] (http-localhost/127.0.0.1:8080-3) Deployment unit org.specialtripsagency:specialtripsagencyproject:2.0.1 stored successfully
I hope this little tip help your JBoss BPM Suite usage during process development.