Many developers are still sceptical about the benefits Business Process Management (BPM) systems and workflow engines. BPM visionaries and management executives seem unable to pass their enthusiasm about BPM to developers. In a couple of blogs, I will show what the essence is of this technology and how developers can take advantage of it. In this first blog, we’ll sketch the context of BPM and what it brings to the table for developers. Then, in the next post, we’ll show the limitations of the JVM that BPM solutions are trying to resolve. Further blogs in this series will clear some of the myths and misunderstandings about BPM.Especially the relation between BPM and integration is often misunderstood (even by many of the BPM vendors:-). Also, we'll cover BPM in relation to other buzzword technologies like SOA, ESB, Orchestration, and BPEL.
Opinions on BPM systems
Opinions on the necessity of BPM systems vary from “It’s always necessary... I couldn’t write software without it” to “up to now, I was able to implement my requirements without a BPM system so I don’t see why I would need one”. So I think it’s time to learn about what BPM is, what the typical myths are and how developers can benefit from it.
First, let’s look at the most cited pros and cons. The most often heard benefit is business process agility. But for a typical developer this gets interpreted as “PR-fluff”. In this series of blogs I want to show that there are actually some real benefits for developers as well.
Most often heard disadvantages are:
- “I don’t know it, so I don’t like it” ok... let’s do something about that with these blogs
- “I just have simple workflow requirements, a workflow or BPM engine is overkill for me” This is because BPM systems tend to be a pain to integrate in simple web- and other applications. Also there is this myth that BPM has to be build on top of XML and web services technology. Working with WSDL, XML and web services is indeed not very light-weight, but what a few people seem to know is that the BPM features can be offered in a plain Java environment *without* any dependency on WSDL and related service oriented technologies. It is a matter of focus. In JBoss jBPM we chosen resolute for simplifying BPM on the Java platform. Offering all of the BPM features in an easy accessible way for the Java developer, ranging from the simplest applications, over common web applications all the way up to a high-throughput, clustered server solution.
To put all of this in the right perspective, we are going to start with a look at what BPM is and in which context it can have significant advantages for Java developers.
Explaining Business Process Management (BPM) makes more sense if we start with providing a working definition of a business process : A business process is a recurring procedure in an organisation to achieve a goal.
Without explicit management, business processes tend to grow organically. New procedures have to be created or invented. Mostly, this is done informally, without documenting or thinking about it. Basically, people that are concerned with the goals of the organisation, do a set of activities in order to reach the organisation goals. When many of those activities start to be done frequently, we can speak of a procedure.
After procedures are formed, small local changes occur quite frequently. Many small local changes to procedures can lead to overall inefficiencies. BPM can now be defined as the effort to improve the efficiency of an organisation by examining and improving the procedures that are used to reach the organisation’s goals.
IT can improve efficiency of business processes
In this section, we’ll explain how the above definition relates to the process management and workflow software packages that can be found in today’s market.
In current midsize and large organisations, there is a large amount of information that needs to be processed to execute the business processes. So the big opportunity is to make this processing much more efficient with proper use of IT technology.
Developing software for supporting business processes in *not* different from any other software development. So what is then the purpose of the BPM and workflow solutions out there, all with graphical designers and special runtime servers ?
Current Object Oriented Programming (OOP) languages are not very suited for defining long running processes. For example the handling of an order through an order processing system. There are many different automated steps in processing one order through the system. In traditional OOP, the state of the order has to be managed manually. What this means is that the developer must add a field in the database that reflects the current state of the order. This state must then be checked and updated in every request related the order. Especially when multiple concurrent paths of execution are involved, this can be complex to think about and hard to debug.
Developers should care
Managing the state of long running processes is the key feature why Java developers should care about BPM systems. It abstracts the state management from the business logic and relieves the developer from a tedious and error-prone job. With this capability the developer can structure the software around the overall process (e.g. the order process). This brings the software design much more in sync with the software requirements.
Another reason why developers should learn about the BPM technology is the automatic audit trail logging that is included in all the BPM engines. These audit trails provide detailed information about each step in each process. These process logs plus the statistics that can be derived from those logs gets a programmer from the BPM system as an extra. Note that the statistics are highly valued by managers since it allows them to detect bottlenecks and inefficient steps in the processes.
The next blogs in the series will dive deeper in the missing features of OOP languages and how we can make the BPM feature set easily available to Java developers.