SlideShare a Scribd company logo
1 of 18
Download to read offline
Gain
more freedom
when
migrating
from Camunda
7 to 8
Photo by Alex Radelich on Unsplash
Stephan Pelikan
senior_developer@phactum
7.x 8.x
• Embedded engine
• Various APIs to implement tasks
Java native, External Task (polling)
• One TX for business code and Camunda
• Process variables
• JUEL
• etc.
• Separate service
• One API for tasks
Worker (push)
• Eventual consistency
• JSON data object
• FEEL
• etc.
Image from Tenor
7.x 8.x
Time
Now
Completed Camunda projects
Ongoing Camunda projects
Upcoming Camunda projects Start using C8
C7
C8
C8
C7 ???
???
C7
C7
C7
https://docs.camunda.io/docs/guides/migrating-from-camunda-platform-7/
Camunda
8
API
Start a workflow
Complete a
service task
Correlate an
incoming message
Register and
complete
user tasks
Camunda
7
API
Camunda
7
API
Camunda
7
Adapter
Camunda
8
API
Start a workflow
Complete a
service task
Correlate an
incoming message
Register and
complete
user tasks
Camunda
7
API
Abstract
Business
Processing
API
Camunda
8
Adapter
Abstract
Business
Processing
API
7.x 8.x
Time
Now Start using C8
C7
C8
C8
C7 ???
???
C7
C7
C7
Upcoming
Projects
Current Project
Old Processing
Projects
• If there is a new business requirement
• If component will live longer than
Camunda 7 support period
Future
Projects
• Clean architecture
• Focus on business requirements
• Not all developers need to know
about Camunda details
• Decouple development from
point in time when to start
using Camunda 8
Maintenance of adapters necessary Centralized maintenance for
multiple projects
Cons / Pros
Clean architecture
Burden to implement
(especially for Camunda beginners)
Only features available in C7 & C8
Not a „no change“ approach
Decouple development
Simplify your software
& scale your teams easier
Cons / Pros
Clean architecture
Burden to implement
(especially for Camunda beginners)
Only features available in C7 & C8
Maintenance of adapters necessary
Decouple development
Centralized maintenance for
multiple projects
VanillaBP
Business processing at its best taste
[va·​nil·​la] … simple, plain, no frills
Not a „no change“ approach Simplify your software
& scale your teams easier
VanillaBP
Business processing at its best taste
[va·​nil·​la] … simple, plain, no frills
<dependency>
<groupId>org.camunda.community.vanillabp</groupId>
<artifactId>camunda7-spring-boot-adapter</artifactId>
</dependency>
<dependency>
<groupId>io.vanillabp</groupId>
<artifactId>spi-for-java</artifactId>
</dependency>
pom.xml
Interfaces, Enums &
Annotations
SPI Binding,
BPMN deployment
<dependency>
<groupId>org.camunda.community.vanillabp</groupId>
<artifactId>camunda8-spring-boot-adapter</artifactId>
</dependency>
VanillaBP
Business processing at its best taste
[va·​nil·​la] … simple, plain, no frills
pom.xml
c7/demo.bpmn
BPMN process ID: DemoWorkflow
Expression: ${processTask}
Condition: ${not success}
Expression: ${logError}
Expression: ${demoWorkflow.processTask}
Delegate-Expression: ${demoWorkflowProcessTask}
Expression: ${demoWorkflow.processTask}
Delegate-Expression: ${demoWorkflowProcessTask}
DemoAggregate.java
DemoWorkflow.java
1 @WorkflowService
2 @Service
3 public class DemoWorkflow {
4
5 }
VanillaBP
Business processing at its best taste
[va·​nil·​la] … simple, plain, no frills
ID: DemoWorkflow
Expression: ${processTask}
Condition: ${not success}
Expression: ${logError}
pom.xml
c7/demo.bpmn
1 @Entity @Table(name = "DEMO")
2 @Getter @Setter @AllArgsConstructor
3 public class DemoAggregate {
4 @Id @Column(name = "ID")
5 private String id;
6 @Column(name = "SUCCESS")
7 private boolean success;
8 }
start a workflow
1 @WorkflowService(workflowAggregateClass = DemoAggregate.class)
2 @Service
3 public class DemoWorkflow {
4
5 }
1 @WorkflowService(workflowAggregateClass = DemoAggregate.class)
2 @Service
3 public class DemoWorkflow {
4 @Autowired
5 private ProcessService<DemoAggregate> processService;
6
7 public void startDemo(String id) throws Exception {
8 var demo = new DemoAggregate(id, false);
10 processService.startWorkflow(demo);
11 }
12 }
1 @WorkflowService(workflowAggregateClass = DemoAggregate.class)
2 @Service
3 public class DemoWorkflow {
4 @Autowired
5 private ProcessService<DemoAggregate> processService;
6
7 public void startDemo(String id) throws Exception {
8 var demo = new DemoAggregate(id, false);
10 processService.startWorkflow(demo);
11 }
12
13 @WorkflowTask
14 public void processTask(DemoAggregate demo) {
15 demo.setSuccess(true);
16 }
17 }
1 @WorkflowService(workflowAggregateClass = DemoAggregate.class)
2 @Service
3 public class DemoWorkflow {
4 @Autowired
5 private ProcessService<DemoAggregate> processService;
6
7 public void startDemo(String id) throws Exception {
8 var demo = new DemoAggregate(id, false);
10 processService.startWorkflow(demo);
11 }
12
13 @WorkflowTask
14 public void processTask(DemoAggregate demo) {
15 demo.setSuccess(true);
16 }
17
18 @WorkflowTask(taskDefinition = "logError")
19 public void logErrorOnFailure() {
20 logger.info("error");
21 }
22 }
DemoAggregate.java
DemoWorkflow.java
VanillaBP
Business processing at its best taste
[va·​nil·​la] … simple, plain, no frills
pom.xml
Caused by: java.lang.IllegalStateException: No Spring Data repository defined for demo.DemoAggregate
at io.vanillabp.springboot.utils.JpaSpringDataUtil.getRepository(JpaSpringDataUtil.java:62)
Validation on booting the application
1 @Repository
2 public interface DemoAggregateRepository
3 extends JpaRepository<DemoAggregate, String> {
4
5 }
DemoAggregateRepository.java
Caused by: java.lang.RuntimeException: No public method annotated with @WorkflowTask is matching
task having task-definition 'processTask' of process 'DemoWorkflow'. Tested for:
at io.vanillabp.springboot.adapter.TaskWiringBase.wireTask(TaskWiringBase.java:199)
Caused by: java.lang.RuntimeException: You need to autowire
'io.vanillabp.spi.process.ProcessService<demo.DemoAggregate>' in your code to be able to start
workflows!
at io.vanillabp.camunda7.wiring.Camunda7TaskWiring.lambda$1(Camunda7TaskWiring.java:81)
c7/demo.bpmn
DemoAggregate.java
DemoWorkflow.java
VanillaBP
Business processing at its best taste
[va·​nil·​la] … simple, plain, no frills
pom.xml
DemoAggregateRepository.java
c7/demo.bpmn
Task-definition: processTask
Condition: =not(success)
Task-definition: logError
c7/demo.bpmn
Expression: ${processTask}
Condition: ${not success}
Expression: ${logError}
Point to directory „c8/“ instead of „c7/“ in Spring config
Switch the Maven dependency to „camunda8-spring-boot-adapter“
c8/demo.bpmn
BPMN process ID: DemoWorkflow
Life demo
https://github.com/phactum/vanillabp-demo
VanillaBP Abstraction
Wiring of BPMN and services Process variables
Service-like tasks Receive-like tasks
Asynchronous tasks User tasks
Multi-instance tasks BPMN errors
Deployment of BPMN BPMN process versions
run C7 processes next to C8 processes
run C7 processes instances next to C8 processes
instances of the same workflow
BPMN version-specific tasks
Toppings
run C7 processes or C8 processes
using the same code ✔
JakartaEE 👋
Photo by Josephina Kolpachnikof on Unsplash
Support async tasks for C7
based on external tasks
VanillaBP
Business processing at its best taste
[va·​nil·​la] … simple, plain, no frills
https://github.com/camunda-community-hub/vanillabp-camunda7-adapter
https://github.com/camunda-community-hub/vanillabp-camunda8-adapter
stephan.pelikan@phactum.at
https://github.com/vanillabp/simple-vanillabp-demo
https://www.vanillabp.io
https://github.com/vanillabp
comprehensive
documentation

