Cafienne Engine for CMMN 1.1
Cafienne hosts an open source Case Management Engine which natively executes the CMMN 1.1 standard. The engine is written in Java and Scala co-operated with the Akka toolkit, backed by Cassandra and Postgres. This technical foundation makes it a platform for building highly concurrent, distributed, and resilient message-driven case management applications.
The suite comprises several components, namely;
- A multi-tenant service hosting among others a CMMN interpreter
- The Cafienne IDE, for creating models that are interpreted by the engine
- A basic User Interface that can help in running and debugging models
In this readme we limit to the installation of a working case engine. After you installed the case engine we advise you to follow the Getting Started wiki.
Currently we develop and work with the Case Service on Mac OS X and Windows. Cassandra and Postgres configuration is the most comprehensive part of the installation. We assume you know how to install Java, Scala and sbt, etc.
- OpenJDK 11
- Apache Cassandra 3.x
- Postgres 12.x
- Scala 2.12 (http://www.scala-lang.org/download/)
- SBT build tool >= 1.3
1.1.2 Case Service
After you succesfully installed Cassandra and Postgres you are ready for the Case Service installation.
184.108.40.206 Run the Case Service from IntelliJ
- If you want to run Case Service from IntelliJ you have to checkout the sources directly from IntelliJ and create a new project based on these sources:
- In the Run Configuration change the VM options to:
-Dcom.sun.management.jmxremote.port=9999 -Djava.net.preferIPv4Stack=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dfile.encoding=UTF-8 -Dconfig.file=local.conf -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:MaxPermSize=512M -Xms256m -Xmx1024m -Djava.awt.headless=true
- Run Case Service:
220.127.116.11 Run Case Service from the console
- clone Case Service from github
$ git clone https://github.com/cafienne/cafienne-engine.git
- Build the Case Service sources (this will generate a zip containing the engine)
$ cd ./cafienne $ sbt universal:packageBin
- Copy and unpack the generated zip
$ cp case-service/target/universal/cafienne.zip ~ $ cd ~ && unzip ~/cafienne.zip
- Run the Case Service:
$ cd ~/cafienne/bin $ ./case-service (or case-service.bat on Windows)
18.104.22.168 Run as a Docker image
!! This is still experimental and needs some work !!
- This assumes you already have a running docker setup, including docker-compose
- This config will pull the images _java:latest (based on openjdk)
- The exposed ports to the host OS are changed to prevent conflicts with the Case Service and ES running
locally on the host. Add 10000 to the default ports
- Case Service API: 28082
- JMX: 19999
- To build the Case Service docker image run
$ cd ./cafienne $ sbt docker:publishLocal
Use the docker hub version to run cafienne.
By default the docker hub version is pre-packed with a configuration that makes use of a number of environment variables in order to specify the projections database, the event database and the OpenID connect IDP used.
At this moment Postgres is supported as database out of the box. By overriding the configuration, its possible to have different setups as supported by slick and the akka-persistence drivers.
Run the container with environment settings
This is a list and is specified like CLUSTER_SEED_NODES.0=akka://ClusterSystem@192.168.1.55:25520
This is a list and is specified like CAFIENNE_PLATFORM_OWNERS.0=admin
Use of a custom configuration
- Create data folders for the external data
$ mkdir ~/docker-data/cafienne $ mkdir ~/docker-data/cafienne/conf $ mkdir ~/docker-data/cafienne/definitions $ mkdir ~/docker-data/cafienne/definitions/logs
- Copy the
cafienne.conf.dockerfile to the
$ cp ./cafienne/run/case-service/cafienne.conf.docker ~/docker-data/cafienne/conf/local.conf
ctrl-Cto shutdown the containers
1.2.1 I get a log4J timeout error, what to do? Answer: Increase the timeout setting which is 5 seconds by default. Go to local.conf or application.conf and add the following setting which you can find below the loggers entry.
logger-startup-timeout = 10s
1.3 Contribution Process
This project uses the C4 process for all code changes. "Everyone, without distinction or discrimination, SHALL have an equal right to become a Contributor under the terms of this contract."
1.4 Getting started
After you installed the Case Service you are ready to start building and running your first demo CMMN Case Model. You can read the Getting Started wiki to learn how to use the Case Service.
Free use of this software is granted under the terms of the Mozilla Public License 2.0. For details see the file
LICENSE included with the distribution.
All the documentation is covered by the CC0 license (do whatever you want with it - public domain).
To the extent possible under law, Cafienne B.V. has waived all copyright and related or neighboring rights to this work.