SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Whirlwind Tour of Activiti 7
Ryan Dawson
Learn. Connect. Collaborate.
Overview
How to see what Activiti 7 offers?
- Non-cloud/core examples
- Cloud examples
v7 offers a builder experience with less plumbing
Examples and explanation in the gitbook
We’ll point out differences from previous versions
Learn. Connect. Collaborate.
How to use
Core
Learn. Connect. Collaborate.
Non-Cloud/Core
Embedding an Activiti
Engine into a single
java runtime
Key examples based
around this process:
Learn. Connect. Collaborate.
Project
Structure
Learn. Connect. Collaborate.
Security and
Identity
@Bean
public UserDetailsService myUserDetailsService() {
InMemoryUserDetailsManager inMemoryUserDetailsManager = new
InMemoryUserDetailsManager();
String[][] usersGroupsAndRoles = {
{"system", "password", "ROLE_ACTIVITI_USER"},
{"admin", "password", "ROLE_ACTIVITI_ADMIN"},
};
for (String[] user : usersGroupsAndRoles) {
List<String> authoritiesStrings = Arrays.asList(Arrays.copyOfRange(user, 2, user.length));
logger.info("> Registering new user: " + user[0] + " with the following Authorities[" +
authoritiesStrings + "]");
inMemoryUserDetailsManager.createUser(new User(user[0], passwordEncoder().encode(user[1]),
authoritiesStrings.stream().map(s -> new
SimpleGrantedAuthority(s)).collect(Collectors.toList())));
}
return inMemoryUserDetailsManager;
}
Learn. Connect. Collaborate.
Process Text
Connector
@Bean
public Connector processTextConnector() {
return integrationContext -> {
Map<String, Object> inBoundVariables = integrationContext.getInBoundVariables();
String contentToProcess = (String) inBoundVariables.get("content");
// Logic Here to decide if content is approved or not
if (contentToProcess.contains("activiti")) {
logger.info("> Approving content: " + contentToProcess);
integrationContext.addOutBoundVariable("approved",
true);
} else {
logger.info("> Discarding content: " + contentToProcess);
integrationContext.addOutBoundVariable("approved",
false);
}
return integrationContext;
};
}
<bpmn:serviceTask
name="Process Text"
implementation="processTextConnector">
Learn. Connect. Collaborate.
How do we
start
processes?
@Autowired
private ProcessRuntime processRuntime;
public void processText() {
securityUtil.logInAs("system");
String content = pickRandomString();
ProcessInstance processInstance = processRuntime.start(ProcessPayloadBuilder
.start()
.withProcessDefinitionKey("categorizeProcess")
.withProcessInstanceName("Processing Content: " + content)
.withVariable("content", content)
.build());
}
Learn. Connect. Collaborate.
Json
Serialization
public void processText() {
securityUtil.logInAs("system");
Content content = pickRandomContent();
ProcessInstance processInstance = processRuntime.start(ProcessPayloadBuilder
.start()
.withProcessDefinitionKey("categorizeProcess")
.withProcessInstanceName("Processing Content: " + content)
.withVariable("content", content)
.build());
}
Non-Cloud Takeaways
● Embeddable as ever
● For spring the security and identity is plain spring
● New streamlined APIs for runtime interaction
Learn. Connect. Collaborate.
Cloud
Overview
- Key Concepts:
- Connectors
- RB
- Supporting services (query, audit, notifications, apps)
- Getting Started
- Demo
- Testing
- CI
Learn. Connect. Collaborate.
What is Activiti
Cloud?
Learn. Connect. Collaborate.
Cloud
Connectors
Learn. Connect. Collaborate.
Which looks
like...
@StreamListener(value =
ProcessingConnectorChannels.TWITTER_ANALYZER_CONSUMER)
public void analyzeEnglishTweet(IntegrationRequest event) {
String tweet =
String.valueOf(event.getIntegrationContext().getInBoundVariables().get("text"));
int sentiment = NLP.findSentiment(tweet);
// … convert sentiment to attitude
. // send attitude back as var
Map<String, Object> results = new HashMap<>();
results.put("attitude",
attitude);
Message<IntegrationResult> message = IntegrationResultBuilder.resultFor(event,
connectorProperties)
.withOutboundVariables(results)
.buildMessage();
integrationResultSender.send(message);
}
Learn. Connect. Collaborate.
Runtime Bundle
as executor
Learn. Connect. Collaborate.
Structure of
an RB
Learn. Connect. Collaborate.
OOTB
Cloud
Components
Learn. Connect. Collaborate.
Trending Topics
Learn. Connect. Collaborate.
Helm
Chart
Learn. Connect. Collaborate.
Acc Tests
Learn. Connect. Collaborate.
UI
Learn. Connect. Collaborate.
REST API and
Java API
- processRuntime and taskRuntime methods
map directly to REST endpoints
- Parameter and return types in Java API map
to REST json objects
- Acceptance tests use this to write clean test
code
- Enables natural transition from non-cloud to
cloud
Learn. Connect. Collaborate.
Query and
Audit
Learn. Connect. Collaborate.
Other
Examples!
- Try it out!
- Gitbook
- gitter
Learn. Connect. Collaborate.
The future is
bright!
- FaaS/knative
- Istio integration
- Spring Cloud next gen
- JHipster integration
- GraalVM
- Activiti cloud operator
Thanks!

