The Open Source Workflow Project Imixs-Workflow has started in 2007 with the beginnings of the new Java EE platform. From then until now, th Java Enterprise Platform has evolved dramatically and is today, with its current version v7, a robust and widely used enterprise architecture.
Why is it so important to our Open Source project to build on Java EE?
Stable and constantly evolving…
When you run an open source project over several years, it is important that you can trust into technology and stability. Since 2007 we have worked in many projects for different customers on several server platforms. In the beginning, we started with the first release of the Glassfish Application Server V2. We also worked with the new upcoming server technologies from other open source projects like the Apache TomEE project. And today we are working mostly on JBoss/Wildfly servers with Java EE7 running on Open-JDK 8.
With the Java EE specification this all is possible with one code base! The code is build on well defined standards and runs on all server platforms. This is not only useful for the development, where you need a small and easy to manage application server, but also in the customer’s production environment, where different operating systems and server solutions are used.
In spite of this, the Java EE platform has developed steadily. Today we have a easy to use framework with a modern programming language. In our project, we recognize this when we review older code blocks from time to time. With the evolved concepts of ‘Convention over configuration’ we simply drop a lot of deprecated code and the same application works faster and better than before. That’s is one of the cool features of an architecture that is constantly evolving.
Scalable and Transactional
Imixs-Workflow is an human centric workflow engine. In the area of business critical process management you have to handle a huge number of long running process instances. These instances need to be monitored, escalated, and routed to many different employees, customers and suppliers over a long period of time. We are talking about operational times of several years. In this scenario you need to scale the application without reimplementing. With Java EE architecture your application scales easily, because the application server is scaleable. Not only database cache levels can be controlled, also EJB pool-size and thread pools for each aspect of your application can be configured on the server side. For our workflow engine this means, that we don’t need to change a single line of code or implement pooling and caching strategies by ourself.
Another important aspect for business applications and BPM in particular is transaction control. During a business process, a workflow engine often interacts with many data objects and different external systems and services. Transaction control is a core requirement for a business process. Each plug-in or service need to join a single transaction, to guarantee the consistence of the business process. In Java EE transactions are a build-in core concept. This means, we can easily call different service beans (EJBs) in one processing phase, without thinking much about all the stuff how to roll back and restore data in case something unexpected will happen. The transaction feature from Java EE makes it easy to develop robust modules and services in less time and less costs.
With the Java Persistence API (JPA), which is part of the Java EE specification, you don’t need to handle database connections by yourself. Java EE is database vendor independent. For our workflow engine this means, that we can connect the engine to any SQL Database our customer is running. We do not need to install new databases servers of one specific vendor. In addition Java EE provide another important feature – database-pools. In Java EE a database connection is abstracted by the database pool. And this pool can be easily injected as a JNDI resource into the code. With this concept, the behavior of the database is completely decoupled from the application and can be configured in many aspects from the Java EE Server. This again makes it easy to scale or switch to another database server without changing the application.
When we talk about human-centric-workflows, this means that business data is handled and routed by the workflow engine to different users (called actors). A workflow engine has to ensure, that sensitive business data can only be read and processed by certain actors. Therefore it is important, that users can be appropriately authenticated. With the Java Authentication and Authorization Service (JAAS) the Java EE platform provides a powerful security service. Users can be authenticated and authorized within a standardized way. This means, that different authentication solutions can be used for one and the same application. It is irrelevant whether the customer is running a custom user-database, an open-source LDAP directory, or a Microsoft Active Directory. It is all managed by the JAAS framework. And in fact, there is not a single line of code in Imixs-Workflow, that deals with authenticating a user. This is all the more surprising, as Imixs-Workflow validates each call, both statically and dynamically for a variety of permissions. For example you can define additional access levels to a certain business process via the BPMN model, without changing the application code base.
The Imixs-Workflow project has evolved over several years and has been following the Java EE standard from the beginning. As a result, we were able to work with a stable code base and benefit directly from a multitude of modern software concepts. Some code of the Imixs-Workflow project has not changed over the years, other code was simplified by introducing new and modern language concepts within the Java EE platform.
With the open standard of Java EE we are able to run our workflow engine on different operating systems and server platforms. For our customers this means that they do not need to install new technology or learn new concepts if they are still running on Java EE.
With the next upcoming major release of Java EE 8, we can look to a future, which opens up many more new opportunities for our community and our customers. And Imixs-Workflow will run on it!