Let Us Make ERPNext a professional workflow alternative for real business use cases, your ideas count

Hello @MichaelPinkowski

UML and BPMN serve very different modelling purposes. However, both are managed and cared for by the OMG group.

Simply search UML vs BPMN and you’ll have hours of reading!

In my mind, the biggest difference is that BPMN is executable! It is a programming language, for lack of a better analogy. In addition to the pretty picture of the conventional model, you also supply the necessary metadata for it to be executable on a process engine that complies with the BPMN standard.

I trust this helps.

3 Likes

Anybody ever heard of this:

License seems to be pure gnu without limitations…

And it uses BPMN for modelling workflows graphically.

1 Like

To be accurate BPMN is not executable, it is a Modeling Notation.

Typically, it is compiled to Business Process Execution Language (BPEL), a horrible XML based language, that is recognized by all the big Java frameworks.

Because BPEL and BPMN are designed separately, BPEL can be generated from something other than BPMN and BPMN can be compiled to something other than BPEL.

@MichaelPinkowski A good way to understand BPMN is “programming in the large”, as opposed to Python, Java, etc that are “programming in the small”. BPMN defines processes that can take months and involve people as well as machines. Programming in the small happens in a single machine and aims to complete in milliseconds (vastly over generalizing).

UML can serve as an initial design tool &/or a post-development documentation tool. It rarely keeps pace with actual software development. Initiatives to generate code from UML, (MDA), have gained little traction, since users respond much better to “User Story” type functional specifications on the one hand, and developers dislike the generated code, on the other.

BPMN has gained traction because it is aimed at a narrower audience, business process professionals; it’s a great explanation tool that also has the depth to be a software (BPEL) generation tool.

5 Likes

If we are delving into finding locating new workflow engines we’ll be here a while. I have gone down that rabbit hole and have yet to find the bottom! ( there is a nice list here GitHub - meirwah/awesome-workflow-engines: A curated list of awesome open source workflow engines )

When I was researching ERPNext and various other solutions, we considered building some django apps ourselves to implement our workflows. http://viewflow.io/ integrates well with Django and was one we looked at. Much more simplistic than Camunda but also maybe more approachable. Something like this might be a candidate for more direct integration (although now that I look I’m not sure about the licensing issues).

MOST of OUR business workflows will probably end up in a custom app anyway, which means we could add whatever workflow logic we need into it via Python. That will work but isn’t as elegant.

Appreciate this dialogue it is productive!

2 Likes

Hello @MartinHBramwell

Yes you’re absolutely correct, and I was quietly expecting someone to correct me sooner or later. However I could not do it as well as you did, so I’m very happy you did.

My company has been involved in Business Process Automation (BPA), as the major driving force behind Digital Transformation, since 2010. From a business point of view, in other words, end users defining, using and executing processes, I always loose them when I talk too technical. There are many caveats, half-truths and dangerous analogies scattered throughout this post. Yet they may make sense to a particular reader, depending on which hat you wear, and at the same time cause another to cringe.

As I’ve mentioned in an earlier post, we integrate ERPNext into process automation for a number of our clients, but it’s too external as far as the end user is concerned. They have to open separate applications to model and view the execution statuses of those processes. To have an integrated process management capability within ERPNext would be a dream come true.

3 Likes

Hi,
I just want to give you a better understanding of https://www.imixs.org/ as it was mentioned here in the context of BPMN.

Imixs-Workflow is a BPMN workflow engine to execute human-centric tasks. But workflow engines are addressing today a very wide range of use cases which makes it difficult to compare, as you can see in the endless list at GitHub - meirwah/awesome-workflow-engines: A curated list of awesome open source workflow engines

Imixs-Workflow is a human-centric workflow engine. This means the engine focus on a concrete business process executed in an enterprise by different participants. The main goal is to encourage human skills and collaboration in a model-driven way. In this way Imixs-Workflow can help to document the activities of a business process and to make it transparent for all parties involved. This is more about compliance guidelines and to ensure that operations at certain times can only be executed by authorized persons. For example something like an approval process according to the 4-eye principle. Typical uses case are long running business workflows like a purchase order, approving a budget plan, closing a contract or supporting a complex quality approval process.

This is different to most engines mainly trying to control your back-end tasks or even more technical engines controlling microservices, scripts, containers or CD processes.

