Elixir and BPM (business process management)

Are there good examples of approaches that instead of using BPMN to generate code to run, code is written and a process diagram is generated from an analysis of the code? I expect the variability in code expression would pose issues. The trade-off is it requires a coder to implement, but it would solve the communication and “stale” problems. I guess in a space like Elixir I’m wary of generated code implementing concurrency well; Salesforce’s declarative tools have issues with scalability and implicit implementation details, it can be hard to anticipate bugs or know when something will fail.

Another idea in this space is event storming. It might be easier to guide our token Excel-technical user through some kind of guided Event Storming session to define the process through events, commands, entity definitions, etc. It could be that this DDD modeling exercise is a simpler set of vocabulary to learn than the BPMN lexicon. The question is can this approach specify with enough granularity to generate capable code?

Fair enough.

To be fair there are just too many other reasons why something like this could go off the rails.

With a brilliant tool and a competent Business Process Analyst (BPA) five days may just be enough time. However all too often some tools are sold as some kind of universal panacea to be wielded by people who are responsible for conducting “the business” but who don’t necessarily have the requisite BPA mindset that the tool is based on. I’m skeptical that a non-BPA could acquire the necessary mindset in five days (apart from being trained on the tool).

Often these type of ventures fail because of “people problems”. In the end the education of the tool user is more important. A competent BPA is an asset to the business; the right tools could make a BPA more effective - given the right circumstances.

Code-first asset generation tends to lead to more obfuscated results. In the end model-first generation should be more likely to succeed. However a successful result still relies on the tool user having a solid understanding of the relevant modeling principles.

1 Like

Oh, I didn’t work on the project that used the tools - we were evaluating it at the same time as another project and were included in the training as more of a courtesy or sales effort. Despite a lot of pressure to use these tools we ended up writing a traditional app and our project worked out fine. But I had regular contact with people from the department that adopted it and heard about their progress or lack of. They did train a bunch of people but most of the work was done by consultants who had more experience but of course that doesn’t mean it wasn’t largely a people problem or management problem. I’m sure someone, somewhere in the world has used that toolset successfully. But I’m deeply skeptical it is an efficient or reliable way to deliver the desired objectives.

1 Like

I think the issue is BPM tools are marketed toward senior management generally involve high touch sales and like most “enterprise” products generally don’t have much love from developers.

1 Like

For clarity: a bpmn modeler does not generate code, each model is persisted in xml. It is this xml that you can interpret in a backend language like elixir. I dare not think of a tool that generates a bpmn model from code. Keep in mind also that these tools are meant for orchestration only (and process mining / management). The bpmn contains pointers to services / forms etc, but no details about those.
Maybe you can try an event storming session with a bpmn editor instead of stickies, on a big screen. The screen would look like https://demo.bpmn.io/new (this is not the complete modeler, the real one contains a properties editor on the right and there may be more, I send the link just to give an idea).

Now that I’ve found this thread I’ll have to give a write up soon.

Short version though: BPM generally aligns with ISO certifications that companies aim for which require documenting business processes. Then you move from being able to take a flow chart and turn it into something that runs. Then you start hooking nodes of that flow chart into other systems to automate away some of the human bits where possible.

The power in it is the ability to start simple and then improve as you find the process being repeated a lot. Anybody can write up a process and drop it in a folder on a network drive to say “this is our on-boarding process” but without a system to enforce it, it probably won’t be.

With BPM in place you start with essentially a flow charted checklist, then you start routing it to different people based on responses in that checklist.

My interest comes because I see a lot of benefit from it for my wife’s small business. It could make her life a lot easier for managing everything from signing up new patients, filing insurance claims, handling employee license renewals, patient discharge, etc. Unfortunately, the systems are pretty complicated as most seem geared toward larger companies…and most are written in Java as well.

It’s very much a glue system that handles talking to both humans and APIs.