Weitere ähnliche Inhalte

Was ist angesagt?

Creating data with the test data builder pattern
Creating data with the test data builder patternCreating data with the test data builder pattern
Creating data with the test data builder pattern
Alan Parkinson
 
Frontend meetup 2014.06.25
Frontend meetup 2014.06.25Frontend meetup 2014.06.25
Frontend meetup 2014.06.25
EU Edge
 
Real Time Web - What's that for?
Real Time Web - What's that for?Real Time Web - What's that for?
Real Time Web - What's that for?
Martyn Loughran
 

Was ist angesagt? (20)

How lagom helps to build real world microservice systems
How lagom helps to build real world microservice systemsHow lagom helps to build real world microservice systems
How lagom helps to build real world microservice systems
 
Web Api vs MVC
Web Api vs MVCWeb Api vs MVC
Web Api vs MVC
 
Serverless with azure functions the rebel service
Serverless with azure functions   the rebel serviceServerless with azure functions   the rebel service
Serverless with azure functions the rebel service
 
Microservices Manchester: Highly Scalable, and Reliable Microservices with Mi...
Microservices Manchester: Highly Scalable, and Reliable Microservices with Mi...Microservices Manchester: Highly Scalable, and Reliable Microservices with Mi...
Microservices Manchester: Highly Scalable, and Reliable Microservices with Mi...
 
Creating data with the test data builder pattern
Creating data with the test data builder patternCreating data with the test data builder pattern
Creating data with the test data builder pattern
 
Frontend meetup 2014.06.25
Frontend meetup 2014.06.25Frontend meetup 2014.06.25
Frontend meetup 2014.06.25
 
Webcomponents at Frontend meetup 2014.06.25
Webcomponents at Frontend meetup 2014.06.25Webcomponents at Frontend meetup 2014.06.25
Webcomponents at Frontend meetup 2014.06.25
 
Web components
Web componentsWeb components
Web components
 
JSDC 2017 - 使用google cloud 從雲到端,動手刻個IoT
JSDC 2017 - 使用google cloud 從雲到端,動手刻個IoTJSDC 2017 - 使用google cloud 從雲到端,動手刻個IoT
JSDC 2017 - 使用google cloud 從雲到端,動手刻個IoT
 
A Look at ASP.NET MVC 4
A Look at ASP.NET MVC 4A Look at ASP.NET MVC 4
A Look at ASP.NET MVC 4
 
OSGi Puzzlers - Neil Bartlett & Peter Kriens
OSGi Puzzlers - Neil Bartlett & Peter KriensOSGi Puzzlers - Neil Bartlett & Peter Kriens
OSGi Puzzlers - Neil Bartlett & Peter Kriens
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Take Control of your Integration Testing with TestContainers
Take Control of your Integration Testing with TestContainersTake Control of your Integration Testing with TestContainers
Take Control of your Integration Testing with TestContainers
 
