Questions about deployment in a standalone engine

Hello,

At the moment I am researching deployment in Camunda for a standalone/remote engine architecture. I used Camunda Run as remote engine. I understood from blogs/video’s that this is the new replacement for container managed engines like Tomcat and it’s the best way to run a remote engine. Now my first question would be if this is true? Wouldn’t I have more configurability when using Spring Boot starter + web apps + REST API as a remote engine?

Now I will explain the thoughts I have about deployment.

In some video tutorials, I have heard about BPMN schema’s that if i want “something more predictable, more self-contained you might want to leave it in the resource folder” while for fast prototyping deploying via de modeler is best. Why is this so? If you have a live Camunda server i guess you don’t want to kill the application to deploy a new process.

So I was experimenting with these versions and I have run into some problems. The first time I start Camunda it deploys my BPMN and embedded form automatically from the resources. Now I thought about making a small change to my embedded HTML form and restarting the server. As I expected it only deploys the new changed HTML form. However, my existing process instances and new instances I made did not use this latest form. Why is this and how could I make this happen?

Also an extra question about the Modeler. What is the best way to capture variables? Right now I write in a document for every task what variable goes in and what goes out. Could I use the input/output variables for this because thought this was more for mapping? or should I write/use a plugin for this?

So my questions are:

  • If I want a standalone/remote engine is Camunda run the best solution?
  • Should I deploy a new process to my engine by using the modeler or restarting the server?
  • When I restart the server it only uploads the changed embedded HTML file but the process does not ever use this file. How can I make it use this?
  • Could I use the input/output variables for keeping track of what variables should be set for my tasks or should I put this in a simple document?

Hi @eggy

Thanks a lot for the interesting questions, I should be able to clarify things for you

The reality is that a stand alone engine can be run as any distribution, the key thing to consider is actually how you plan on maintaining and configure the server.
For instance if you use Spring boot or tomcat or wildfly as your stand alone engine, it’s best that you have some idea of of how Java works. This is because any configuration you need for the engine or the server needs to be done by changing things in a java context.

Camunda Run was specifically designed to add features that abstracts configurations so it could be maintained without the requirement that a user has to mess around in Java.

There are pro’s a con’s. If we’re talking about a production system AND you’re using the standalone engine then you probably shouldn’t do either of these.
Any change to a model before being deployed should go through some kind of automated testing procedure and after those pass you can use the REST API to deploy the model as park of a CI build or something similar.

There really isn’t any need to restart the server in this case - the engine will continue to run instances that are in flight and the new deployment will be automatically added as a new version.

I’m not sure why this might happen actually. Generally speaking static artifacts like Java Classes or HTML files are loaded in runtime as the process gets to the point that they’re used. I’d perhaps need more details about how you did this.

You can indeed do this and it would work quite well - but there’s a also a more advanced version where you can created templates that describle the variables required and the variables created by a given task.
You can read more about that here: https://github.com/camunda/camunda-modeler/blob/develop/docs/element-templates/README.md

Hope this was useful.
-Niall

1 Like

Thank you very much for this quick and detailed reply.

I will change Camunda run for an embedded Spring Boot project and use it remote.

I am working for school now with Jenkins and I will try to use this for deployment.

About the html file. I have my process.bpmn, a decision model and my html form in the resource folder. When Camunda starts it auto deploys this. If i now restart it won’t deploy again because it didn’t see any changes. If i change my html form with just some text it will deploy it again on a restart because it detected changes i guess. I can see it deployed only this html form again. However it’s not used in my process that has been deployed before.

Thanks about the information about templates. I will look into it.

Hi @eggy and @Niall,

the deployment issue with Camunda Run (you copy process models and forms into the resources folder) is already addressed in this post: Form not available via Camunda Run deployment - #4 by asoltesz.

From this post I think it’s worth to create a JIRA Issue for this and maybe a pull request with a solution?

Hope this helps, Ingo

1 Like