title | separator | verticalSeparator | revealOptions | ||
---|---|---|---|---|---|
About BPM, Camunda, Kogito at a gallopp |
<!-- section --> |
^---$ |
|
Timm Heuss
October 2022
https://github.com/heussd/bpm-camunda-kogito-at-a-gallop
- BPM and its ecosystem
- Model our own process featuring:
- human tasks
- service invokes
- Implement and deploy it...
- ... in Camunda 7
- ... in Kogito
- Reflect about our impressions
- Business Process Management (BPM)
- Business Process Model and Notation (BPMN) - a graphical specification language, used to model a process
- Decision Model and Notation (DMN) - used to model decisions
- BPM suite - Engine to execute BPM
- Economical: You might draw it (in PowerPoint) anyway, why not in a executable standard notation?
- Subject Matter: Business people can model the process themselves and they know it best
- right?!
- Technological: Software that takes care of:
- states and versions of processes
- human / machine interaction
Yes Code | No Code |
---|---|
Camunda, Kogito, jBPM, lib-bpmn-engine ... | ServiceNow, Signavio, ... |
Developer tools | Closed ecosystems |
Embrace standard programming languages | ? |
Your best friend | Death by Property panel |
├── build.gradle
├── gradle.properties
├── settings.gradle
└── src
└── main
├── java
│ └── com
│ └── example
│ └── hello
│ ├── HealthController.kt
│ ├── IdeaReceiver.kt
│ └── SpringBootApp.java
└── resources
├── application.yaml
├── idea-approval-process.bpmn
├── META-INF
│ └── processes.xml
└── public
└── index.html
Hands on 🙌
- Step 1: Propose idea.
- Step 2: Approve or reject idea.
- Step 3: Send idea to service, if it is approved.
Rich suite with everything you need. Shared, Container Managed Process Engine via SpringBoot starter
Modelling | User Interface | Admin Interface |
---|---|---|
Camunda Modeller (Desktop), Cawemo (Online) | Camunda Task List | Camunda Cockpit |
Payed features: Graphical process instance migration, Analytics such as Heatmaps on processes, ...
├── Dockerfile
├── pom.xml
└── src
└── main
├── java
│ └── org
│ └── kie
│ └── kogito
│ └── examples
│ ├── Idea.kt
│ └── IdeaReceiver.kt
└── resources
├── application.properties
├── META-INF
│ ├── kmodule.xml
│ └── processSVG
│ └── idea-approval.svg
└── org
└── kie
└── kogito
└── examples
└── idea-approval.bpmn2
Hands on 🫶
Hyper-scalable Cloud-native microservice architecture, focus on Domain language and auto generation.
Modelling | User Interface | Admin Interface |
---|---|---|
VSCode plugin | None (Task console available as dedicated service) | None (Admin console available as dedicated service) |
Kogito is part of
Red Hat's KIE (Knowledge Is Everything)
Yes they can! But keep in mind that:
- Business might not be experienced in doing so.
- It requires a different way of thinking that might not be natural for the Business.
- Modeling a good process is still challenging.
What about executable processes?
- Additional attributes needed in Property panels:
- what class to call
- what data model to use
- Maintaining these requires developer insights
BPMN | Property panels | |
---|---|---|
Business | ✅ | 🛑 |
Developer | ✅ | ✅ |
- Business creates draft process.
- Developer review, clarify, correct, goto 1. until concept is clear.
- Developer add technical attributes.
- Process becomes part of the codebase.
- Process becomes new baseline for future iterations with business.
Potential "Lock-in" effect through BPM-suite-specific attributes.
Camunda | Kogito |
---|---|
Camunda Modeller | VSCode plugin |
Work with REST:
- General management endpoints by the BPM suite.
- Subject matter-specific endpoints
- Camunda: do it yourself
- Kogito: generated automatically
Management endpoints!
Also: Custom field types for Camunda
/management/processes/
DELETE /management/processes/{processId}/instances/{processInstanceId}
GET /management/processes/{processId}/instances/{processInstanceId}/error
GET /management/processes/{processId}/instances/{processInstanceId}/nodeInstances
DELETE /management/processes/{processId}/instances/{processInstanceId}/nodeInstances/{nodeInstanceId}
POST /management/processes/{processId}/instances/{processInstanceId}/nodeInstances/{nodeInstanceId}
POST /management/processes/{processId}/instances/{processInstanceId}/nodes/{nodeId}
POST /management/processes/{processId}/instances/{processInstanceId}/retrigger
POST /management/processes/{processId}/instances/{processInstanceId}/skip
GET /management/processes/{processId}/nodes
- bpmn.io
- bpmn-js, dmn-js, form-js (Open Source)
- Camunda Modeller (Open Source)
- Kogito
- KIE tools, VSCode Plugin (Open Source)
- kogito-addons-quarkus-process-svg
UX designers might not like this.
Camunda | Kogito | |
---|---|---|
Model | Deployment | Deployment |
References | Element instantiation | Deployment |
In Camunda you have to test the entire process to ensure that all referenced classes or data types exist.
- User tasks are no longer free for commercial users.
- Only basic primary data types or JSON supported.
- Cawemo replaced with Camunda Platform service.
- Less choices for deployment.
https://docs.camunda.io/docs/guides/migrating-from-camunda-platform-7/
Camunda 7 | Camunda 8 | Kogito | |
---|---|---|---|
Remote Process Engine | ✅ | ✅ | |
Shared, Container Managed Process Engine | ✅ | ❌ | ✅ |
Embedded Process Engine | ✅ | ❌ |
- Spinning up a Camunda-equivalent service means starting 8 containers:
- Infinispan, Apache Zookeeper, Apache Kafka, Keycloak, Kogito Data Index service, Management console, Task console
- Plus finally your process deployable
- Public code examples are not working out of the box.
(personal opinion)
- You have a chain of activities? States? Human-Machine-Interaction? You might need BPM.
- BPMN is a great means for communication.
- We are right in the middle of a transition from
- application server BPM suites towards ...
- Cloud-native BPM suites.
- Yes-Code-approaches rock, yet the amount of code you don't have to write is just amazing.
- Camunda ❤️, Kogito ❤️
Stop drawing boxes in PowerPoint.
Start modelling BPMN.