/camunda-consulting

Examples and demo applications built by the camunda consulting team

Primary LanguageJavaScriptApache License 2.0Apache-2.0

Camunda Consulting Examples

This repository contains examples, code snippets and demo applications build by the Camunda Consulting Team or contributors. Note: All examples are only tested manually and there is no guarantee that they are actively maintained. If you search for officially maintained examples go to https://github.com/camunda/camunda-bpm-examples.

Type of Example Description
Show Cases Complete demo applications showing more complex scenarios
Snippets Code snippets for particular technical issues
One-time Examples Examples created once for a specific event (like a conference or a magazine article). The code is not maintained and might be out-of-date.

Showcases

Review Process for new Tweets
Key Features showcased:
  • Complete Process Application
  • HTML or JSF task forms
  • Testing with camunda-bpm-assert and PowerMock + Mockito
  • [todo] Cycle with Collaboration
  • [todo] Retries and Incident Handling
Camel Use Cases
Key Features showcased:
  • Features of Camel Component, especially including messaging
Insurance Underwriting
Key Features showcased:
  • CMMN
  • Case UI in JSF
  • Combination of BPMN, CMMN and Rules
Incident Handling
Key Features showcased:
  • Working process from official OMG by example paper
  • BPMN Collaboration
Skill-based-Routing
Key Features showcased:
  • DMN Decision Tables
  • Decision Flow implementing a DMN Decision Requirement Diagram (DRD)

Snippets

Human Task Management

Preview Name Description
Subtask Checklist BPMN process with sub tasks configured on a User Task using BPMN Extension Elements. The Subtasks are shown in the HTML task form using the Camunda Forms SDK (JavaScript). A User Task can only be completed if all subtasks are completed beforehand.
Simple tasklist build with JSF A tasklist to show how to use the engine api inside a JSF application. It calls forms, completes tasks and shows the detail process diagram with bpmn.io
Watch Task Due Date and Automatically Take Action A Process engine Plugin which registers Jobs for all User Tasks having a due date. It allows to define an own JobHandler to take action whenever a due date is hit, e.g sending an email.
Dynamic single task process A highly configurable process to get toDo items into your task list

BPMN

Preview Name Description
BPMN Signal Events between Parallel Branches This example shows how to interrupt a Task in a parallel flow within the same process instance by using a BPMN Signal Event.
Translate your process model on the fly Translate the BPMN XML on the fly using XPath and render the result (in the correct language) via bpmn.io
Call Activity sets local variable Shows how to set a local variable in a parent process based on the variable of a child process invoked by a Call Activity.
Split Order Item Handling via OR Gateway Assume only a few items of an order are decided in one go - but the approved ones need to get processed right away. This is modeled using an OR Gateway and local variables.
Workaround to realize BPMN AdHoc Subpocess The BPMN AdHoc Subprocess is not specified to be executable, hence camunda BPM cannot execute it out-of-the-box. This snippet shows a possile workaround.
Non-interrupting Message Event Sub-Process inside a Sub-Process An example showing that a Sub-Process is not finished until a contained Event Sub-Process has reached its end.

Camunda Webapp (Tasklist & Cockpit)

Preview Name Description
Webapp Customizing Shows how to build a customized webapp (own logo, colors, language, plugins, ...) by using Maven Overlay.
Various Cockpit Plugins The Plugin Store lists various available cockpit plugins, including the consulting snippets.
Tasklist Plugin: Easy Search Plugin that provides a "Google-like" search bar for tasks.
Tasklist Plugin: Extended External Forms Plugin that provides a customized and better looking external forms hook.

bpmn.io

Preview Name Description
Plain HTML page showing Process Instance status Shows how to build a self-contained HTML page with bpmn.io showing the process model and add overlays and markers to show historical information.

DMN

Preview Name Description
DMN dependant decisions How to evaluate dependant DMN decisions on the Camunda BPM platform.

Process Engine Plugins

Preview Name Description
Making parallel joins asynchronous To avoid optimistic lock exceptions on heavy load processes, this plugin makes each joining gateway asynchronous without further configuration in the process diagram.
authenticatedUserId after Asynchronous Continuation To use the userId after asynchronous continuation, this plugin puts it from the history on the current thread.
Authorized User Tasks Only authorized users are able to complete a task. Obsolete since 7.3. Use Authorization-Service instead.
History Variable Filter How to store only one of many variables in the history.
Change Number of Job Retries This snippet shows how to change the number of retries for all jobs without touching the process diagrams.
Extend serialization of process variables This snippets exends the serialization of process variables for special classes, builds a jboss module with a maven plugin and shows how to use complex objects in a process application.
Engine Plugin: Add Save Points A plugin that automatically adds save points, i.e. asyncronous continuation or transaction boundaries, to certain BPMN elements.

Runtime Environments

Preview Name Description
Java-based Spring container configuration Run the process application in a Spring container with java-based configuration on a shared process engine.
Embedded Process Engine without Spring A Process Application containing an embedded process engine that is configured in the processes.xml file and therefore does not require the Spring Framework as a dependency.

Testing

Preview Name Description
BPMN Validation with the Parser of the Process Engine A minimal environment for validating BPMN processes using an in-memory process engine in a JUnit test.

Administration

Preview Name Description
How to clean up the history tables Solutions to clean up the history from old completed process instances.