The topic is unfortunately very confusing and I see very often that BPMN engines are compared with each other addressing very different concepts.

4 Likes

Just some cents here…

Zengine is a pure python BPMN engine, but it’s also an web-framework

It’s based on SpiffWorkflow, that is the most extensive python library, implementing many of the Workflow Patterns, described by Martin Fowler

The work of Martin Fowler is available here
http://www.workflowpatterns.com/

Loonflow is at the same level of Django-River, they are implemented in Django, but define most of the patterns needed for business workflows, with a big differenciation against Django-ViewFlow, they are basedly on top of configuration, instead of code

LiteFlow is an Simpler Workflow Engine, with many interest features, like integration with Redis and MongoDb, but lacks an web-api to handle, also, most of the workflows should be defined by code.

Like LiteFlow, PyFlow, is a extreme liteweight workflow engine, with support of distributed tasks in Python

These are the most interesting and resourcefull workflow engine (where some implement support to BPMN, or can be used to), that I have been collecting in the years.

5 Likes

After doing a bit of research I also thought SpiffWorkflow seemed like it might be a good choice as a simple “code only” integrated option. It does not have a fancy GUI, monitoring or external interfaces but is well abstracted. For implementing simple workflows inside ERPNext it might be a straightforward choice.

Lots of different requirements here. I think one of the few commonalities between users is that no one has found the existing system to serve their needs at all!

2 Likes

I agree with you, it’s a standalone solution. IMO, what szufisher idea is common case in second develop phase. Frappe need a strong workflow enginee(key feature of low code is dynamic form&workflow).

2 Likes

Any updates from the community on the implementation of business process management? It seems many people were interested in this / had already started implementing some things…

4 Likes

There is a complex scenario. In the process of workflow processing, we usually need to control the state of records, which is usually used in manufacturing scenarios. eg. A user created a Hold from, it has been confirmed by his leader, then the user want to hold (Not cancel) the form, expect that the form will not be process until it be released.

is it normal? I founded that Microsoft workflow, only one is supported.

2 Likes

@szufisher
cc @rmehta

I think the proposed PR a really necessary one, current workflow features is not enough for the real world situation. https://github.com/frappe/frappe/pull/7866

I am curious about the current status about workflow, are there improvement elsewhere? How do you handle your real world case now?

Note: I can understand that, Frappe might want to keep its workflow simple enough for everyone / small companies. If that so, I am willing to try create custom module for some extended feature.

Thanks !

2 Likes

to be frank, till now there is still no paying customer who need complex workflow feature, so I got no dedicated time to continue the abandoned PR so long time ago.

anyway, if the core team decided to pick it up, I can help to do testing and code review as needed.

4 Likes

Hello was there any update on this PR or does anyone have any other workarounds? Did anyone integrate any other third party APIs to ERPnext for workflow approval?

I think you’ll find this link from Frappeverse 2023 interesting (at 2:31:22 if I copy this wrong):

3 Likes

the workflow builder feature in V15 is nice to have feature, but not the enhancement I proposed.

5 Likes

We’ve done a great deal with SpiffWorkflow over the last few years, it’s been a full time development effort for us since 2020. We are about to release a new version of the core library (early February 2024) - we’ve revamped the documentation - and we’ve build a complete workflow orchestration system on top of the core library that is also a pure python environment. More information on spiffworkflow.org

3 Likes

Hello I just have to revisit this thread again for my real project requirement.

My challenge is that, a Document from Employee need to get approved by Employee’s Department Head.

The current workflow only allow us to specify a fixed Role and not dynamic Role. To make it work, we need to create a lot of transitions equal to the number of departments, each of which require a condition for a department.

If we have 100 departments, we need to create 100 transitions also to revise the workflow when there are chagnes in departments. This is not working for me.

I have create a new module (my intention is better to include in the core), that do the following,

  • Change field “allowed” to virtual field, that compute from,
  • Fixed Role as normal,
  • Or a Formula Role as following,

It works for me so far. Here is the module if you want to try out.

Also I open issue in github

4 Likes

@szufisher what do you think about the proposed role formula? Though not complete as per your proposal.

There seem to have much less interest on this topic, I wonder how the current workflow features enough, or how others solve the problem.

taking first steps: feat: flow tracing by blaggacao · Pull Request #27944 · frappe/frappe · GitHub

At this stage, only in-depth technical feedback please on the PR.

2 Likes