Elixir and BPM (business process management)

I don’t know much about BPM but just reading through this thread it makes me think about CA Plex. I worked for a software that used it for almost everything, other than myself and another guy who did .net stuff. Is this something new or ideas from the 80’s being updated and reused?

From: The difference between workflow and business process management

Business process management isn’t a very good name for the discipline, for example because it isn’t only useful for businesses, but it’s the best name we have. Apart from ‘workflow management’, unless you think that’s worse, of course.

I ran into this because I noticed that Workflow Patterns seemed to avoid “BPM” on the cover (at least) - but that may be related to it aligning more closely to with YAWL than BPMN.

I’d say that it’s a old problem that always needed solving (and has been solved in a variety of ways) but newer attention has more to do with how technologies (and some of the resulting methodologies) are being brought to bear on it (which often seem to center around the idea of obviating the need for getting analysts/developers/programmers (or acquiring the associated mindset) involved).

Is elixir something new or ideas from the 80’s (erlang f.e.) being updated or reused? And functional programming, how old is that? :wink:
BPM is not new, and it has had it’s evolution. For example the open standard modeling dsl BPMN2.0 was released in 2011. Plenty of info to be found with google if you’re interested.

Interesting, I’ll have to do some more research on the topic.

So currently the best way to implement bpm is to use Camunda as a service?

I’m also interested in bpe, their website says:

BPE is a production grade business workflow engine that is enough for managing automated procesess. It can substitute WWF, BizTalk, Activity or Oracle BPM for those who chose the basic features of workflow systems

It seems to be an small library, anyone used that?

I have no idea. Anyway I want these tools only as open source, and as dev tools. At least camunda has them that way. There may be others. I’m only using there BMPN and DMN modelers btw, the rest I wrote in elixir & javascript using phoenix.

I was thinking about BMPN and Behavior Trees (39) ElixirConf US 2018 – Behavior Trees and Battleship: Tapping into the Power of Advanced Data Structures – Jeff Schomay) and am curious about similarities/differences.

They both seem to model decisions and actions with data instead of code.

Is the main difference just that Behavior Trees have a background in video games while BPMN’s background is business processes?

I’m wondering if it would be doable to take a BPMN model file (I think XML?) and convert it to a behavior tree? I’m just curious if a BPM file is just a specific form of a Behavior Tree?

1 Like

I don’t know Behavior Trees . So I have no idea. You would have to google a bit or ask somewhere else maybe.

Behavior tree is interesting, I think at some distance this data structure can simplify business logic. A vocation request, for example, I drew 2 diagrams to demonstrate the similarity between them.


1 Like

In behavior tree:


But don’t know for complex business process, which is better.

1 Like

I’m building an OA system, it seems that camunda is the best choice as the bpm engine, but it’s too heavy, still struggling with the document. Hope to see a light weight or more advenced model for business process.

When you search for bpm on this forum you can find more on the subject, there are some pictures of processes and decision models also. Pictures and a short explanation you can find here too: https://www.linkedin.com/in/stefanhoutzager
When you only need a f.e. a bpmn subset you could remove menu-items etc. from the modeler, it’s open source. And you can build an interpreter for the xml’s in elixir.

The problem with BPM is twofold:

On the one hand, unless you are dealing with Camunda, BPM promises too much to the business people and fuels the notion mentioned elsewhere on this thread that developers can be replaced.[1]

On the other, due to this coupling of BPM with low-code platforms and “let’s replace the devs with business analysts,”[2] developers become very skeptical of the tools as it doesn’t make it look like real programming. And the BPM vendors’ perpetuation of the “sins” outlined by Bernd Rücker fuels the skepticism.

So the real question to be answered is, what problems does a BPM engine really solve?

BPMN diagrams enable communication, collaboration, and analysis with respective business stakeholders. However, this could also be done by an experienced designer (information architect) or business analyst using any diagramming tool of their choice. But we all know what happens to specs once the developers build the actual thing. The notion of living, executable, documented processes mentioned is desirable to the business.

The other problem BPM purports to solve is microservice orchestration. For Camunda, this repurposing of BPM warrants building a new product altogether. Netflix also built their own orchestration system, but without BPM.

So if you don’t need to solve any of these two problems, and are skeptical of BPM for the reasons mentioned above, then a lack of interest in the subject is perhaps understandable.

[1] And when they compare Camunda to other BPM solutions they think their offering is unimpressive, since Camunda—as you can see from Bernd Rücker’s blog posts—is very transparent about their product being primarily a developer tool.

[2] Again, as mentioned elsewhere in this thread, the lie BPM vendors sell is that BP modeling is not programming—it is.


I have little knowledge about BPM or model driven development or camunda, I’m curious about how these technology can achieve building business logic without writting code. If I’m using camunda, is it really possible to just let the administrator adjust the BPMN diagram and then the business logic changed without writting code?

There are a lot of discussions about the difference between workflow engine and business process engine, one reason of choosing bpe over workflow engine is that developers write less code to integrate with current system, but is that really true?

You might have seen model driven development before. Take for example a wysiwyg gui/form editor like in the picture below.

You maintain the form by dragging elements from a palette and you can edit properties per element. Mostly this is done by a developer, but someone else can easily learn to do some maintenance, easier than in a general purpose language. It’s easier for a developer also.
You will get requirements where you still have to write code in a gpl. Say you have a decimal input where you need a format that is not provided by your properties box. If it is a format that you need often for example it would be nice if you can change your properties box and write a keydown trigger yourself instead of hoping your toolprovider will be so kind some time.
Anyway, these modelers generate gpl code that is executable or data, often in json or xml format, that can be interpreted by a renderer. The code you write can be persisted in the json/xml at the client also btw, how it is persisted on the server can be your choice. Extra btw: the json or whatever can be created / manipulated on the server when a client request for a form comes in; to contain a record or language dependent labels for example.


Someone who has learned BPMN 2.0 would be able to, yes. Think of it as configurable glue code. BPMN 2.0 is actually an XML schema you adhere to, so your configuration is just an XML file. Technically, you don’t even need a diagram. It’s just a pain to handwrite XML.

What the BPMN modeler (diagram tool) does is generate the XML for you. And it inserts attributes into the XML so that the tool knows how to render all the shapes when you open it again.

For the BPMN model to actually be executable, though, you will need a programmer. They will configure the model to call a script or API of some sorts to actually do something for each task. (In Camunda at least. There are other tools that give you more functionality, as Stefan mentioned, like form builders etc.)

The BPMN is executable, but you can f.e. call webservices from servicetasks, for these you need a programmer of course. But as said, bpmn modelling is programming, only with blocks and arrows as signifiers instead of gpl statements. Bpmn is an “external dsl”.

1 Like

I tried flowable in my project, that’s awesome, greatly reduced my work, but sadly it’s written in java, I don’t know much about java, but using docker and run flowable as a microservice is enough for me.

Thanks for mention our library. This library synrc/bpe is deployed in PrivatBank, at page pb.ua/depozit along with synrc/nitro, synrc/forms. In the bank, we have around 200 business processes, and BPE scales pretty well. Although we are using BPMN 2.0 subset, it works out for us with timers, boundary events, and persistence. I wouldn’t say it is not actively supported, as paid support hasn’t stopped since 2013 and I usually reply immediately to all requests. Please let me know if you want to adapt this library (or any) to Elixir language.


Thanks for the infomation, I read the source of synrc/bpe but didn’t find how you implement exclusive gateway, Also are states in bpe task local? I mean like in flowable, variables can be accessed in task and process.