The Camuda hackdays are a wonderful time of year where the people in the company who like to code spend about three days working on their own fun passion projects, either in a team or by themselves. These projects have often become the catalyst for new features and community extensions. This year we had more people than ever joining for the hackdays and of course for the first time we did it fully remote! Supported by a lovely care package from the wonderful Camunda backoffice team. Hence all the lovely hats in the pictures below! 

More than 20 teams gathered together. At the end of the three days we got to watch each team present their project. The kinds of projects I watched during the presentation were really diverse, there was a project by Christian Nicolai exploring if there are benefits to us using Ceph internally and we were also treated to Sebastian Stamm’s re-invention of video conferencing, which he kindly recorded and uploaded for posterity. I decided to pick out a few projects to talk about here. The reason I picked them is because I found them interesting from a Camunda BPM perspective or I noticed strong benefits they would have in being promoted to the rest of the community. Hopefully some of these projects will go on to greater lives as community supported extensions or even fully fledged features.

Deployment Descriptor Editor

Chris Allen and Andreas Remdthttps://github.com/Camunda-ChrisAllen/deployment-descriptor-editor

Right now If you’re interested in knowing what the current properties of the Camunda engine are, that’s no problem – just follow these instructions

  • Find the project source code and open it up somewhere
  • Dig around until you find the application yaml file (usually in src/resources)
  • Open it up and dive into the yaml file. You’ll likely find something like this:

You might think to yourself: that’s not a lot of settings and you’d be right because all the default settings are hidden – so if you want to do something like change the name of the process engine, well, no problem – just make your way to the docs page on engine settings and make sure you add it to the right place in the application.yml file. Also – this works differently if you want to deploy on an application server… anyway not ideal… 

The short version of what this project does is: expose the properties via REST and visualize them so that you can view, edit and update them without having to mess around in the project. It’s just fantastic. A wonderful thing as well is that it shows ALL the settings including default values, so no need to mess around in the docs.

The Plugin Plugin

Martin Stamm — https://github.com/marstamm/cockpit-plugin-plugin

We’ve had a plugin mechanism in Cockpit for a number of years, but as of the next release we’re going to build a whole new way to add cockpit plugins. As the developer tasked with bringing this new system to life, Martin has seen it fit to create a project which lets you plug in… plugins.. From the old plugin system.. It’s the plugin plugin! 

Testing Process with JUnit 5

Ingo Richtsmeier https://github.com/ingorichtsmeier/hackdays2020-junit5

Something that has been talked about on the Camunda forum for a little while now is a discussion about the potential benefits of being able to test Camunda processes using JUnit 5 (as opposed to JUnit 4). Ingo decided to investigate during the hackdays and built a project which helps users answer that question. Starting with some groundwork done by our very own Yana, he detailed his findings in the readme and the main takeaways for me are:

  • It’s not too difficult to get it working
  • There isn’t really a “killer feature” that would make someone want to use it
  • But some things are certainly made easier.

Bpmn.js Modeler History Panel

Omran Abazeedhttps://github.com/OmranAbazid/bpmnjs-history-panel

This project is something that I didn’t know I wanted until I saw it being shown off. This is an addition to bpmnjs developed by Omran (aka password), one of our front end developers for Optimize, and what this does is to simply store the history while you build your model. When I saw it I was thinking back to all the times that I’d helped people model their processes only to find out that we had made some fundamental mistake andneeded to hit Ctrl+Z and hope that we’d find a place where the model still made sense. This feature would make collaborative modeling so much easier and I really love it.

Salesforce to Harvest Integration

DMN Testing Plugin

Stefan Wiese, Max Trumpf and Maciej Barelkowski https://github.com/bpmn-io/dmn-testing-plugin

Testing DMN tables and DRD models is a topic that comes up a lot within the community. Right now you can do some casual testing by using the DMN simulator or a more robust test by using JUnit. Neither of these cases are ideal as you need to save your model and upload it to some other system every time you want to test it. That is what makes this plugin so appealing and I think it’s going to become one of the more popular plugins if it gets a little more attention from the community. With this plugin you can test DMN and DRDs without needing to leave the comfort of the Camunda Modeler! It runs the engine in the background and offers a neat UI which generates the required input fields. It’s still a prototype but I hope that if people find the idea worthwhile, a few well-placed pull requests should make this a solid part of your testing procedure. 

