I’d like to start a new topic on BPMN integration. Going by my own experience it’s rather a controversial topic and there are those who considers BPMN systems to be evil (with the capital E) and those who advocates its using.
Recently I have read a lot of thoughts on the topic, primarily by Camunda’s co-founder Bernd Rücker, and should admit it’s quite obvious that BPMN is still alive and keep going forward. Among others Camunda seems to be by far the best option in the market at the moment (at least in its OSS part), providing not only BPMN but CMMN as well as DMN.
So in what cases we need something like BPMN and what consequnces this brings? There are several of them, say handling integration timeouts and error logic, sagas and so on, but I’d like to focus on the most obvious and essential one.
Once an application has to deal with something more complex than CRUD functionality, a sort of state (hello STATUS fields) and a state-machine emerge. Based on that status we program our logic – i.e. reinvent a wheel, actually. We can adopt BPMN at this point and this works well with Activity based current
bpm-addon. Using it we can start a bound process which holds the state and is executed by an out-of-the-box workflow engine.
Here we can spot some shift from the user perspective. Before processes arises there were only domain’s root entities (AKA agragates) to think about. If users needed to perform an operation with an order, let’s say, they just got an
Ordersscreen, found a particular order, opened it (or choose another operation) and, likely, they were able to do what they want. In reality the much more common case is that user needs to open several screens and has to switch between them in a rage to be able to do the job.
In the case with a process being executed everything turns out to be slightly different. With a great probability a process knows the task user has to complete at the moment. There is no more reason for a user to realize that they should get a menu item and go to screen X or Y or maybe Z. There is just tasks in some folders and all they need is to probably claim it and then run it. Going by reports this approach could boost throughput significatnly.
So we have some topical questions:
Shall the prospected addon provide a convenient way to implement that task’s UIs in a common, safe and preferrably declarative way?
How shoud common UI evolve to reflect this shift?
Is it all in question worth considering or not?