Bottom-up intro of BPMN / DMN in a company

Hi everyone and thanks for having me on the forum!

I’ve tried to convince my employer, an online tutoring platform, to try out Camunda (first for BPMN, and then for DMN), but had no success so far. I’d like to share my experience and ask for opinions on introducing a process engine bottom-up. Maybe somebody has tried that as well, it would be great to hear your stories!

I’m a frontend dev most of the time and fullstack when there’s a problem I can fix - Camunda is interesting because the product development requires our team to communicate about business logic. By having BL clear within the team I believe we can iterate over that better - right now we iterate over UX/UI and copy mostly.

Here’s my experience:

First round: File uploads vs e-mail attachments
A friend was frustrated by the email-based process at his employer, an automotive supplier company. The process in BPMN would have been a sequence of file uploads from different people, with an audit at the end. I was freelancing, and implemented a working prototype in a day. I presented videos of the prototype, they were watched, there were internal discussions and then no progress. We guess that at some point company politics halted the project.

Second round: BPMN vs a customized Django Admin Panel
Some internal processes involve non-technical users to use a Django admin panel. That approach is quick for the developer to generate and tweak but isn’t necessarily quick for other employees. So first I did a tweak that shaved off ~10 minutes per day per employee in one of our teams and gained support ‘for the cause’. To other engineers and our PM I showed BPMN so we could clarify and then automate company-specific processes. What ultimately halted the project was that there’s no (official, REST/GraphQL) API for the Admin Panel, and any tweaks would have to be re-created. It is currently more economical to just add tweaks, and there was the problem of “we don’t have a running endpoint”.

Third round: Having a running DMN endpoint vs decisions in Python
The problem: On the product side, the goal was to enable experiments with a new content-section that guided users along their journey, but the stages of the user journey weren’t yet defined. To decide which content to show in the next stage and when to end one stage, we’d have to rely on the data from the previous experiments. I believe that whoever is closest to the users would have the best idea on how to find criteria and suitable content, in short: Probably not me as a developer. But keeping track of and communicating the current state of ever-changing BL would be pretty helpful, hence DMN. It was a far-fetch for that particular problem I admit, but supposed to be a foot in the door for communicating business logic.
The technical approach: It had to work along a Django-monolith. A monolithic architecture gets you really far as a business, but meant there was no existing microservice environment Camunda could have been added to. To tackle this, the approach was to use DMN over REST like a stateless remote function call: Some input variables are sent, some output comes back, DMN sitting in the middle. DMN-files were getting deployed over REST at application start, the source of truth being the git repository. Setup and implementation took around a week in the dev environment.
The feedback: After we had a running endpoint, the main technical argument became maintenance. Due to the production environment differing from the dev environment the DMN deployment was questioned, and lastly the argument of “what if you leave the company?”. The feedback round consisted of engineers, so understanding code wasn’t a problem for anybody. Visual programming languages for kids were seen as an alternative to this approach.

By the way, thanks for the great tutorials and getting-started repos! Without that it wouldn’t have been possible to try that.

What’s your experience, how did you get a process engine in your company?

1 Like

Hi @JonathanSchneider

Thanks a lot for coming along to the forum and giving your feedback - it’s incredibly useful to hear first hand how Camunda was evaluated.
I’m going to take some time and read through this again in detail to see if we have anything you might find useful in addressing the issues you had within the company in the meantime i’m interested in if you could clarify the point below.

Can you give me more detail on what you mean by this? Do you mean that you couldn’t find the REST endpoints for Camunda?

Thanks again for post this!
I love reading feedback like this.
-Niall

Hi @Niall,
the part about the Admin Panel is referring to Django’s backend/Admin-Panel that was used for internal processes. So a slow migration from an existing environment with customizations/tweaks to Camunda would have meant re-creating functionality. But I’d guess that applies to a lot of existing Applications that don’t have a strict API-layer, or are built on top of MVC-architectures. Graphql and REST just enforce a rather strict API-layer at the network layer, which would make migrations easier.

Glad that the feedback is interesting! :slight_smile:
-Jonathan

Hi Jonathan,
I find it easiest to start with a DMN example for business people. Choose a whatever business-problem, discuss the questions to decide, the information needed and keep track in a DMN-DRD.

With
https://demo.bpmn.io/dmn/new
and


you can proove with a simplified DMN, that the documentation is worth the work. From there on you can iterate the work on the documentation with the team: Keep track of corrections and new ideas in the DRD and Decision Tables, make it executable in the simulator and go back to check if it is that what the team wanted.

In the long run you can even construct a process out of it answering the question: Who has to contribute what and when? - Assigning the respective decision tables from the DRD to the bpmn.

However it is a big pitty that camunda is not supporting the full DMN-standard. Like this it is more difficult to establish it as the central plattform for BPMN AND DMN.

We have to use
https://kiegroup.github.io/kogito-online/#/
which presents all DMN possibilities and test it with
https://github.com/materna-se/declab (a very powerful OS DMN-test-suite).
It would also be great, if camunda modeler would make it possible to designe DMN-models that run on declab without me having to add stuff in the xml manually.

Cheers!
Stefan

Like this

1 Like