BPMN 2.0 – The Extension Mechansim

The ‘Business Process Model And Notation’ standard is a well designed notation for describing business workflows. BPMN 2.0 becomes the standard for modeling business logic and fits very well the model driven software design in agile software projects.

The BPMN language, which is based on XML, was intended for users at all levels, from the business analysts who create the initial design, to the developers who implement the technical details, and finally, to the business users responsible for managing and monitoring the processes. BPMN 2.0 has evolved to become a complete specification trying to fit the needs to all people involved in the design of a business process. But writing BPMN in XML and visualizing business processes becomes nearly impossible without the use of a graphical tool.

Continue reading “BPMN 2.0 – The Extension Mechansim”

Lucene Index Consistency

With the latest version of Imixs-Workflow we support now a consistency Lucene search index coupled with the Java EE container based transaction concept.

Writing a Lucene Index during a Java EE transaction, coupled to JPA database operations, it becomes quickly difficult to keep the Lucene index consistent. The reason is that a lucene index can become inconsistency if you write the lucene index within a long running Java transaction. In case the transaction fails lately, there is no way to roll back the already written lucene index automatically. This is different to the build-in roll-back functionality of a SQL database which is only writing new data in case the transaction succeeds. Also clients reading the index before a running transaction is closed will read uncommitted index data which will lead to wrong search results. Continue reading “Lucene Index Consistency”

You Shouldn’t Manage Your Business Processes With Excel

Why do employees in companies repeatedly use Microsoft Excel or PowerPoint to manage business data and tasks?

Companies today have a variety of business applications in use. Some for legacy reasons, some for strategic reasons and some just because they are hip and make fun. And most of the times, these applications are not enough to cover all aspects of daily working life. A lot of tasks and data that need to be processed on a daily basis are often managed with EXCEL and POWERPOINT. This is not wrong in general and provides employees a way to prepare business figures in tables or display them clearly in a presentation. But often these applications are also abused for a kind of data management. But EXCEL is no database and POWERPOINT is not a messaging tool.  The problem is, that these tools often collect data that is needed to implement certain business processes and for which there is no suitable application available. In a short time, these solutions become indispensable and are passed down from generation to generation.

 

 

Continue reading “You Shouldn’t Manage Your Business Processes With Excel”

New Workflow Rest API

With the next minor release 4.3. of Imixs-Workflow, which will be released shortly, the Open Source Workflow Engine supports a new Rest API. The new API is easier to apply. The result data output is mashed and  now always the same structure. This makes client implementations cleaner and easier to implement. At the same time, all functions of the human-centric workflow engine can be used via one common Rest API.

The old API is also still supported by the Imixs-Workflow engine. The old API can be used with the version prafix /v40/ in the request path.

Learn more about human-centric workflow here.

Imixs-BPMN – Data Objects

With the latest version 4.2.5, the Imixs-Workflow Engine, is now supporting BPMN Data Objects. This kind of model element can be used to model more complex wokflows processing input data:

With this new feature any kind of data object – e.g. a XML or HTML templates – can be associated with a BPMN Task. As a result, the task element will provide these data objects in the new item ‘dataObject’. This item can be injected into a running process instance. See the following code example which is injecting a ‘Invoice HTML template’ into a workitem:

...
ItemCollection task = model.getTask(1000);
List<List<String>> dataObjects = task.getItemValue("dataObjects");
if (dataObjects.size()>0) {
    List<String> firstDataObject = (List<String>) dataObjects.get(0);
    String templateName = firstDataObject.get(0);
    String content = firstDataObject.get(1);
    logger.info("DataObject name=" + templateName);
    logger.info("DataObject content=" + content);
  }
  if ("Invoice Template".equals(templateName) {
    // inject data...
    workitem.repalceItemValue("htmldocument",content);
  }
}
....

DataObjects are part of Imixs-Office-Workflow Version 3.2  to provide an easy and flexible way to create documents and templates during a business process.

Imixs-Cloud – a Lightweight Docker Swarm Environment

The Imixs-Project started the new subproject Imixs-Cloud.

Imixs-Cloud is a conceptual infrastructure project, describing a way to create a server environment for business applications. One of the main objectives of this project is to focus on simplicity and transparency. The general idea is to setup a lightweight docker based infrastructure with docker swarm. Within this infrastructure business applications like Imixs-Office-Workflow can be deployed in a fast and easy way.
Imixs-Cloud is developed as part of the Open Source project Imixs-Workflow and continuous under development. To contribute to this project please report any issues here. All source are available on Github.

JSON Web Token and JASPIC

The Imixs Project started a new JSON Web Token project called Imixs-JWT.

Imixs-JWT is a compact easy to use library to generate and verify JSON Web Tokens. The library is based on maven and can be add with the following dependency available from Maven Central:

<dependency>
 <groupId>org.imixs.jwt</groupId>
 <artifactId>imixs-jwt</artifactId>
 <version>1.0.0</version>
</dependency>

The following example shows how to build a JWT in Java:

import org.imixs.jwt.*;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.SecretKey;

...
// We need a signing key...
SecretKey secretKey = HMAC.createKey("HmacSHA256", "secret".getBytes());
String payload="{\"sub\":\"1234567890\",\"name\":\"John Doe\",\"admin\":true}";
JWTBuilder builder = new JWTBuilder().setKey(secretKey).setJSONPayload(payload);
System.out.println("JWT=" + builder.getToken());

// will result in:
// eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
// eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.
// TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

JASPIC Auth Module for JWT

The project also provides a JASPIC authentication module. JASPIC is an authentication standard and can be used in Java EE application servers. The module was tested with Wildfly 10 and can be used also with different application servers.