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! 

participants from summer hackdays 2020
participants from summer hackdays 2020

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.

participants from summer hackdays 2020

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:
screenshot of yaml file

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.

deployment descriptor editor

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

demo of the 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 AWS EventBridge

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.