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?