More Related Content

What's hot

API Automation Testing Using RestAssured+Cucumber
API Automation Testing Using RestAssured+CucumberAPI Automation Testing Using RestAssured+Cucumber
API Automation Testing Using RestAssured+CucumberKnoldus Inc.
 
Process Orchestration with Flowable and Spring Boot
Process Orchestration with Flowable and Spring BootProcess Orchestration with Flowable and Spring Boot
Process Orchestration with Flowable and Spring BootChavdar Baikov
 
A Separation of Concerns: Clean Architecture on Android
A Separation of Concerns: Clean Architecture on AndroidA Separation of Concerns: Clean Architecture on Android
A Separation of Concerns: Clean Architecture on AndroidOutware Mobile
 
What is APIGEE? What are the benefits of APIGEE?
What is APIGEE? What are the benefits of APIGEE?What is APIGEE? What are the benefits of APIGEE?
What is APIGEE? What are the benefits of APIGEE?IQ Online Training
 
Test Automation - Principles and Practices
Test Automation - Principles and PracticesTest Automation - Principles and Practices
Test Automation - Principles and PracticesAnand Bagmar
 
Postman Webinar: Postman 101
Postman Webinar: Postman 101Postman Webinar: Postman 101
Postman Webinar: Postman 101Nikita Sharma
 