Simple examples would be something like an on boarding process for new employees that steps through paperwork, HR, benefits, legal stuff, systems access, etc. When you are done you are looking at talking to multiple people to ensures proper bits have been covered, creating email and calendar access, granting access to specific systems, etc. The whole process might take a few days, including check points and reminders. Somebody may need to review where each person is in the process and multiple people may be on-boarded at the same time.

BPM creates a way for that to happen in a manner that can be visually reviewed, understood, enforced and then updated.


I think that too. What often is not seen (and even looked away from by those in the “higher” ranks!) is that modeling in bpmn is programming. Only with a language that contains other symbols. It has bothered me all my programming life, this underappreciation of programmers and overvaluation of “doing a more functional job”. I have seen lots of developers take over this attitude.

I find this a good paper about the value of workflow engines https://blog.bernd-ruecker.com/bizdevops-the-true-value-proposition-of-workflow-engines-f342509ba8bb .

See the link for the links in the article.


I’d agree completely with the living documentation description. It’s basically living documentation + information flow + api chaining.

1 Like

Your quote “BPMN is the most underappreciated technology in our field IMO.”
appeared today in this article: https://zeebe.io/blog/2018/08/bpmn-for-microservices-orchestration-a-primer-part-1/

LOL. Wow. I gotta watch my comments.

It really is underappreciated. With all of the web services that are out there, BPM gives a glue + rules + human relay interface to it. It’s largely ignored when it comes to programmers, because we naturally gravitate toward “I’ll just hook up to this API, then write a few conditional statements…” and we one-off that stuff to death rather than using BPM.

Amazon even has a simple web based one called SWF minus that graphical bits.

1 Like

It is almost totally ignored on this forum also. Search for BPM and see the reactions.


Q: When should I use Amazon SWF vs. AWS Step Functions?
… AWS customers should consider using Step Functions for new applications. If Step Functions does not fit your needs, then you should consider Amazon Simple Workflow (SWF).

Hadn’t seen Step Functions yet.

There is netflix conductor also. https://medium.com/netflix-techblog/netflix-conductor-a-microservices-orchestrator-2e8d4771bf40
Have not looked into it yet.

I am sure that BPM is a compelling technology. I regularly wish for more and better business/technical documentation no matter where I work. That said, at the end of the day, this is a forum about the Elixir programming language, not BPM. I am sure there are forums (e.g. https://forum.bpmn.io/ ) where BPM is thoroughly discussed.

Now, if you post a project here which implements (or at least starts to implement) a BPMN backend in Elixir, with a small example of how to use it to run a BPM diagram, I feel very confident saying that people will show interest :slight_smile:


I developed my (start of a) bpms in my spare time, between payed freelance jobs. To at least learn elixir. I would like to get work with it. Currently I’m on a freelance job again, not with elixir. It proved hard to find work with elixir. If anyone sees a business opportunity I would be more than happy to work further on the bpms, payed. I would prefer to make the product open source. Anyone interested can PM me, I can give a demo and code insight.

Maybe, but what about the learning curve? Many businessmen like certain terms and if you present your training case properly, that can win you a week or two but would that be enough for a programmer to get a good workable knowledge level?

I will still claim “don’t fix it if it ain’t broken” because making a team of 10+ people use the same tools for documentation and processes is times harder – and much more time-consuming – than just one-offing things.

Don’t get me wrong please – also addressed at @StefanHoutzager – I would love to use something like that. But between not being able to learn it in an afternoon, to not having brief video tutorials, and swimming uphill by trying to make a team of people use the same tools… I think many of us are excused for not bothering.

Just bother when you see a use case. Problem is you have to have some minimal knowledge of what bpm makes possible to see them.

1 Like

I’ve always thought a big step in the right direction towards usability improvement with BPM systems would be a simple webhook receiver. Structure something that’s your default for receiving hooks that can make it easy to determine what you want to do with them afterwards and possibly streamline that workflow.

Then set it to where you can export those simplified rules into official BPMN.

I really think that would be enough to get people utilizing the concepts earlier on in their process.