Everyone is talking about cloud technologies and of course every modern project relies on a microservice architecture. A variety of technologies and methods contribute to the success of this architecture pattern. But what does cloud native actually mean for the business world? How do companies and organizations implement business processes successfully beyond the big technology promises?
The basic idea of a microservice architecture is to break down the technical requirements of a software system into the smallest possible and therefore manageable services. The advantage: services created in this way can be developed independently of each other with different technologies by different teams. At the same time, we see new methods and technologies to connect, monitor and scale these services.
But just looking at the technology does’t mean that software can be developed faster and better. I would therefore like to compare some of these methods and technologies from the microservice architecture with the requirements for the development of business applications.
The new version of the open source project Imixs-Workflow provides an improved OCR integration and supports much more document formats.
With the upcoming release of Imixs-Archive v2.1.2, which is part of the Imixs-Workflow ecosystem, nearly all kinds of documents can now be analyzed on demand. The Optical character recognition (OCR) is based on the latest version of the Apache Tika project. The Imixs-Archive service detects and extracts metadata and text from all common file types (such as Word, PPT, XLS, JPG and PDF). All of these file types are parsed through an integrated microservice, making the data useful for fulltext search, content analysis, translation, and machine learning.
Even a snapshot taken with your smartphone from an invoice or a contract document can now be transferred to the Imixs workflow system in seconds. This makes the digitization of business processes even faster and easier.
With the integrated Workflow Management Suite Imixs-Office-Workflow your team can collaborate fast, clear and in a structured way.
Imixs-Workflow provides a modern microservice architecture. This means that you can integrate this solution into any container-based infrastructure such as Kubernetes. The Imixs workflow project already provides production ready Docker images.
With Imixs-Cloud we started a new open infrastructure project, providing a lightweight kubernetes cluster for small and medium-sized organizations. This projects goal is to build, run and maintain business applications in a production ready and self managed kubernetes cluster. The main objectives of Imixs-Cloud are simplicity, transparency and operational readiness.
The runtime environment is based on Kubernetes and provides an easy way to setup and maintain a medium-sized kubernetes cluster environment hosted on virtual servers or bare metal. The project is open source and constantly under development. You can join the project on Github.
The project contains information how to setup a kubernetes cluster on bare metal servers or cloud servers.
We are currently creating a completely new modelling opportunity within the Imixs workflow project. This new web based modelling approach is build on top of the impressive open source project bpmn.io.
BPMN Models created in Eclipse with the existing powerful Imixs-BPMN Modeller can be viewed and modeled directly in the web based modeler and vice versa.
The new project Imixs-BPMN.io is hosted on Github. The goal is to transfer more and more functionality from the Eclipse Platform to the web-based solution. We are only at the beginning and are grateful for any kind of support. We invite you to join the project!
With the next upcoming version of Imixs-Workflow 5.1.10 we will introduce the new Multi-Model Support. With this function, a long-running business process can easily be distributed into separate model files without having to split up a running process instance or create a new sub-process. This will make modeling much easier and clearer.
In difference to the the already existing feature of the Split Events, the model version can be changed within a running process instance by simply adding a link-event:
The outgoing event describes the new model version in the workflow result definition:
The Imixs-Workflow engine will execute the new event immediately within the new model and automatically assigns the already running process instance. The consistency of the process will be guarantied by the Imixs-Workflow Kernel.
This modeling approach is particularly interesting for long-running, complex business processes with multi-stage approval procedures because it significantly increases the maintainability and overview in such models.
Every year, the Free Software Foundation Europe (FSFE) encourages supporters to celebrate Valentine’s Day as “I Love Free Software Day,” a day for supporters to show their gratitude to the people who enable them to enjoy software freedom, including maintainers, contributors, and other activists.
We at Imixs support this initiative and encourage companies and organizations to pay attention to the value of free software.
The Imixs-Workflow engine has a build-in metric service which is based on lates vdrsion of Eclipse Microprofile 3.2. This metric service can be used to monitor the Imixs-Workflow engine and its running processes. The Imixs Metric Service provides fine-grained metrics to monitor individual business processes or even individual process steps within a specific workflow.
The Data format is based on the common Prometheus format and can be analyzed in real-time with different kind of Tools.
Howto Setup
To setup the imixs-metrics you just need to enable the metric service by a environment variable:
METRICS_ENABLED: "true"
The Imixs-Workflow engine will start automatically collecting all relevant metrics during document updates or the processing life-cycle of a custom business process.
The Metrics are available on the metrics api endpoint of the application server. For Wildfly this endpoint is for example:
http://localhost:9990/metrics
Next you can start a Prometheus Server to collect the metrics by using the following prometheus.yml file:
global:
scrape_interval: 15s # By default, scrape targets every 15 seconds.
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
external_labels:
monitor: 'imixs-monitor'
# Imixs-Microservice - payara metrics
- job_name: 'imixs'
scrape_interval: 5s
metrics_path: /metrics
static_configs:
- targets: ['imixs-workflow:8080']
# Imixs-Microservice - wildfyl metrics
#- job_name: 'imixs'
# scrape_interval: 5s
# metrics_path: /metrics
# static_configs:
# - targets: ['imixs-workflow:9990']
Note: that for wildfly the metrics_path and target port differs from the payara config!
This will collect metrics from the service endpoint ‘http://imixs-workflow:8080/’. Prometheus will scrape the metrics every 15 seconds and stores the result into its own database.
From the Prometheus Dashboard you can test the data within your web browser:
Monitoring Metrics with Grafana
To monitor you workflow you can easily connect your Prometheus server with a Grafana Instance. This allows you to visualize your metrics in an individual and more detailed dashboard.
There are a huge amount of functions available in Grafana to analyze and monitor data. You can also activate individual alerts to notify your process owner about the load of your business processes.
As always, the Imixs-Admin Client also shows insights how to build modern, lean web interfaces based on the Imixs Rest API. The new version is realized as a Single-Page-Application using the Imixs-Script library. The self-contained microservice can connect to any Imixs-Workflow instance via Rest. The backend also integrates the latest version of the Imixs-Melman sub project.
The project is available on Github. Imixs-Admin 5.1 will be evolved with new features in the upcoming releases.
We proudly announce out latest release of Imixs-Workflow. Version 5.1 is a big step forward on the road to greater flexibility and support for a modern microservice architecture.
Imixs-Workflow 5.1 introduce a new indexing concept that allows to provide different implementations for a full-text-search and structured-search. Now users can switch between the Apache Lucene Core search engine or the Apache Solr Search engine. Solr is a highly reliable, scalable and fault tolerant search engine. Solr supports distributed indexing, replication and load-balancing. Especially for a high scalable microservice architecture this search engine is the best choice.
Also the support for Eclipse Microprofile is now completed. With Eclipse Microprofile microservices and business applications can be developed faster and more resilient. Build on Eclipse Microprofile and Jakarta EE now Imixs-Workflow can be deployed on all modern application servers and is tested with Payara, Wildfly, OpenLiberty, TomEE.
Version 5.1. is already included in the latest version of Imixs-Microservice which provides a lightweight architecture for business transaction in a microservice environment.
With the latest version 5.1.0 the Imixs-Workflow project introduces a BPMN based Rule Engine.
The BPMN Rule Engine uses Conditional Events to evaluate a business rule. This is a powerful mechanism to describe rules in a BPMN model and evaluate a given workitem.
The BPMN Rule Engine provides an easy way to describe also complex business rules based on a visual model. The rules are evaluated as a chain of conditional events. The engine evaluates the data of a given workitem.
A single condition is defined in a conditional sequence flow. The conditional expression is based on JavaScript but other Script languages are also supported.
To initialize a BPMN Rule Engine a Imixs BPMN Model instance need to be loaded first.
The model instance can either be taken from a running instance of the Imixs-Workflow engine or loaded on demand from the file system:
// load BPMN model from input stream
Model model = BPMNParser.parseModel(inputStream, "UTF-8");
The workitem can contain any kind of data to be evaluated by the business rules. Internally the Imixs BPMN Rule Engine is based on the Core-RuleEngine which supports various script languages to describe a rule.
The example BPMN model can be downloaded from Github . Install the Imixs-BPMN Modeler to examine the example.
More details about the Imixs BPMN Rule Engine can be find on the project site.