Open-BPMN for Visual-Studio Code

Today we released version 1.0.0 of Open-BPMN for Visual Studio Code.

Open BPMN is a free and open modeling platform to create and maintain business models based on the BPMN 2.0 standard. Open BPMN can be used by business analysts to design a top level business process, as also by architects and developers to model the technical details of complex processing logic. Further more, Open BPMN provides an extension mechanism to adapt the modeling platform to the individual requirements in any business process project.

Open-BPMN can be installed from the VS-Code Marketplace or as VSIX extension.

The goal of this project is to provide an open and extensible graphical BPMN modelling framework for an agile and innovative community around the BPMN standard.

Extensibility

BPMN 2.0 introduces an extensibility mechanism that allows extending standard BPMN elements with additional properties and behaviour. It can be used by modeling tools to add non-standard elements or Artefacts to satisfy a specific need, such as the unique requirements of a vertical domain, and still have a valid BPMN Core.

One goal of Open BPMN is to not only provide a graphical modeling tool, but also to allow developers and independent projects to easily customize the behaviour and appearance of the editor for specific BPM workflow engines that use this BPMN 2.0 extensibility mechanism.

Open Source Workflow Engines like Imixs-Workflow integrate Open BPMN into there tooling platforms and extend the core features of BPMN 2.0 with platform specific functionality.

Learn more about Open BPMN Extensions.

Web Based BPMN Modelling

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!

Monitoring Imixs-Workflow with Grafana

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.

New Imixs-Admin Client V5.1

Today we released the next version of the Imixs-Admin client Tool. Version 5.1 has a new UI based on Vue.js and runs on Payara Micro.

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.

Imixs-Workflow 5.1 Released!

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.

See the latest release notes.

BPM with Apache Kafka

The Imixs-Workflow project supports now a native integration Adapter for Apache Kafka. With this feature asynchronous messages can be handled within a complex business process.

Apache Kafka is a distributed streaming platform. This means you can publish and subscribe to streams of records, similar to a message queue or an enterprise messaging system. Apache Kafka store streams of records in a fault-tolerant durable way and process streams of records as they occur.
Kafka is generally used for two broad classes of applications:

  • Building real-time streaming data pipelines that reliably get data between systems or applications
  • Building real-time streaming applications that transform or react to the streams of data

The Imixs-Kafka Adapter integrates Kafka in a native way and allows the producing and consuming of Imixs-Workflow Messages.

Workflow Message Autowire

With Imixs-Kafka you can easily setup a scenario where Workflow Messages are generated automatically during the processing life-cycle. With the Autowire-Function new process instances are send into a Kafka Message Queue so that any consumer interested in workflow events can consume the message and react in various ways.

The Adapter filters Workflow events by the Model Version number so you can control which kind of workflows are send into a message queue.

Workflow Messages based on Business Logic

Another way to send Workflow Messages into a Kafka queue is the Imixs-Adapter Class. This implementation is based on the Imixs-Adapter concept and allows a more fine grained modeling of an asynchronous service integration. The Imixs-Kafka Adapter can be configured directly in a BPMN 2.0 Model.

This modeling approach allows you to setup complex workflow scenarios with a asynchronous communication.

Sending Workflow Events With Kafka

The other way to integrate Imixs-Workflow into a Kafka infrastructure is to send Workflow Messages to a Kafka queue to be processed by the Imixs-Workflow Instance. In this way a client sends a Process Instance with a predefined topic into a Kafka Message queue.

Imixs-Workflow will automatically consume those messages and process the workflow data. In this way messages can be used to trigger the event-based Imixs-Workflow engine. The following example shows how a client can send a workflow event for a named topic:

String json_workitem = "{\"item\":[ "
+ " {\"name\":\"type\",\"value\":{\"@type\":\"xs:string\",\"$\":\"workitem\"}}, "
+ " {\"name\":\"$modelversion\",\"value\":{\"@type\":\"xs:string\",\"$\":\"1.0.1\"}}, "
+ " {\"name\":\"$taskid\",\"value\":{\"@type\":\"xs:int\",\"$\":\"1000\"}}, "
+ " {\"name\":\"$eventid\",\"value\":{\"@type\":\"xs:int\",\"$\":\"10\"}}, "
+ " {\"name\":\"txtname\",\"value\":{\"@type\":\"xs:string\",\"$\":\"test-json\"}}"
+ " ]}";
ProducerRecord<Long, String> record = new ProducerRecord<Long, String>("IN-1.0.1", json_workitem);

