The IT world has long since evolved beyond simple websites with static content. Nowadays, websites are often complex apps that comprise hundreds of components created by dozens of development teams. Those components, also known as services, operate under the hood, are invisible to end users, and process complicated business logic. When a user clicks their purchase order, they have no idea what’s happening underneath the UI. And a lot can happen there, especially since microservices-based architecture has become the dominant system architecture. Click here to learn more about microservices. You can also visit our blog and read the Essentials on microservices – 10 features of an effective architecture article.
Business vs. developers
Forget about what users see, for now. Let’s talk about development teams and businesspeople that cooperate with those teams. Misunderstandings between developers and businesses are something natural. A business is usually not familiar with technicalities, and a developer is not fully aware of what the business expects, which functionalities generate profit, etc. That whole situation is best illustrated with this picture:
But does it always have to end this way? Maybe there is something you can do to prevent it?
Common language – BPMN
How can you make a business understand what’s going on in a system? By showing it to them!
This is where business processes or, more accurately, their automation comes in. A programmer might say: “Hey, we already automate some processes in our code,” and they’d be right. But will their explanation of post-registration customer permission granting process be understood by the business, by non-tech-savvy people? “So, we get a registration event from X, we ask through API in Y service, and if the status is true, we grant access. Otherwise, the event is sent back to DLQ”. The business might pretend it understood all that, or ask for a translation to simple English.
But what if you could replace an explanation with a picture? After all, we know that:
A picture is worth a thousand words.
But what should this picture be? A flowchart? While that may be clearer, it’s still going to include technical jargon. And how can you show, in real time, at which stage of the process your client is at a given moment? That’s not a good solution.
Enter BPMN. It’s a graphical notation that’s easy to get the hang of and greatly facilitates communication between techies and non-techies. Here you can see for yourself how easy it is to build a process like this (online).
Example of a transformation of the abovementioned process into BPMN:
How about automation?
However, a consistent language is not enough. You also need an engine that would automate business processes.
We chose the Camunda engine. Currently, we are the only certified partner of Camunda BPM in Poland. So what’s the rationale behind this selection? The engine itself is actually based on Activity, an open-source tool. But Camunda kept developing it independently, and now they are one of major players on the market. Most importantly, the engine is still a free tool. It has many convenient features, including the cockpit, support for popular programming languages, decision tables, and process optimisation capabilities. Also worth mentioning is the Camunda community, like the Camunda BPM forum, where you can always get help with any question or issue.
So what can Camunda do?
One of the key capabilities is asynchronous communication with external services via External Tasks. You also have User Tasks, which are essentially a reflection of human interaction in business processes. Once the process reaches the right stage, it waits until someone confirms task completion (e.g. when a package is ready to ship in an order simulation process). Timer Events are also very interesting. Need to send a reminder to a customer when they’re late with their payment? Camunda performs this role perfectly! These are just a few examples of many solutions. With Camunda, you can easily meet stringent business demands and present them in a clear way.
Business wants to see
By giving the business access to the aforementioned cockpit, you’re giving the non-tech-savvy people in that business a way to easily manage processes, effectively expanding their perspective. When the business can view its own business processes, you give them access to loads of essential information. The business can find out—without asking the developers (who are usually forced to then sift through app logs if they don’t have a process engine)—why their system behaved in a certain way. Add a live view of process instances and the ability to check at which stage of a process your client is at a given moment, and you have a very business-friendly tool.
More advantages of a BPMN engine
What else can Camunda help with? This may sound like a paradox, but with complex processes you sometimes encounter situations that should not be automated. Those include edge cases that are extremely rare and would be very costly to implement if you wanted to automate them. Thanks to User Tasks, Camunda helps with this, too. All you have to do is build a process that identifies problem cases and forwards them to be handled manually by someone with better business knowledge. A task list helps in assigning tasks to specific people.
Errors – how can you know when something went wrong?
Camunda has an answer to this problem, too. Incidents! After opening a cockpit, you can instantly tell which processes were stopped due to an error. Resuming a process after an error is also done from the cockpit. It’s child’s play! Monitoring status of processes is equally easy. Read: IT Monitoring, your good friend! to learn about its importance.
BPMN vs. programmers
But does Camunda offer anything useful to developers? Doesn’t it just create additional work for them, since besides writing the code (which is unavoidable anyway) they also have to create processes as BPMN? Well, it turns out that programmers can also benefit from Camunda. The cockpit and display of processes and their current states is already helpful. The development team can instantly (and without checking the logs) pinpoint a situation and an exact location where an external service is malfunctioning and processing queries incorrectly. Developers can immediately inform the responsible team that something’s wrong. What’s more, you can stop all processes from sending requests to a malfunctioning service with just one click.
The power of decision tables
Camunda also supports the DMN standard, or decision tables. Developers often receive business requirements in the form of spreadsheets where a number of variables must have specific outcomes. By using DMN, you can convert such requirements directly to decision tables (e.g. by using the XLSX file converter to DMN), without the need for a ton of conditional instructions and complex strategies in your code. Imagine a scenario where you have to change business requirements. Instead of diving deep into the code, you simply change certain values in an easy-to-read table. This method is much faster, changes are easier to implement, and tests are a trifle.
Naturally, these tables are also available to the business via the cockpit (they can even be editable). This is another advantage of DMN.
To sum up…
Camunda is a powerful tool. It’s impossible to cover all it can do in a single blog entry. Of course, like all tools, it still has its shortcomings (nothing is perfect), but it’s comparatively easy to expand and adjust it to your needs. After using Camunda for about 2 years, I can assure you that it is a very handy tool. It’s useful both for programmers (because it only takes one glance at a process to have a rough idea about what’s going on inside it) and businesses we closely cooperate with. I have noticed that it creates tangible value for businesses and relieves some of our workload as programmers.