SlideShare a Scribd company logo
Camunda GraphQL
A query language for the Camunda API
Loydl Unternehmensberatung
Harald Loydl
IT Consultant
harald.loydl@loydl.ch
Daniel Vogel
Fullstack Javascript Developer
daniel.vogel@loydl.ch
Content
1. What is GraphQL?
2. Camunda GraphQL Demo
3. Camunda GraphQL Architecture
4. How to build GraphQL Clients
5. Outlook
1. What is GraphQL?
• API query language
• Types / Schema
• Clients query the server using GraphQL
• Introspection
• Automatic documentation
• The better REST
Your Domain Model is a Graph
User Task
tasks				0..*
0..1		assignee
Task
TaskEntity
User
UserEntity
Root Query
=
All Query
Capabilities
of the
Server
à Capability	to	query	for	tasks:	
http://localhost:8080/graphql/?query={tasks{name}}
Query
RootResolver
DEMO:
Camunda GraphQL
Demo: Get task names
Query: Result:
Demo: Get task names using REST
http://localhost:8080/engine-rest/engine/default/taskQuery:
Result: Over-Fetching
GraphQL:	 411	Bytes
REST:	 5000	Bytes			à 12	x	more	data
92%	of	data	not	needed
Demo: Get tasks + assignee
Query: Result:
Demo: Get tasks + assignee in REST
http://localhost:8080/engine-rest/engine/default/task
http://localhost:8080/engine-rest/engine/default/user/demo/profile
Queries
Result:
Under-Fetching	
• Multiple	requests	needed
• responses	need	processing	to	final	JSON
à (N+1)	request	problem	on	client	side
Demo: Type ahead/code completion, syntax check
Container
Shared Process Engine
Camunda Java API
REST
GraphQL
web/mobileTasklistClient
Server
web/mobile
microservice
React.js
new Tasklist
RESTRESTREST
REST
React /Native
Angular
iOS
Android
JavaScript
Architecture:
GraphQL-Server Implementation
• @SpringBootApplication as deployable war-file
• Configurable
• Basically one Java dependencies: graphql-java
• GraphQL schema text files *.graphqls (no Java code)
• GraphiQL client included, accessible via http://server/graphql/
• Security: Basic Auth, JWT
GraphQL client
• GraphiQL client at server:port/graphql/
• for exploring the Servers GraphQL capabilities
• Apollo Client from www.apollodata.com:
• Batching and Caching
• React /Native, Angular 2/4, iOS, Java/Android, plain JavaScript
• Apollo Client Dev Tools (Chrome): Debugging the client
• Production ready
Demo:
Vanilla JavaScript Apollo Client
GraphQL new Tasklist
node.js +
React.js
render
React.js
Forms
schema
Deployed Process Application
BPMN processes
Prototype
schemaschema
resolverresolverresolver
Camunda
Java API
formKey
React.js
Form
React.js
Form
React.js
Form
Client:Server: Server:
GraphQL Tasklist
• shows how to use the GraphQL Apollo Client and React.js
• GraphQL queries defined in code:
GraphQL Client Use Cases
• Dashboards / Monitoring – realtime/reactive
• Reporting
• Mobile Clients
• Other Services as “Clients” in a SOA/Microservices Architecture
Camunda GraphQL Benefits
• GraphQL is the better REST…
• Efficiency: Fewer bytes and roundtrips
• Type System: express our API data in a more natural way
• No more client specific endpoints (Web vs. mobile)
• Separation of concerns (backend vs frontend)
• No API versioning, formal deprecation
• Improved developer experience
Outlook
• Increase Java API coverage as you need it…
• … but keep GraphQL Schema coherent with Java API
• GraphQL used in Microservice Architectures (API-Gateway?)
• Push realtime updates to clients with GraphQL subscriptions
• Camunda Tasklist, Cockpit, Admin as GraphQL clients
• GraphQL in Camunda Core
Links
• Camunda GraphQL on GitHub:
https://github.com/camunda/camunda-bpm-graphql
• GraphQL Schema Language Cheat Sheet
• Explore GraphQL: https://www.graphql.com/
• GraphQL Specification (Facebook)
• Swagger to GraphQL:
https://github.com/yarax/swagger-to-graphql
• Moving API from REST to GraphQL:
https://medium.com/@raxwunter/moving-existing-api-from-rest-to-
graphql-205bab22c184
• GraphQL Schema Visualization: https://apis.guru/graphql-voyager/