Microservices with Kafka and Imixs-Workflow

The Imixs-Kafka Adapter is a powerful feature to integrate Imixs-Workflow in a Microservice Infrastructure based on Publish-Subscribe Messaging Queues. With Apache Kafka a fault-tolerant and scalable messaging platform can be adapted to Saga Transactions based on a BPMN 2.0 model.

If you have any questions or your need help to integrate Imixs-Workflow into your Microservice Architecture you can join the project on Github.

Imixs-Workflow 4.5 Released

Today we released the new Version 4.5.0 of Imixs-Workflow. The version now has a full support of Java EE7. The release also includes also several improvements in JSF components and The Rest-API. Here is an overview about the latest changes:

New Features

  • The XMLItem now supports mixed value lists
  • New Extend FileData Object with custom attributes
  • LuceneUpdateService – provides a new ItemAdapter class to improve the extension mechanism
  • Full Java EE7 Support
  • Performance improvements for the imixs-faces module
  • RestService supports now custom reports to open spread sheets

Enhancements

  • JobHandlerRebuildIndex – allows to overwrite the Block_Size and Time_out
  • MailPlugin – Performance improvements

Bugfixes

  • WorkflowKernel – fixed computeNext Task – conditional Events computed correctly after changed conditions

A data migration is not needed. Existing applications can switch directyl to 4.5. Only JSF modules should adapt the new JSF Controllers. You can find details here.

Simulating Workflows

With the new project Imixs-Mock  you can now simulate your Imixs-Workflow BPMN models in an easy way. The project provides a full mock of the Imixs-Workflow engine and allows to test and simulate different workflow scenarios. Imixs-Mock simulates the full processing life-cycle including all workflow plug-ins. You can specify also a subset of plug-ins to test specific business logic in your workflow project.

To add the mock into your own workflow project just add the following dependencies:

<dependency>
  <groupId>org.imixs.workflow</groupId>
  <artifactId>imixs-mock</artifactId>
  <version>4.4.0</version>
  <scope>test</scope>
</dependency>
<!-- JUnit Tests -->
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.8.1</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.mockito</groupId>
  <artifactId>mockito-all</artifactId>
  <version>1.9.5</version>
  <scope>test</scope>
</dependency>

Now you can write your jUnit test class to verify your BPMN model. See the following example code:

@Test 
public void testSimple() {
  workitem = new ItemCollection();
  workitem.model("ticket-workflow-1.0").task(1000).event(10);
  workitem.replaceItemValue("_subject", "Hello World");
  try {
    workitem = workflowMockEnvironment.getWorkflowService().processWorkItem(workitem);
    Assert.assertNotNull(workitem);
    Assert.assertEquals(1100, workitem.getTaskID());
    Assert.assertEquals("manfred", workitem.getItemValue("namowner", String.class));
  } catch (AccessDeniedException | ProcessingErrorException | PluginException | ModelException e) {
    e.printStackTrace();
    Assert.fail();
  }
}

The Imixs-Mock allows you to simulate different users processing a process instance. In this way you can verify the Access Control List (ACL) of a process instance and the assignment of process owners in complex workflow scenarios.

You will find the full example on Github.

Imixs-Workflow – Support of Nashorn JavaScript Engine

With the next release of Imixs-Workflow (3.6.0) the open source workflow engine will support JDK 8 and the new JavaScript Engine Nashorn. The JavaScript engine supports the ECMAScript 5.1 specification. This allows to use new features when executing scripts from the Imixs RulePlugin. The Imixs RulePlugin is part of the workflow engine and allows the execution of business rules defined in a BPMN model. You can find more about the Imixs RuleEngine here. Read also the Rhino Mogration Guide for more details about the new capabilities of the Nashorn Script Engine included in JDK 8.