Zeebe Event Log debug and inspection tool

Deepthi Akkoorath, Nico Korthout, Chris Zelldon https://github.com/Zelldon/zdb

The Zeebe event log is a black box. When everything “just works”, it is magical – and mysterious. When something goes wrong, however, that sealed black box is just… mysterious.

But no longer! With `zdb`, you now have a command-line tool for inspecting the Zeebe internal state or the partition log.

It is written by three of the core Zeebe engineers – Chris, Deepthi, and Nico, who work on the log implementation itself, and it even comes with a subcommand autocompletion file for your shell.

You can examine a log file for inconsistencies, as well as querying it for various states. While you can’t use it to repair an inconsistent log file (like chkdsk, or fsck), you can use it to get debugging information that can lead to faster root cause analysis and getting any bugs that you run into fixed, faster.

Zeebe AWS EventBridge

Bernd Ruecker, Cornelius Suermannhttps://github.com/berndruecker/zeebe-aws-event-bridge

Zeebe integrations are all the rage, and Bernd and Cornelius created another one – the Zeebe AWS EventBridge, which allows you to integrate your application with Amazon Web Services via EventBridge.

It is a Zeebe task worker that connects to a Camunda Cloud Zeebe cluster, and services tasks in running workflow instances. The worker provides a slick web interface to allow you to configure the integration.

Check out the demo in the repository, and also the presentation slide deck.

So..?

It was really tough to write such a short blog post on the hackday projects but I think by highlighting the things I feel have the most potential for the community it will increase how they are used and hopefully some of them will end up being another feature that we never understood how we ever lived without. If something strikes your fancy – use it, build onto it and become a contributing community member.

  • chor-js, an Editor for BPMN Choreography Diagrams

    Let’s say you are craving your favorite pizza from that pizza place a ten-minute walk away. You call them up, place your order, and are then asked whether you would like to have the pizza delivered or pick it up yourself. In your mind, you think about how convenient it would be to have a delivery driver knock on your door and hand you the pizza within half an hour or so, but then again it is only a short walk, and some fresh air would really do you good… Putting somewhat existential questions aside, what we just described is a prime example for a so-called choreography in Business Process Management. Different participants (you, the pizza place and the delivery...

    Read more
  • Announcing Camunda for Common Good

    Helping NGOs and Non-Profits around the world reach even more individuals Mission-driven organizations are often short-staffed, insufficiently funded, and underestimated. Our new program, Camunda for Common Good, offers an opportunity to give back to organizations that are making a tangible difference in the lives of people around the world. There’s a need for process automation and making operations more efficient no matter what industry you’re in and no matter who you’re serving, but the potential for NGOs and non-profit organizations, in particular, to vastly increase their impact on the world through automation, is compelling. With the launch of Camunda for Common Good, we’re bringing our powerful process automation platform, combined with our expert knowledge, to support qualified NGOs and non-profit...

    Read more
  • Test Your Processes With JUnit 5

    If you’re a fan of JUnit5 for testing on the JVM, we have good news — there’s a brand-new library available: camunda-bpm-junit5, published as a community extension for Camunda BPM. The project is now available on Maven central, so you can start testing your processes with the latest technology. Getting started To add the extension to your project, just add the Maven dependency to your pom file: <dependency> <groupId>org.camunda.bpm.extension</groupId> <artifactId>camunda-bpm-junit5</artifactId> <version>1.0.0</version> <scope>test</scope> </dependency> Add the dependencies to JUnit 5 if you don’t already have them (they are included in the spring-boot-starter-test artifact): <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>5.6.2</version> <scope>test</scope> </dependency> To start testing you can extend your test class with the ProcessEngineExtension: This injects the ProcessEngine configured in the camunda.cfg.xml file into...

    Read more