Example for Integration with Robot Framework

Hello community,

I have been working on an integration of Camunda and Robot Framework, the so called CamundaLibrary. If you do not know Robot Framework: it is an open source, python based abstraction layer for task automation where automationeers rather describe a task than programming it.

Last night, I published an example based on expansion plans from the roman emperor told by @Niall during his excellent tutorial for distributed systems.

I’d be curious to learn, what people think about it and if more people use RF and Camunda for automation.



This is so great! :clap:
Thanks for posting - I love any project that combines Open Source with Ancient roman history! :slight_smile:
Sure it’ll be really great for the many Camunda users who want more robots :robot: and python :snake: in their projects!


How can I run “ChooseDestination”,“InvadeGaul” & “InvadePersia” task in the back ground ?
Is there a way to run robot tasks in background & keep listening any external task the like as external task worker ?
I am new to this integration . Pls suggest the way forward .

I am not sure what you mean “in background”.

If you follow the instructions in the README, you run all service tasks in sequence.

If you want to run the tasks individually, you can add the name of the task witch option t:

robot -d logs -t "Invade Gaul" run_simple_invasion.robot

In this example, the tasks don’t wait for process instances. If their topic does not provide a process instance they quit immediately. If you want the robot task to wait for work, you can add asyn_response_timeout to the fetch workload statement:

    ${process_variables}    fetch workload    invade_gaul    async_response_timeout=30000

If you have trouble, getting the guide in the README let me know. Also, if you want to experiment further, see all available keywords/commands for CamundaLibrary here: https://postadress.gitlab.io/robotframework/robotframework-camunda-mirror/latest/keywords/camundalibrary/#library-documentation-top

Regards, Markus

Hello everyone,

I started a collection with projects that combine Camunda Plattform and Robotframework. I hope it will provide a good entry point to get started ,and additionally a good overview of existing projects.
I would love to see contribution and Pull Request!

Let me explain …
with run of below command it’s upload the model.
robot -d logs upload_invasion_model.robot
Now I started the 4 instance of the process manually(I took out the start process from the run_simple_invasion.robot file and ) and current blue tick is waiting at "Decide How best to expand rome". Now to process these 4 instance I need to run “run_simple_invasion.robot” 4 times manually .
robot -d logs -t "Decide how to best to expand rome" run_simple_invasion.robot

What I want - if some arrengement can be done so that “run_simple_invasion.robot” can run like as listener(in background …like a external task client works) and everytime a new instance of process arrives at “Decide How best to expand rome” ,it would execute automatically rather any manaul command hit in cli.

Of course, the cli is not triggered manually.

Right now, we run those cli calls as Cronjob. Inside robot Framework task we run in endless loop that repeats the task as long as fetch workload returns a new process instance. Like in thus task, where we Pass exeution if fetching was empty: walking-robotframework-camunda-demo/20_apply_ocr.robot at master · Noordsestern/walking-robotframework-camunda-demo · GitHub

Now, the for loop and Cronjob are not the most efficient way, since you get empty runs. Most of the time, it is not a problem, yet.

However, we are occasionally working on a camunda-listener service for robot Framework. Preparations are done, I only need to glue the parts together:

  1. Robotframework Webservice that runs robot task triggered via rest: GitHub - postadress/robotframework-webservice: Webservice for running robotframework suites.
  2. A camunda listener/worker Webservice that constantly checks with keyword Get amount of workloads if workload is available. And only if a workload is available, the robotframework Webservice is executed (probably still containing the long polling for loop)