Event-driven architecture
Event-driven architectureEvent-driven architecture
Event-driven architectureAndrew Easter
 
Monitoring Java Applications with Prometheus and Grafana
Monitoring Java Applications with Prometheus and GrafanaMonitoring Java Applications with Prometheus and Grafana
Monitoring Java Applications with Prometheus and GrafanaJustin Reock
 
Test Automation Trends and Beyond
Test Automation Trends and BeyondTest Automation Trends and Beyond
Test Automation Trends and BeyondKnoldus Inc.
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to MicroservicesMahmoudZidan41
 
Cypress-vs-Playwright: Let the Code Speak
Cypress-vs-Playwright: Let the Code SpeakCypress-vs-Playwright: Let the Code Speak
Cypress-vs-Playwright: Let the Code SpeakApplitools
 
Introduction to Automation Testing
Introduction to Automation TestingIntroduction to Automation Testing
Introduction to Automation TestingArchana Krushnan
 
Low-Code vs. Programming – It Isn’t an Either/Or Decision
Low-Code vs. Programming – It Isn’t an Either/Or DecisionLow-Code vs. Programming – It Isn’t an Either/Or Decision
Low-Code vs. Programming – It Isn’t an Either/Or DecisionAppian
 
UiPath Community_Process Mining.pdf
UiPath Community_Process Mining.pdfUiPath Community_Process Mining.pdf
UiPath Community_Process Mining.pdfRohitRadhakrishnan8
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaGuido Schmutz
 
Servicenow overview
Servicenow overviewServicenow overview
Servicenow overviewCloudSyntrix
 

What's hot (20)

API Automation Testing Using RestAssured+Cucumber
API Automation Testing Using RestAssured+CucumberAPI Automation Testing Using RestAssured+Cucumber
API Automation Testing Using RestAssured+Cucumber
 
Camunda BPM 7.13 Webinar
Camunda BPM 7.13 WebinarCamunda BPM 7.13 Webinar
Camunda BPM 7.13 Webinar
 
Process Orchestration with Flowable and Spring Boot
Process Orchestration with Flowable and Spring BootProcess Orchestration with Flowable and Spring Boot
Process Orchestration with Flowable and Spring Boot
 
A Separation of Concerns: Clean Architecture on Android
A Separation of Concerns: Clean Architecture on AndroidA Separation of Concerns: Clean Architecture on Android
A Separation of Concerns: Clean Architecture on Android
 
What is APIGEE? What are the benefits of APIGEE?
What is APIGEE? What are the benefits of APIGEE?What is APIGEE? What are the benefits of APIGEE?
What is APIGEE? What are the benefits of APIGEE?
 
Test automation process
Test automation processTest automation process
Test automation process
 
Test Automation - Principles and Practices
Test Automation - Principles and PracticesTest Automation - Principles and Practices
Test Automation - Principles and Practices
 
Postman Webinar: Postman 101
Postman Webinar: Postman 101Postman Webinar: Postman 101
Postman Webinar: Postman 101
 
Event-driven architecture
Event-driven architectureEvent-driven architecture
Event-driven architecture
 