Cutting edge HTML5 API you can use today (by Bohdan Rusinka)
 Cutting edge HTML5 API you can use today (by Bohdan Rusinka) Cutting edge HTML5 API you can use today (by Bohdan Rusinka)
Cutting edge HTML5 API you can use today (by Bohdan Rusinka)
 
JS Fest 2018. Martin Chaov. SSE vs WebSockets vs Long Polling
JS Fest 2018. Martin Chaov. SSE vs WebSockets vs Long PollingJS Fest 2018. Martin Chaov. SSE vs WebSockets vs Long Polling
JS Fest 2018. Martin Chaov. SSE vs WebSockets vs Long Polling
 
Real Time Web - What's that for?
Real Time Web - What's that for?Real Time Web - What's that for?
Real Time Web - What's that for?
 
Test Data Builder Pattern
Test Data Builder PatternTest Data Builder Pattern
Test Data Builder Pattern
 
Building multi lingual and empatic bots - Sander van den Hoven - Codemotion A...
Building multi lingual and empatic bots - Sander van den Hoven - Codemotion A...Building multi lingual and empatic bots - Sander van den Hoven - Codemotion A...
Building multi lingual and empatic bots - Sander van den Hoven - Codemotion A...
 
Http session (Java)
Http session (Java)Http session (Java)
Http session (Java)
 
20140419 xamarin zumo
20140419 xamarin zumo20140419 xamarin zumo
20140419 xamarin zumo
 

Ähnlich wie Whirlwind tour of activiti 7

A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
DataLeader.io
 
quickguide-einnovator-8-spring-cloud
quickguide-einnovator-8-spring-cloudquickguide-einnovator-8-spring-cloud
quickguide-einnovator-8-spring-cloud
jorgesimao71
 

Ähnlich wie Whirlwind tour of activiti 7 (20)

AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSAngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
 
Integrating Jira Software Cloud With the AWS Code Suite
Integrating Jira Software Cloud With the AWS Code SuiteIntegrating Jira Software Cloud With the AWS Code Suite
Integrating Jira Software Cloud With the AWS Code Suite
 
Tdd,Ioc
Tdd,IocTdd,Ioc
Tdd,Ioc
 
A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom
 
Faites évoluer votre accès aux données avec MongoDB Stitch
Faites évoluer votre accès aux données avec MongoDB StitchFaites évoluer votre accès aux données avec MongoDB Stitch
Faites évoluer votre accès aux données avec MongoDB Stitch
 
Data binding w Androidzie
Data binding w AndroidzieData binding w Androidzie
Data binding w Androidzie
 
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
 
Easy integration of Bluemix services with your applications
Easy integration of Bluemix services with your applicationsEasy integration of Bluemix services with your applications
Easy integration of Bluemix services with your applications
 
jclouds overview
jclouds overviewjclouds overview
jclouds overview
 
Connect + Docker + AWS = Bitbucket Pipelines
Connect + Docker + AWS = Bitbucket PipelinesConnect + Docker + AWS = Bitbucket Pipelines
Connect + Docker + AWS = Bitbucket Pipelines
 
Will your code blend? : Toronto Code Camp 2010 : Barry Gervin
Will your code blend? : Toronto Code Camp 2010 : Barry GervinWill your code blend? : Toronto Code Camp 2010 : Barry Gervin
Will your code blend? : Toronto Code Camp 2010 : Barry Gervin
 
Spring boot microservice metrics monitoring
Spring boot   microservice metrics monitoringSpring boot   microservice metrics monitoring
Spring boot microservice metrics monitoring
 
Spring Boot - Microservice Metrics Monitoring
Spring Boot - Microservice Metrics MonitoringSpring Boot - Microservice Metrics Monitoring
Spring Boot - Microservice Metrics Monitoring
 