More Related Content

What's hot

SpringOne Tour: Spring Boot 3 and Beyond
SpringOne Tour: Spring Boot 3 and BeyondSpringOne Tour: Spring Boot 3 and Beyond
SpringOne Tour: Spring Boot 3 and Beyond
VMware Tanzu
 
Using Camunda on Kubernetes through Operators
Using Camunda on Kubernetes through OperatorsUsing Camunda on Kubernetes through Operators
Using Camunda on Kubernetes through Operators
camunda services GmbH
 
Azure Site Recovery Bootcamp
Azure Site Recovery BootcampAzure Site Recovery Bootcamp
Azure Site Recovery Bootcamp
Asaf Nakash
 
What’s new in IBM BPM 8.5.7 CF2016.06 - CF2017.03
What’s new in IBM BPM 8.5.7 CF2016.06 - CF2017.03What’s new in IBM BPM 8.5.7 CF2016.06 - CF2017.03
What’s new in IBM BPM 8.5.7 CF2016.06 - CF2017.03
Dennis Parrott
 
User story concept for agiletourkaohsiung
User story concept for agiletourkaohsiung User story concept for agiletourkaohsiung
User story concept for agiletourkaohsiung
Jen-Chieh Ko
 
Database migration with flyway
Database migration  with flywayDatabase migration  with flyway
Database migration with flyway
Jonathan Holloway
 
Implementing Scrum with Kanban
Implementing Scrum with KanbanImplementing Scrum with Kanban
Implementing Scrum with Kanban
Tiffany (Wells) Scott, PSM, PSPO
 
Apache Kafka as Message Queue for your microservices and other occasions
Apache Kafka as Message Queue for your microservices and other occasionsApache Kafka as Message Queue for your microservices and other occasions
Apache Kafka as Message Queue for your microservices and other occasions
Michael Reinsch
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
Jakub Kubrynski
 
Azure Durable Functions
Azure Durable FunctionsAzure Durable Functions
Azure Durable Functions
Karthikeyan VK
 
Enable Authentication and Authorization with Azure Active Directory and Sprin...
Enable Authentication and Authorization with Azure Active Directory and Sprin...Enable Authentication and Authorization with Azure Active Directory and Sprin...
Enable Authentication and Authorization with Azure Active Directory and Sprin...
VMware Tanzu
 
Getting Started - Introduction to Backlog Grooming
Getting Started - Introduction to Backlog GroomingGetting Started - Introduction to Backlog Grooming
Getting Started - Introduction to Backlog Grooming
Easy Agile
 
Fundamentals of Agile Methodologies - Part II
Fundamentals of Agile Methodologies - Part IIFundamentals of Agile Methodologies - Part II
Fundamentals of Agile Methodologies - Part II
Gopinath Ramakrishnan, Ph.D, CSM
 
Azure SQL Database Managed Instance
Azure SQL Database Managed InstanceAzure SQL Database Managed Instance
Azure SQL Database Managed Instance
James Serra
 
Kanban Basics for Beginners Revised
Kanban Basics for Beginners RevisedKanban Basics for Beginners Revised
Kanban Basics for Beginners Revised
Zsolt Fabok
 
Life cycle selection
Life cycle selectionLife cycle selection
Life cycle selection
Portolearn
 
Jan Bosch | Agile Product Development: From Hunch to Hard Data
Jan Bosch | Agile Product Development: From Hunch to Hard DataJan Bosch | Agile Product Development: From Hunch to Hard Data
Jan Bosch | Agile Product Development: From Hunch to Hard Data
Optimizely
 
Spring Boot+Kafka: the New Enterprise Platform
Spring Boot+Kafka: the New Enterprise PlatformSpring Boot+Kafka: the New Enterprise Platform
Spring Boot+Kafka: the New Enterprise Platform
VMware Tanzu
 
Agile Requirements with User Story Mapping
Agile Requirements with User Story MappingAgile Requirements with User Story Mapping
Agile Requirements with User Story Mapping
Andreas Hägglund
 