Monitoring Java Applications with Prometheus and Grafana
Monitoring Java Applications with Prometheus and GrafanaMonitoring Java Applications with Prometheus and Grafana
Monitoring Java Applications with Prometheus and Grafana
 
Test Automation Trends and Beyond
Test Automation Trends and BeyondTest Automation Trends and Beyond
Test Automation Trends and Beyond
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Cypress-vs-Playwright: Let the Code Speak
Cypress-vs-Playwright: Let the Code SpeakCypress-vs-Playwright: Let the Code Speak
Cypress-vs-Playwright: Let the Code Speak
 
Test Automation in Agile
Test Automation in AgileTest Automation in Agile
Test Automation in Agile
 
Introduction to Automation Testing
Introduction to Automation TestingIntroduction to Automation Testing
Introduction to Automation Testing
 
Low-Code vs. Programming – It Isn’t an Either/Or Decision
Low-Code vs. Programming – It Isn’t an Either/Or DecisionLow-Code vs. Programming – It Isn’t an Either/Or Decision
Low-Code vs. Programming – It Isn’t an Either/Or Decision
 
UiPath Devops.pptx
UiPath Devops.pptxUiPath Devops.pptx
UiPath Devops.pptx
 
UiPath Community_Process Mining.pdf
UiPath Community_Process Mining.pdfUiPath Community_Process Mining.pdf
UiPath Community_Process Mining.pdf
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache Kafka
 
Servicenow overview
Servicenow overviewServicenow overview
Servicenow overview
 

Similar to Gain more freedom when migrating from Camunda 7 to 8.pdf

Building a Utilities Portal with Magnolia 5 & SAP
Building a Utilities Portal with Magnolia 5 & SAPBuilding a Utilities Portal with Magnolia 5 & SAP
Building a Utilities Portal with Magnolia 5 & SAPMagnolia
 
Managing the Continuous Delivery of Code to AWS Lambda
Managing the Continuous Delivery of Code to AWS LambdaManaging the Continuous Delivery of Code to AWS Lambda
Managing the Continuous Delivery of Code to AWS LambdaAmazon Web Services
 
Cloud Native Serverless Java — Orkhan Gasimov
Cloud Native Serverless Java — Orkhan GasimovCloud Native Serverless Java — Orkhan Gasimov
Cloud Native Serverless Java — Orkhan GasimovGlobalLogic Ukraine
 
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years laterSymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years laterHaehnchen
 
Creando microservicios con Java, Microprofile y TomEE - Baranquilla JUG
Creando microservicios con Java, Microprofile y TomEE - Baranquilla JUGCreando microservicios con Java, Microprofile y TomEE - Baranquilla JUG
Creando microservicios con Java, Microprofile y TomEE - Baranquilla JUGCésar Hernández
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for JavaLars Vogel
 
Workshop: Building Vaadin add-ons
Workshop: Building Vaadin add-onsWorkshop: Building Vaadin add-ons
Workshop: Building Vaadin add-onsSami Ekblad
 
PhoneGap:你应该知道的12件事
PhoneGap:你应该知道的12件事PhoneGap:你应该知道的12件事
PhoneGap:你应该知道的12件事longfei.dong
 
How and why we evolved a legacy Java web application to Scala... and we are s...
How and why we evolved a legacy Java web application to Scala... and we are s...How and why we evolved a legacy Java web application to Scala... and we are s...
How and why we evolved a legacy Java web application to Scala... and we are s...Katia Aresti
 
Affordable Workflow Options for APEX
Affordable Workflow Options for APEXAffordable Workflow Options for APEX
Affordable Workflow Options for APEXNiels de Bruijn
 
How to Improve Performance Testing Using InfluxDB and Apache JMeter
How to Improve Performance Testing Using InfluxDB and Apache JMeterHow to Improve Performance Testing Using InfluxDB and Apache JMeter
How to Improve Performance Testing Using InfluxDB and Apache JMeterInfluxData
 
Camunda BPM 7.2: Tasklist and Javascript Forms SDK (English)
Camunda BPM 7.2: Tasklist and Javascript Forms SDK (English)Camunda BPM 7.2: Tasklist and Javascript Forms SDK (English)
Camunda BPM 7.2: Tasklist and Javascript Forms SDK (English)camunda services GmbH
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applicationshchen1
 
JavaFX Enterprise (JavaOne 2014)
JavaFX Enterprise (JavaOne 2014)JavaFX Enterprise (JavaOne 2014)
JavaFX Enterprise (JavaOne 2014)Hendrik Ebbers
 