Azure functions
Azure functionsAzure functions
Azure functions
 
Inside Logic Apps
Inside Logic AppsInside Logic Apps
Inside Logic Apps
 
MVC pattern for widgets
MVC pattern for widgetsMVC pattern for widgets
MVC pattern for widgets
 
Swiz DAO
Swiz DAOSwiz DAO
Swiz DAO
 
Working with AngularJS
Working with AngularJSWorking with AngularJS
Working with AngularJS
 
AspMVC4 start101
AspMVC4 start101AspMVC4 start101
AspMVC4 start101
 
quickguide-einnovator-8-spring-cloud
quickguide-einnovator-8-spring-cloudquickguide-einnovator-8-spring-cloud
quickguide-einnovator-8-spring-cloud
 

Mehr von Ryan Dawson

Mehr von Ryan Dawson (14)

mlops.community meetup - ML Governance_ A Practical Guide.pptx
mlops.community meetup - ML Governance_ A Practical Guide.pptxmlops.community meetup - ML Governance_ A Practical Guide.pptx
mlops.community meetup - ML Governance_ A Practical Guide.pptx
 
Conspiracy Theories in the Information Age
Conspiracy Theories in the Information AgeConspiracy Theories in the Information Age
Conspiracy Theories in the Information Age
 
Why is dev ops for machine learning so different - dataxdays
Why is dev ops for machine learning so different  - dataxdaysWhy is dev ops for machine learning so different  - dataxdays
Why is dev ops for machine learning so different - dataxdays
 
Maximising teamwork in delivering software products
Maximising teamwork in delivering software productsMaximising teamwork in delivering software products
Maximising teamwork in delivering software products
 
Maximising teamwork in delivering software products
Maximising teamwork in delivering software products Maximising teamwork in delivering software products
Maximising teamwork in delivering software products
 
Java vs challenger languages
Java vs challenger languagesJava vs challenger languages
Java vs challenger languages
 
Challenges for AI in prod
Challenges for AI in prodChallenges for AI in prod
Challenges for AI in prod
 
From training to explainability via git ops
From training to explainability via git opsFrom training to explainability via git ops
From training to explainability via git ops
 
Why is dev ops for machine learning so different
Why is dev ops for machine learning so differentWhy is dev ops for machine learning so different
Why is dev ops for machine learning so different
 
How open source is funded the enterprise differentiation tightrope (1)
How open source is funded  the enterprise differentiation tightrope (1)How open source is funded  the enterprise differentiation tightrope (1)
How open source is funded the enterprise differentiation tightrope (1)
 
From java monolith to kubernetes microservices - an open source journey with ...
From java monolith to kubernetes microservices - an open source journey with ...From java monolith to kubernetes microservices - an open source journey with ...
From java monolith to kubernetes microservices - an open source journey with ...
 
Jdk.io cloud native business automation
Jdk.io cloud native business automationJdk.io cloud native business automation
Jdk.io cloud native business automation
 
Identity management and single sign on - how much flexibility
Identity management and single sign on - how much flexibilityIdentity management and single sign on - how much flexibility
Identity management and single sign on - how much flexibility
 
Activiti Cloud Deep Dive
Activiti Cloud Deep DiveActiviti Cloud Deep Dive
Activiti Cloud Deep Dive
 

Kürzlich hochgeladen

CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
anilsa9823
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
anilsa9823
 

Kürzlich hochgeladen (20)

Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
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
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
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
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
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
 
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
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 

