CamundaLibrary closes in on 2.0
10 months ago we (Deutsche Post Adress) released the CamundaLibrary for Robot Framework. This post is about the current development and near future plans.
A year ago, we already had processes completely automated with Robot tasks. But orchestration and monitoring cost a lot of maintenance, therefore we decided on an integration as Camunda as orchestrator.
Initial version 0.x was all about getting the concept working. A classic MVP. Fetching a process instance and completing it all within Robot Framework. It worked so well that we published it under Open Source license in November 2021. I myself got on tour at RoboCon and Camunda Community Summit presenting the benefits of a toolstack of Robot Framework and Camunda at its core. By now, CamundaLibrary has moved from Deutsche Post Adress to the Robot Framework Community on GitHub.
At RoboCon I mentioned the roadmap for version 1.x implementing core features when working with Camunda such as:
- BPMN Error Handling
- Incident Handling
- Working with Decision Tables
- Uploading Embedded Forms
Working with CamundaLibrary 1.x feels comfortable. The implemented keywords basically are 1:1 implementations of the powerful REST API that Camunda provides. But doesn’t Robot Framework can do more?
I believe it can. Therefore, I will shift development focus from version 2 onwards on emphasizing the comfort of Robot Framework. There shall be keywords that represent common use cases when working with Camunda.
For instance, if your Robot task is not embedded in an external task worker, but it appears as external task worker itself, you want to skip execution, when there is no process instance waiting at your topic. That logic is frequently a combination of 2 or 3 statements:
- Fetch process instance from topic
- Check if there was a process instance
- If there was no process instance, skip execution
It may look something like this:
Because an empty workload could mean, that there is process instance without any variables, we need to check if fetch actually go a response. If that was no response, we exit the FOR loop. Easier would be something like:
What do you think? Do you have additional ideas? A robot listener that raises incidents whenever a task fails? Or do you prefer a keyword that can be registered at failure similar to the feature Take Screenshot from Browser- and SeleniumLibrary?
If you have any suggestions how working with Camunda could be more convenient, I welcome you for adding proposals on GitHub. If you are curious, star the project and follow its roadmap.