Java Fx Ajaxworld Rags V1
Java Fx Ajaxworld Rags V1Java Fx Ajaxworld Rags V1
Java Fx Ajaxworld Rags V1rajivmordani
 
Practical Dynamic Actions - Intro
Practical Dynamic Actions - IntroPractical Dynamic Actions - Intro
Practical Dynamic Actions - IntroJorge Rimblas
 
The Web Framework Dream Team
The Web Framework Dream TeamThe Web Framework Dream Team
The Web Framework Dream TeamJohan Eltes
 
Maxim Salnikov - Service Worker: taking the best from the past experience for...
Maxim Salnikov - Service Worker: taking the best from the past experience for...Maxim Salnikov - Service Worker: taking the best from the past experience for...
Maxim Salnikov - Service Worker: taking the best from the past experience for...Codemotion
 
Phone gap 12 things you should know
Phone gap 12 things you should knowPhone gap 12 things you should know
Phone gap 12 things you should knowISOCHK
 

Similar to Gain more freedom when migrating from Camunda 7 to 8.pdf (20)

Building a Utilities Portal with Magnolia 5 & SAP
Building a Utilities Portal with Magnolia 5 & SAPBuilding a Utilities Portal with Magnolia 5 & SAP
Building a Utilities Portal with Magnolia 5 & SAP
 
Managing the Continuous Delivery of Code to AWS Lambda
Managing the Continuous Delivery of Code to AWS LambdaManaging the Continuous Delivery of Code to AWS Lambda
Managing the Continuous Delivery of Code to AWS Lambda
 
Cloud Native Serverless Java — Orkhan Gasimov
Cloud Native Serverless Java — Orkhan GasimovCloud Native Serverless Java — Orkhan Gasimov
Cloud Native Serverless Java — Orkhan Gasimov
 
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years laterSymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later
 
Creando microservicios con Java, Microprofile y TomEE - Baranquilla JUG
Creando microservicios con Java, Microprofile y TomEE - Baranquilla JUGCreando microservicios con Java, Microprofile y TomEE - Baranquilla JUG
Creando microservicios con Java, Microprofile y TomEE - Baranquilla JUG
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for Java
 
Workshop: Building Vaadin add-ons
Workshop: Building Vaadin add-onsWorkshop: Building Vaadin add-ons
Workshop: Building Vaadin add-ons
 
PhoneGap:你应该知道的12件事
PhoneGap:你应该知道的12件事PhoneGap:你应该知道的12件事
PhoneGap:你应该知道的12件事
 
How and why we evolved a legacy Java web application to Scala... and we are s...
How and why we evolved a legacy Java web application to Scala... and we are s...How and why we evolved a legacy Java web application to Scala... and we are s...
How and why we evolved a legacy Java web application to Scala... and we are s...
 
Affordable Workflow Options for APEX
Affordable Workflow Options for APEXAffordable Workflow Options for APEX
Affordable Workflow Options for APEX
 
How to Improve Performance Testing Using InfluxDB and Apache JMeter
How to Improve Performance Testing Using InfluxDB and Apache JMeterHow to Improve Performance Testing Using InfluxDB and Apache JMeter
How to Improve Performance Testing Using InfluxDB and Apache JMeter
 
Camunda BPM 7.2: Tasklist and Javascript Forms SDK (English)
Camunda BPM 7.2: Tasklist and Javascript Forms SDK (English)Camunda BPM 7.2: Tasklist and Javascript Forms SDK (English)
Camunda BPM 7.2: Tasklist and Javascript Forms SDK (English)
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
 
JavaFX Enterprise (JavaOne 2014)
JavaFX Enterprise (JavaOne 2014)JavaFX Enterprise (JavaOne 2014)
JavaFX Enterprise (JavaOne 2014)
 
Sprint 17
Sprint 17Sprint 17
Sprint 17
 
Java Fx Ajaxworld Rags V1
Java Fx Ajaxworld Rags V1Java Fx Ajaxworld Rags V1
Java Fx Ajaxworld Rags V1
 
Practical Dynamic Actions - Intro
Practical Dynamic Actions - IntroPractical Dynamic Actions - Intro
Practical Dynamic Actions - Intro
 
The Web Framework Dream Team
The Web Framework Dream TeamThe Web Framework Dream Team
The Web Framework Dream Team
 