Whirlwind tour of activiti 7

  • 1. Whirlwind Tour of Activiti 7 Ryan Dawson
  • 2. Learn. Connect. Collaborate. Overview How to see what Activiti 7 offers? - Non-cloud/core examples - Cloud examples v7 offers a builder experience with less plumbing Examples and explanation in the gitbook We’ll point out differences from previous versions
  • 4. Learn. Connect. Collaborate. Non-Cloud/Core Embedding an Activiti Engine into a single java runtime Key examples based around this process:
  • 6. Learn. Connect. Collaborate. Security and Identity @Bean public UserDetailsService myUserDetailsService() { InMemoryUserDetailsManager inMemoryUserDetailsManager = new InMemoryUserDetailsManager(); String[][] usersGroupsAndRoles = { {"system", "password", "ROLE_ACTIVITI_USER"}, {"admin", "password", "ROLE_ACTIVITI_ADMIN"}, }; for (String[] user : usersGroupsAndRoles) { List<String> authoritiesStrings = Arrays.asList(Arrays.copyOfRange(user, 2, user.length)); logger.info("> Registering new user: " + user[0] + " with the following Authorities[" + authoritiesStrings + "]"); inMemoryUserDetailsManager.createUser(new User(user[0], passwordEncoder().encode(user[1]), authoritiesStrings.stream().map(s -> new SimpleGrantedAuthority(s)).collect(Collectors.toList()))); } return inMemoryUserDetailsManager; }
  • 7. Learn. Connect. Collaborate. Process Text Connector @Bean public Connector processTextConnector() { return integrationContext -> { Map<String, Object> inBoundVariables = integrationContext.getInBoundVariables(); String contentToProcess = (String) inBoundVariables.get("content"); // Logic Here to decide if content is approved or not if (contentToProcess.contains("activiti")) { logger.info("> Approving content: " + contentToProcess); integrationContext.addOutBoundVariable("approved", true); } else { logger.info("> Discarding content: " + contentToProcess); integrationContext.addOutBoundVariable("approved", false); } return integrationContext; }; } <bpmn:serviceTask name="Process Text" implementation="processTextConnector">
  • 8. Learn. Connect. Collaborate. How do we start processes? @Autowired private ProcessRuntime processRuntime; public void processText() { securityUtil.logInAs("system"); String content = pickRandomString(); ProcessInstance processInstance = processRuntime.start(ProcessPayloadBuilder .start() .withProcessDefinitionKey("categorizeProcess") .withProcessInstanceName("Processing Content: " + content) .withVariable("content", content) .build()); }
  • 9. Learn. Connect. Collaborate. Json Serialization public void processText() { securityUtil.logInAs("system"); Content content = pickRandomContent(); ProcessInstance processInstance = processRuntime.start(ProcessPayloadBuilder .start() .withProcessDefinitionKey("categorizeProcess") .withProcessInstanceName("Processing Content: " + content) .withVariable("content", content) .build()); }
  • 10. Non-Cloud Takeaways ● Embeddable as ever ● For spring the security and identity is plain spring ● New streamlined APIs for runtime interaction
  • 11. Learn. Connect. Collaborate. Cloud Overview - Key Concepts: - Connectors - RB - Supporting services (query, audit, notifications, apps) - Getting Started - Demo - Testing - CI
  • 12. Learn. Connect. Collaborate. What is Activiti Cloud?
  • 14. Learn. Connect. Collaborate. Which looks like... @StreamListener(value = ProcessingConnectorChannels.TWITTER_ANALYZER_CONSUMER) public void analyzeEnglishTweet(IntegrationRequest event) { String tweet = String.valueOf(event.getIntegrationContext().getInBoundVariables().get("text")); int sentiment = NLP.findSentiment(tweet); // … convert sentiment to attitude . // send attitude back as var Map<String, Object> results = new HashMap<>(); results.put("attitude", attitude); Message<IntegrationResult> message = IntegrationResultBuilder.resultFor(event, connectorProperties) .withOutboundVariables(results) .buildMessage(); integrationResultSender.send(message); }
  • 22. Learn. Connect. Collaborate. REST API and Java API - processRuntime and taskRuntime methods map directly to REST endpoints - Parameter and return types in Java API map to REST json objects - Acceptance tests use this to write clean test code - Enables natural transition from non-cloud to cloud
  • 24. Learn. Connect. Collaborate. Other Examples! - Try it out! - Gitbook - gitter
  • 25. Learn. Connect. Collaborate. The future is bright! - FaaS/knative - Istio integration - Spring Cloud next gen - JHipster integration - GraalVM - Activiti cloud operator