Kafka Summit 2021 - Apache Kafka meets workflow engines
Kafka Summit 2021 - Apache Kafka meets workflow enginesKafka Summit 2021 - Apache Kafka meets workflow engines
Kafka Summit 2021 - Apache Kafka meets workflow engines
Bernd Ruecker
 

What's hot (20)

SpringOne Tour: Spring Boot 3 and Beyond
SpringOne Tour: Spring Boot 3 and BeyondSpringOne Tour: Spring Boot 3 and Beyond
SpringOne Tour: Spring Boot 3 and Beyond
 
Using Camunda on Kubernetes through Operators
Using Camunda on Kubernetes through OperatorsUsing Camunda on Kubernetes through Operators
Using Camunda on Kubernetes through Operators
 
Azure Site Recovery Bootcamp
Azure Site Recovery BootcampAzure Site Recovery Bootcamp
Azure Site Recovery Bootcamp
 
What’s new in IBM BPM 8.5.7 CF2016.06 - CF2017.03
What’s new in IBM BPM 8.5.7 CF2016.06 - CF2017.03What’s new in IBM BPM 8.5.7 CF2016.06 - CF2017.03
What’s new in IBM BPM 8.5.7 CF2016.06 - CF2017.03
 
User story concept for agiletourkaohsiung
User story concept for agiletourkaohsiung User story concept for agiletourkaohsiung
User story concept for agiletourkaohsiung
 
Database migration with flyway
Database migration  with flywayDatabase migration  with flyway
Database migration with flyway
 
Implementing Scrum with Kanban
Implementing Scrum with KanbanImplementing Scrum with Kanban
Implementing Scrum with Kanban
 
Apache Kafka as Message Queue for your microservices and other occasions
Apache Kafka as Message Queue for your microservices and other occasionsApache Kafka as Message Queue for your microservices and other occasions
Apache Kafka as Message Queue for your microservices and other occasions
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
 
Azure Durable Functions
Azure Durable FunctionsAzure Durable Functions
Azure Durable Functions
 
Enable Authentication and Authorization with Azure Active Directory and Sprin...
Enable Authentication and Authorization with Azure Active Directory and Sprin...Enable Authentication and Authorization with Azure Active Directory and Sprin...
Enable Authentication and Authorization with Azure Active Directory and Sprin...
 
Getting Started - Introduction to Backlog Grooming
Getting Started - Introduction to Backlog GroomingGetting Started - Introduction to Backlog Grooming
Getting Started - Introduction to Backlog Grooming
 
Fundamentals of Agile Methodologies - Part II
Fundamentals of Agile Methodologies - Part IIFundamentals of Agile Methodologies - Part II
Fundamentals of Agile Methodologies - Part II
 
Azure SQL Database Managed Instance
Azure SQL Database Managed InstanceAzure SQL Database Managed Instance
Azure SQL Database Managed Instance
 
Kanban Basics for Beginners Revised
Kanban Basics for Beginners RevisedKanban Basics for Beginners Revised
Kanban Basics for Beginners Revised
 
Life cycle selection
Life cycle selectionLife cycle selection
Life cycle selection
 
Jan Bosch | Agile Product Development: From Hunch to Hard Data
Jan Bosch | Agile Product Development: From Hunch to Hard DataJan Bosch | Agile Product Development: From Hunch to Hard Data
Jan Bosch | Agile Product Development: From Hunch to Hard Data
 
Spring Boot+Kafka: the New Enterprise Platform
Spring Boot+Kafka: the New Enterprise PlatformSpring Boot+Kafka: the New Enterprise Platform
Spring Boot+Kafka: the New Enterprise Platform
 
Agile Requirements with User Story Mapping
Agile Requirements with User Story MappingAgile Requirements with User Story Mapping
Agile Requirements with User Story Mapping
 
Kafka Summit 2021 - Apache Kafka meets workflow engines
Kafka Summit 2021 - Apache Kafka meets workflow enginesKafka Summit 2021 - Apache Kafka meets workflow engines
Kafka Summit 2021 - Apache Kafka meets workflow engines
 

Similar to Camunda GraphQL Extension (09/2017 Berlin)

GraphQL across the stack: How everything fits together
GraphQL across the stack: How everything fits togetherGraphQL across the stack: How everything fits together
GraphQL across the stack: How everything fits together
Sashko Stubailo
 
