Understanding the Key Concepts of Process Integration

DZone 's Guide to

Understanding the Key Concepts of Process Integration

Integrating your business processes can be a challenge if you are not up to speed on the key concepts. We'll help by exploring those key concepts...

· Integration Zone ·
Free Resource

Integrating your business processes can be a challenge if you are not up to speed on the key concepts. We'll help by exploring those key concepts and use an open technology for our examples, a project known as jBPM.

Since jBPM 5 when the Drools project and jBPM project started working together, a new project group name was defined: Knowledge Is Everything - KIE. Since then, the name KIE spread to git repositories, Maven archetypes, class names, and all the rest of the relevant code that is common to Drools and jBPM.

The projects, Drools, Optaplanner, and jBPM are available at https://github.com/kiegroup

A kie project is a Java project, maven based, that gets compiled into a . A kjar is a simple jar file, configured with the following in maven settings, inside the pom.xml of any kie projects:


This deployable package carries the business assets, Java models and also a metadata descriptor file named kmodule.xml.

Design verse execution

Two important moments should be considered in a business application lifecycle: design time and execution time. During the design, the team configures and creates definitions of processes and rules. During the execution, the engine uses these definitions to validate the business rules or create execution instances, based on these definitions.

This is how the execution of a business project happens in jBPM:

  • When any runtime component tries to execute the kjar, it first validates the configurations inside kmodule.xml. Optionally, there are also other deployment descriptors to define additional configurations for the execution engine like auditing, persistence, and runtime strategy.
  • Inside Kie Module (defined in kmodule.xml), there are two more core concepts that are essential for the functioning and understanding of business applications: Knowledge Base (also known as kie base or kbase) and Knowledge Session (also known as kie session or ksession).
  • In a business application (kjar), all the processes and case definitions, all types of rule implementations and problem solvers are compiled and loaded into an in-memory Kie Base.
  • The client application then will be able to contact and consume the assets via an API provided by the Kie Sessions. The Kie Session is responsible for the execution information of a business asset.

When a client service/application wants to start a business process, it interacts with a Kie Session to say, for example, "Start a process instance based on the process definition named hiringProcess version 1.0.0 deployed into the kie container with an alias hiringApplication ".

Every kjar deployment is made available via a Kie Container. Each Kie Container has only one kjar deployment. It is usually identified by the deployed project group, artefact id, and version (GAV) or an alias.

The process definition is the bpmn2 file; the sequence of elements which represents a process. This definition is used to create as many process instances as you need. A Process Instance is a single execution of a process. It's the basic execution of a sequence of steps in which every step  is stored to maintain process state. Many process instances can be created based on a process definition.

With these starting key concepts, you can get started with your first process project and have an understanding of how it all works together from a process definition, to a running process instance.

This blog post is part of the jBPM Getting started series: Automate your business with jBPM

business process, developer, integration, java, jbpm, process automation, process integration, red hat, tutorial

Published at DZone with permission of Karina Varela . See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}