Maxim Salnikov - Service Worker: taking the best from the past experience for...
Maxim Salnikov - Service Worker: taking the best from the past experience for...Maxim Salnikov - Service Worker: taking the best from the past experience for...
Maxim Salnikov - Service Worker: taking the best from the past experience for...
 
Phone gap 12 things you should know
Phone gap 12 things you should knowPhone gap 12 things you should know
Phone gap 12 things you should know
 

Recently uploaded

Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 

Recently uploaded (20)

Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 

Gain more freedom when migrating from Camunda 7 to 8.pdf

  • 1. Gain more freedom when migrating from Camunda 7 to 8 Photo by Alex Radelich on Unsplash Stephan Pelikan senior_developer@phactum
  • 2. 7.x 8.x • Embedded engine • Various APIs to implement tasks Java native, External Task (polling) • One TX for business code and Camunda • Process variables • JUEL • etc. • Separate service • One API for tasks Worker (push) • Eventual consistency • JSON data object • FEEL • etc. Image from Tenor
  • 3. 7.x 8.x Time Now Completed Camunda projects Ongoing Camunda projects Upcoming Camunda projects Start using C8 C7 C8 C8 C7 ??? ??? C7 C7 C7
  • 5. Camunda 8 API Start a workflow Complete a service task Correlate an incoming message Register and complete user tasks Camunda 7 API Camunda 7 API
  • 6. Camunda 7 Adapter Camunda 8 API Start a workflow Complete a service task Correlate an incoming message Register and complete user tasks Camunda 7 API Abstract Business Processing API Camunda 8 Adapter
  • 7. Abstract Business Processing API 7.x 8.x Time Now Start using C8 C7 C8 C8 C7 ??? ??? C7 C7 C7 Upcoming Projects Current Project Old Processing Projects • If there is a new business requirement • If component will live longer than Camunda 7 support period Future Projects • Clean architecture • Focus on business requirements • Not all developers need to know about Camunda details • Decouple development from point in time when to start using Camunda 8
  • 8. Maintenance of adapters necessary Centralized maintenance for multiple projects Cons / Pros Clean architecture Burden to implement (especially for Camunda beginners) Only features available in C7 & C8 Not a „no change“ approach Decouple development Simplify your software & scale your teams easier
  • 9. Cons / Pros Clean architecture Burden to implement (especially for Camunda beginners) Only features available in C7 & C8 Maintenance of adapters necessary Decouple development Centralized maintenance for multiple projects VanillaBP Business processing at its best taste [va·​nil·​la] … simple, plain, no frills Not a „no change“ approach Simplify your software & scale your teams easier
  • 10. VanillaBP Business processing at its best taste [va·​nil·​la] … simple, plain, no frills <dependency> <groupId>org.camunda.community.vanillabp</groupId> <artifactId>camunda7-spring-boot-adapter</artifactId> </dependency> <dependency> <groupId>io.vanillabp</groupId> <artifactId>spi-for-java</artifactId> </dependency> pom.xml Interfaces, Enums & Annotations SPI Binding, BPMN deployment <dependency> <groupId>org.camunda.community.vanillabp</groupId> <artifactId>camunda8-spring-boot-adapter</artifactId> </dependency>
  • 11. VanillaBP Business processing at its best taste [va·​nil·​la] … simple, plain, no frills pom.xml c7/demo.bpmn BPMN process ID: DemoWorkflow Expression: ${processTask} Condition: ${not success} Expression: ${logError} Expression: ${demoWorkflow.processTask} Delegate-Expression: ${demoWorkflowProcessTask} Expression: ${demoWorkflow.processTask} Delegate-Expression: ${demoWorkflowProcessTask}
  • 12. DemoAggregate.java DemoWorkflow.java 1 @WorkflowService 2 @Service 3 public class DemoWorkflow { 4 5 } VanillaBP Business processing at its best taste [va·​nil·​la] … simple, plain, no frills ID: DemoWorkflow Expression: ${processTask} Condition: ${not success} Expression: ${logError} pom.xml c7/demo.bpmn 1 @Entity @Table(name = "DEMO") 2 @Getter @Setter @AllArgsConstructor 3 public class DemoAggregate { 4 @Id @Column(name = "ID") 5 private String id; 6 @Column(name = "SUCCESS") 7 private boolean success; 8 } start a workflow 1 @WorkflowService(workflowAggregateClass = DemoAggregate.class) 2 @Service 3 public class DemoWorkflow { 4 5 } 1 @WorkflowService(workflowAggregateClass = DemoAggregate.class) 2 @Service 3 public class DemoWorkflow { 4 @Autowired 5 private ProcessService<DemoAggregate> processService; 6 7 public void startDemo(String id) throws Exception { 8 var demo = new DemoAggregate(id, false); 10 processService.startWorkflow(demo); 11 } 12 } 1 @WorkflowService(workflowAggregateClass = DemoAggregate.class) 2 @Service 3 public class DemoWorkflow { 4 @Autowired 5 private ProcessService<DemoAggregate> processService; 6 7 public void startDemo(String id) throws Exception { 8 var demo = new DemoAggregate(id, false); 10 processService.startWorkflow(demo); 11 } 12 13 @WorkflowTask 14 public void processTask(DemoAggregate demo) { 15 demo.setSuccess(true); 16 } 17 } 1 @WorkflowService(workflowAggregateClass = DemoAggregate.class) 2 @Service 3 public class DemoWorkflow { 4 @Autowired 5 private ProcessService<DemoAggregate> processService; 6 7 public void startDemo(String id) throws Exception { 8 var demo = new DemoAggregate(id, false); 10 processService.startWorkflow(demo); 11 } 12 13 @WorkflowTask 14 public void processTask(DemoAggregate demo) { 15 demo.setSuccess(true); 16 } 17 18 @WorkflowTask(taskDefinition = "logError") 19 public void logErrorOnFailure() { 20 logger.info("error"); 21 } 22 }
  • 13. DemoAggregate.java DemoWorkflow.java VanillaBP Business processing at its best taste [va·​nil·​la] … simple, plain, no frills pom.xml Caused by: java.lang.IllegalStateException: No Spring Data repository defined for demo.DemoAggregate at io.vanillabp.springboot.utils.JpaSpringDataUtil.getRepository(JpaSpringDataUtil.java:62) Validation on booting the application 1 @Repository 2 public interface DemoAggregateRepository 3 extends JpaRepository<DemoAggregate, String> { 4 5 } DemoAggregateRepository.java Caused by: java.lang.RuntimeException: No public method annotated with @WorkflowTask is matching task having task-definition 'processTask' of process 'DemoWorkflow'. Tested for: at io.vanillabp.springboot.adapter.TaskWiringBase.wireTask(TaskWiringBase.java:199) Caused by: java.lang.RuntimeException: You need to autowire 'io.vanillabp.spi.process.ProcessService<demo.DemoAggregate>' in your code to be able to start workflows! at io.vanillabp.camunda7.wiring.Camunda7TaskWiring.lambda$1(Camunda7TaskWiring.java:81) c7/demo.bpmn
  • 14. DemoAggregate.java DemoWorkflow.java VanillaBP Business processing at its best taste [va·​nil·​la] … simple, plain, no frills pom.xml DemoAggregateRepository.java c7/demo.bpmn Task-definition: processTask Condition: =not(success) Task-definition: logError c7/demo.bpmn Expression: ${processTask} Condition: ${not success} Expression: ${logError} Point to directory „c8/“ instead of „c7/“ in Spring config Switch the Maven dependency to „camunda8-spring-boot-adapter“ c8/demo.bpmn BPMN process ID: DemoWorkflow
  • 16. VanillaBP Abstraction Wiring of BPMN and services Process variables Service-like tasks Receive-like tasks Asynchronous tasks User tasks Multi-instance tasks BPMN errors Deployment of BPMN BPMN process versions
  • 17. run C7 processes next to C8 processes run C7 processes instances next to C8 processes instances of the same workflow BPMN version-specific tasks Toppings run C7 processes or C8 processes using the same code ✔ JakartaEE 👋 Photo by Josephina Kolpachnikof on Unsplash Support async tasks for C7 based on external tasks
  • 18. VanillaBP Business processing at its best taste [va·​nil·​la] … simple, plain, no frills https://github.com/camunda-community-hub/vanillabp-camunda7-adapter https://github.com/camunda-community-hub/vanillabp-camunda8-adapter stephan.pelikan@phactum.at https://github.com/vanillabp/simple-vanillabp-demo https://www.vanillabp.io https://github.com/vanillabp comprehensive documentation