Your API on Steroids
Your API on Steroids Your API on Steroids
Your API on Steroids
QAware GmbH
 
How easy (or hard) it is to monitor your graph ql service performance
How easy (or hard) it is to monitor your graph ql service performanceHow easy (or hard) it is to monitor your graph ql service performance
How easy (or hard) it is to monitor your graph ql service performance
Red Hat
 
GraphQL and its schema as a universal layer for database access
GraphQL and its schema as a universal layer for database accessGraphQL and its schema as a universal layer for database access
GraphQL and its schema as a universal layer for database access
Connected Data World
 
CONDG April 23 2020 - Baskar Rao - GraphQL
CONDG April 23 2020 - Baskar Rao - GraphQLCONDG April 23 2020 - Baskar Rao - GraphQL
CONDG April 23 2020 - Baskar Rao - GraphQL
Matthew Groves
 
How to provide a GraphQL API - I want it that way
How to provide a GraphQL API - I want it that wayHow to provide a GraphQL API - I want it that way
How to provide a GraphQL API - I want it that way
QAware GmbH
 
Graphql usage
Graphql usageGraphql usage
Graphql usage
Valentin Buryakov
 
apidays LIVE Australia 2020 - Have your cake and eat it too: GraphQL? REST? W...
apidays LIVE Australia 2020 - Have your cake and eat it too: GraphQL? REST? W...apidays LIVE Australia 2020 - Have your cake and eat it too: GraphQL? REST? W...
apidays LIVE Australia 2020 - Have your cake and eat it too: GraphQL? REST? W...
apidays
 
Tutorial: Building a GraphQL API in PHP
Tutorial: Building a GraphQL API in PHPTutorial: Building a GraphQL API in PHP
Tutorial: Building a GraphQL API in PHP
Andrew Rota
 
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
Rob Crowley
 
Serverless GraphQL for Product Developers
Serverless GraphQL for Product DevelopersServerless GraphQL for Product Developers
Serverless GraphQL for Product Developers
Sashko Stubailo
 
Simplify Access to Data from Pivotal GemFire Using the GraphQL (G2QL) Extension
Simplify Access to Data from Pivotal GemFire Using the GraphQL (G2QL) ExtensionSimplify Access to Data from Pivotal GemFire Using the GraphQL (G2QL) Extension
Simplify Access to Data from Pivotal GemFire Using the GraphQL (G2QL) Extension
VMware Tanzu
 
Graphql presentation
Graphql presentationGraphql presentation
Graphql presentation
Vibhor Grover
 
Exposing GraphQLs as Managed APIs
Exposing GraphQLs as Managed APIsExposing GraphQLs as Managed APIs
Exposing GraphQLs as Managed APIs
WSO2
 
Modern APIs with GraphQL
Modern APIs with GraphQLModern APIs with GraphQL
Modern APIs with GraphQL
Taikai
 
The GraphQL Ecosystem in 2018
The GraphQL Ecosystem in 2018The GraphQL Ecosystem in 2018
The GraphQL Ecosystem in 2018
Nikolas Burk
 
Your API on Steroids - Retrofitting GraphQL by Code, Cloud Native or Serverless
Your API on Steroids - Retrofitting GraphQL by Code, Cloud Native or ServerlessYour API on Steroids - Retrofitting GraphQL by Code, Cloud Native or Serverless
Your API on Steroids - Retrofitting GraphQL by Code, Cloud Native or Serverless
QAware GmbH
 
APIdays Helsinki 2019 - Beyond REST: GraphQL API Management with Amit Acharya...
APIdays Helsinki 2019 - Beyond REST: GraphQL API Management with Amit Acharya...APIdays Helsinki 2019 - Beyond REST: GraphQL API Management with Amit Acharya...
APIdays Helsinki 2019 - Beyond REST: GraphQL API Management with Amit Acharya...
apidays
 
Angular App Presentation
Angular App PresentationAngular App Presentation
Angular App Presentation
Elizabeth Long
 
Implementing OpenAPI and GraphQL services with gRPC
Implementing OpenAPI and GraphQL services with gRPCImplementing OpenAPI and GraphQL services with gRPC
Implementing OpenAPI and GraphQL services with gRPC
Tim Burks
 

