WAR-based deployment of workflow applications - PoC #1 (pure Tomcat/Camunda)
Presentation
PoC code
Running PoC
Install Tomcat with pre-packaged Camunda engine
Follow installation instructions from here: https://docs.camunda.org/manual/7.5/installation/full/tomcat/pre-packaged/
No need for any manual configuration, just unpack it and start Tomcat.
PoC was tested on https://camunda.org/release/camunda-bpm/tomcat/7.11/camunda-bpm-tomcat-7.11.0.tar.gz.
Build PoC code
Maven is needed to build it.
Unzip the PoC package attached above and run mvn clean install from camunda_poc directory.
Run PoC
Copy PoC shared lib to Tomcat lib directory: copy camunda_poc/common_code/target/camunda-poc-common-code-1.0-SNAPSHOT.jar to Tomcat lib directory (server/apache-tomcat-9.0.19/lib). You need to restart Tomcat after this.
Now you can deploy test applications on running Tomcat without restarts:
copy camunda_poc/test_app1/target/camunda-poc-test-app1.war to Tomcat webapps directory (server/apache-tomcat-9.0.19/webapps).
do the same thing for test_app2
Go to Camunda Tasklist application (http://localhost:8080/camunda/app/tasklist), click Start process and run App1_process (or any other for that matter).
Observe Tomcat logs in server/apache-tomcat-9.0.19/logs/catalina.out.
You should get output similar to following in the logs:
>>>>>>>>>> App1LocalDelegateBean invoked
>>>>>>>>>> App1LocalDelegateBean invoked
>>>>>>>>>> App1LocalComponentBean.beanMethod() invoked
>>>>>>>>>> COMMON Delegate Bean invoked
>>>>>>>>>> COMMON Delegate Bean invoked
>>>>>>>>>> COMMON SpringBean.beanMethod() invoked
>>>>>>>>>> App1AnotherDelegateBean invoked
>>>>>>>>>> App2LocalDelegateBean invoked
>>>>>>>>>> App2LocalDelegateBean invoked
>>>>>>>>>> App2LocalComponentBean.beanMethod() invoked
>>>>>>>>>> COMMON Delegate Bean invoked
>>>>>>>>>> COMMON Delegate Bean invoked
>>>>>>>>>> COMMON SpringBean.beanMethod() invoked
>>>>>>>>>> App2LocalGroovyClass.someMethod() invoked
>>>>>>>>>> CommonGroovyClass.someMethod() invoked
Important configuration files
Files crucial for making this PoC work.
processes.xml
This is a Camunda-specific file.
Located in camunda_poc/test_appX/src/main/resources/META-INF/processes.xml.
This tells Camunda engine that this is process application. Camunda will scan these kind of applications and will load all BPMNs found.
applicationContext.xml
This is Spring-specific file.
Located in camunda_poc/test_appX/src/main/webapp/WEB-INF/applicationContext.xml
This file tells Spring to load all required by Camunda beans. It also bootstraps Camunda process application and tells Spring to scan the application for other Spring beans.
web.xml
This is Java EE-specific file (required by Java web applications)
Located in camunda_poc/test_appX/src/main/webapp/WEB-INF/web.xml