Today I was asked by a friend what the benefits of a workflow engine are. And this make me think about the ‘why’ we have started the open source project ‘Imixs-Workflow‘. When we started the project 15 years ago we developed a lot of business applications for a large company with a rapid development tool platform for groupware applications, still known as Lotus Domino. We called these applications ‘Back-Office-Applications’ because they dealt mainly with the management of administrative business cases. It was interesting that the most applications had relatively many similarities. Often, the basic question was: what kind of information must be processed by whom and what happened to this information so far? We outsourced these commonalities into a component library and started to develop a new kind of workflow engine.
A business application in common
A workflow engine is used to manage a general business case – called the business process or workflow – from the perspective of the user. If we are now talking about a specific business case we can see a common requirement of such kind of business application. The common questions are:
- What is the Information we need to process?
- Who is responsible for processing?
- How was the business process so far?
All these questions are not easy to answer. This is because the business process is often also not clear for the customer. Answering of these questions is the most important challenges in the development of a business application.
The “What” is to find the right wording to describe the process in general which is really important for a business case. The “Who” is a question which only can be answered when the organization behind the process is well known. And the “How” is an attempt to organize and document a usually very much chaotic process.
A Workflow System splits this questions into three general parts. The Workflow-Model is the descriptive way to define the business process. It gives the process a clear and understandable meaning. The Workflow-Engine is responsible for the routing of information. Depending on the workflow-model the engine can route a information from the current owner to the next involved actor. Routing means also to notify a user and track the progress of the whole process. The Workflow-Repository is the place where all process information is stored. This includes also a history of all changes and each processing step. This makes the business process transparent for all involved persons.
How to develop a business process?
From a technical perspective, it seems not very hard to develop such a system. But the real challenge is to develop the answers to the given questions above. When you start developing a business application and you ask the customer what he needs a typically answer can be
“We need an input field for a loan amount and two buttons with the labels ‘Reject’ and ‘Approve’.”
If you develop an application, this is a clear and unambiguous description of the requirement. But if you develop a business process you have nothing! To figure out how the business process behind really works you need to start to ask for the ‘WHY’:
Developer: “Why do you need an input field and two buttons?”
Customer: “Oh – we make loan approvals and we approve some and we reject a few.”
Now we know the business process:
But we still have questions:
Developer: “But why do you receive such requests?”
Customer: “We get these requests by our subsidiaries collecting them and forward it to us.”
We see that there a different responsibilities:
Developer: “And why must you approve them?”
Customer: “Depending on the circumstance, we must send them to management for further processing.”
And finally we have developed a first version of a business process.
This all happens also in a normal development process. But when you use a workflow engine you start to separate the business information (what) from the business logic (how). This is also known as pattern ‘separation of concerns’. Using the Imixs-Workflow Engine in such a project empowers the development because of the fact that all the business logic is encapsulated in the workflow model. Any changes of the business process should no longer affect your application development. You are now able to change the behavior of your application without changing one line of code. And this is the benefit of a workflow engine.
How to get started?
The Imixs Software Solutions GmbH is an expert in the development of highly complex business applications. Through the many years of experience in building such applications, Imixs supports customers in software development. On the basis of individual service contracts, Imixs supports clients during the design, development and operation of business application platforms based on the open source project ‘Imixs-Workflow’.