Similar to Camunda GraphQL Extension (09/2017 Berlin) (20)

GraphQL across the stack: How everything fits together
GraphQL across the stack: How everything fits togetherGraphQL across the stack: How everything fits together
GraphQL across the stack: How everything fits together
 
Your API on Steroids
Your API on Steroids Your API on Steroids
Your API on Steroids
 
How easy (or hard) it is to monitor your graph ql service performance
How easy (or hard) it is to monitor your graph ql service performanceHow easy (or hard) it is to monitor your graph ql service performance
How easy (or hard) it is to monitor your graph ql service performance
 
GraphQL and its schema as a universal layer for database access
GraphQL and its schema as a universal layer for database accessGraphQL and its schema as a universal layer for database access
GraphQL and its schema as a universal layer for database access
 
CONDG April 23 2020 - Baskar Rao - GraphQL
CONDG April 23 2020 - Baskar Rao - GraphQLCONDG April 23 2020 - Baskar Rao - GraphQL
CONDG April 23 2020 - Baskar Rao - GraphQL
 
How to provide a GraphQL API - I want it that way
How to provide a GraphQL API - I want it that wayHow to provide a GraphQL API - I want it that way
How to provide a GraphQL API - I want it that way
 
Graphql usage
Graphql usageGraphql usage
Graphql usage
 
apidays LIVE Australia 2020 - Have your cake and eat it too: GraphQL? REST? W...
apidays LIVE Australia 2020 - Have your cake and eat it too: GraphQL? REST? W...apidays LIVE Australia 2020 - Have your cake and eat it too: GraphQL? REST? W...
apidays LIVE Australia 2020 - Have your cake and eat it too: GraphQL? REST? W...
 
Tutorial: Building a GraphQL API in PHP
Tutorial: Building a GraphQL API in PHPTutorial: Building a GraphQL API in PHP
Tutorial: Building a GraphQL API in PHP
 
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
 
Serverless GraphQL for Product Developers
Serverless GraphQL for Product DevelopersServerless GraphQL for Product Developers
Serverless GraphQL for Product Developers
 
Simplify Access to Data from Pivotal GemFire Using the GraphQL (G2QL) Extension
Simplify Access to Data from Pivotal GemFire Using the GraphQL (G2QL) ExtensionSimplify Access to Data from Pivotal GemFire Using the GraphQL (G2QL) Extension
Simplify Access to Data from Pivotal GemFire Using the GraphQL (G2QL) Extension
 
Graphql presentation
Graphql presentationGraphql presentation
Graphql presentation
 
Exposing GraphQLs as Managed APIs
Exposing GraphQLs as Managed APIsExposing GraphQLs as Managed APIs
Exposing GraphQLs as Managed APIs
 
Modern APIs with GraphQL
Modern APIs with GraphQLModern APIs with GraphQL
Modern APIs with GraphQL
 
The GraphQL Ecosystem in 2018
The GraphQL Ecosystem in 2018The GraphQL Ecosystem in 2018
The GraphQL Ecosystem in 2018
 
Your API on Steroids - Retrofitting GraphQL by Code, Cloud Native or Serverless
Your API on Steroids - Retrofitting GraphQL by Code, Cloud Native or ServerlessYour API on Steroids - Retrofitting GraphQL by Code, Cloud Native or Serverless
Your API on Steroids - Retrofitting GraphQL by Code, Cloud Native or Serverless
 
APIdays Helsinki 2019 - Beyond REST: GraphQL API Management with Amit Acharya...
APIdays Helsinki 2019 - Beyond REST: GraphQL API Management with Amit Acharya...APIdays Helsinki 2019 - Beyond REST: GraphQL API Management with Amit Acharya...
APIdays Helsinki 2019 - Beyond REST: GraphQL API Management with Amit Acharya...
 
Angular App Presentation
Angular App PresentationAngular App Presentation
Angular App Presentation
 
Implementing OpenAPI and GraphQL services with gRPC
Implementing OpenAPI and GraphQL services with gRPCImplementing OpenAPI and GraphQL services with gRPC
Implementing OpenAPI and GraphQL services with gRPC
 

Recently uploaded

Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 

Recently uploaded (20)

Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 

Camunda GraphQL Extension (09/2017 Berlin)

  • 1. Camunda GraphQL A query language for the Camunda API
  • 2. Loydl Unternehmensberatung Harald Loydl IT Consultant harald.loydl@loydl.ch Daniel Vogel Fullstack Javascript Developer daniel.vogel@loydl.ch
  • 3. Content 1. What is GraphQL? 2. Camunda GraphQL Demo 3. Camunda GraphQL Architecture 4. How to build GraphQL Clients 5. Outlook
  • 4. 1. What is GraphQL? • API query language • Types / Schema • Clients query the server using GraphQL • Introspection • Automatic documentation • The better REST
  • 5.
  • 6. Your Domain Model is a Graph User Task tasks 0..* 0..1 assignee
  • 9. Root Query = All Query Capabilities of the Server à Capability to query for tasks: http://localhost:8080/graphql/?query={tasks{name}}
  • 11.
  • 13. Demo: Get task names Query: Result:
  • 14. Demo: Get task names using REST http://localhost:8080/engine-rest/engine/default/taskQuery: Result: Over-Fetching GraphQL: 411 Bytes REST: 5000 Bytes à 12 x more data 92% of data not needed
  • 15. Demo: Get tasks + assignee Query: Result:
  • 16. Demo: Get tasks + assignee in REST http://localhost:8080/engine-rest/engine/default/task http://localhost:8080/engine-rest/engine/default/user/demo/profile Queries Result: Under-Fetching • Multiple requests needed • responses need processing to final JSON à (N+1) request problem on client side
  • 17. Demo: Type ahead/code completion, syntax check
  • 18.
  • 19. Container Shared Process Engine Camunda Java API REST GraphQL web/mobileTasklistClient Server web/mobile microservice React.js new Tasklist RESTRESTREST REST React /Native Angular iOS Android JavaScript Architecture:
  • 20. GraphQL-Server Implementation • @SpringBootApplication as deployable war-file • Configurable • Basically one Java dependencies: graphql-java • GraphQL schema text files *.graphqls (no Java code) • GraphiQL client included, accessible via http://server/graphql/ • Security: Basic Auth, JWT
  • 21. GraphQL client • GraphiQL client at server:port/graphql/ • for exploring the Servers GraphQL capabilities • Apollo Client from www.apollodata.com: • Batching and Caching • React /Native, Angular 2/4, iOS, Java/Android, plain JavaScript • Apollo Client Dev Tools (Chrome): Debugging the client • Production ready
  • 23. GraphQL new Tasklist node.js + React.js render React.js Forms schema Deployed Process Application BPMN processes Prototype schemaschema resolverresolverresolver Camunda Java API formKey React.js Form React.js Form React.js Form Client:Server: Server:
  • 24. GraphQL Tasklist • shows how to use the GraphQL Apollo Client and React.js • GraphQL queries defined in code:
  • 25. GraphQL Client Use Cases • Dashboards / Monitoring – realtime/reactive • Reporting • Mobile Clients • Other Services as “Clients” in a SOA/Microservices Architecture
  • 26. Camunda GraphQL Benefits • GraphQL is the better REST… • Efficiency: Fewer bytes and roundtrips • Type System: express our API data in a more natural way • No more client specific endpoints (Web vs. mobile) • Separation of concerns (backend vs frontend) • No API versioning, formal deprecation • Improved developer experience
  • 27. Outlook • Increase Java API coverage as you need it… • … but keep GraphQL Schema coherent with Java API • GraphQL used in Microservice Architectures (API-Gateway?) • Push realtime updates to clients with GraphQL subscriptions • Camunda Tasklist, Cockpit, Admin as GraphQL clients • GraphQL in Camunda Core
  • 28. Links • Camunda GraphQL on GitHub: https://github.com/camunda/camunda-bpm-graphql • GraphQL Schema Language Cheat Sheet • Explore GraphQL: https://www.graphql.com/ • GraphQL Specification (Facebook) • Swagger to GraphQL: https://github.com/yarax/swagger-to-graphql • Moving API from REST to GraphQL: https://medium.com/@raxwunter/moving-existing-api-from-rest-to- graphql-205bab22c184 • GraphQL Schema Visualization: https://apis.guru/graphql-voyager/