SlideShare ist ein Scribd-Unternehmen logo
1 von 49
How Watson, Bluemix, Cloudant, and
XPages Can Work Together In A Real
World Application
Frank van der Linden, elstar IT
Full stack Java Developer
DEV-1129
IBM Connect 2017 Conference
Me
• Freelance Full stack Java developer
• Owner of elstar IT
• Curious of new technology
• IBM Champion 2013, 2014 and 2017
• Run (mountain) marathons
How do we proceed
• HR Assistant
• Running it on IBM BlueMix
• Store it in Cloudant
• Analyse it with IBM Watson
• Show it with Charts
• Lessons learned
HR Assistant
Demo time
Frédéric Dehédin
• At the time of the project: Senior Application developer
at Belsoft Collaboration AG
• @fdehedin
• http://www.fdehedin.ch/
Facts
• Winner of the ICS Developer Competition 2016
• Runs on the XSP runtime on IBM BlueMix
• Store all the data in Cloudant
• Analyse jobs and job applications with IBM Watson
• Backend is pure Java, no Java Notes objects
Add ons
• Cloudant connector OSGi plugin
• Take out the security issue
• Storing in and retrieving from Cloudant. JSON <—> POJO
• Can be accessed from Java backend.
• Do the heavy lifting. Don't reinvent the wheel.
Add ons
• Jackson Mapper OSGi plugin
• Take out the security issue
• Used with the IBM Watson services
• Conversion of JSON to POJO
• Makes @Annotations available in Java back end
Roadmap
Running it on IBM BlueMix
Overview
• BlueMix is IBM PaaS, with various services
• We picked a few services
Credentials
Deploy to IBM BlueMix
• Fill the BlueMix Manifest file under
Application Configuration
• Will result in a yaml file
Deploy to IBM BlueMix
• Set location of deployment
• Add shared-plugin folder
• Add the OSGi plugins
Deploy to IBM BlueMix
• Deploy Application
Store it in Cloudant
What is Cloudant
• It is the cloud version of CouchDb
• It is document based
• CouchDb is created by Damien Katz
• Cloudant is bought by IBM
• Is like MongoDb or NSF a NoSQL datastore
What is Cloudant
• Data stored as JSON
• View and Search ‘formula’ defined in javascript
• Replication
• Tasks
• Build in API
• No annoying limitations
Cloudant database
Design document
• Special type of document
• Holds javascript for View and FT Search definition.
• It is JSON everywhere.
• _rev and _id are reserved parameters.
• doc{}, is the actual data from application
Document
Attachment @ Cloudant
• Stored as base64 encoded String
• Can be as standalone
• Or as part of Document (we choose this way)
• Store id as attachmentId, so it can be retrieved when needed
Attachment @ Cloudant
• AttachmentDAO
Attachment @ Cloudant
• AttachmentController
• Convert upload to Attachment
object
Attachment @ Cloudant
• ControllerBase
• All controllers can use these methods
Attachment @ Cloudant
• Servlet is called in application for download
• base64 data for the image tag
Analyse it with IBM Watson
Watson API explorer
• Very useful to test input and see what is returned
Services we used
• Tone analyser, to get the tone of the text
• Personality Insight, to determine the personality of the job applicant
• AlchemyLanguage, to get the keywords from the Job and Job
application
tone analyser schema
Tone analyser
• The same structure to call the Watson services
Tone analyser
• ToneAnalyzerRequest contain the text to analyse
• ToneAnalyzerInjector gets text from model class
Tone analyser
• Post the data to IBM Watson service (1)
• Convert the response back to Java class (2)
1
2
Tone analyser
• ToneAnalyzerResponse holds the results
• Use @annotations from Jackson to map
JSON to properties
• Result is the source of the charts
Show it with charts
ChartJS
• Open source HTML5 javascript based
• Responsive
• DataSets = Array of Objects
ChartJS
• Factory to produce the chart data, accepts objects
• Factory set default Chart Type, like Radar or Bar
ChartJS
ChartJS
• Custom control to display data
ChartJS
• Custom control to display data.
Lessons learned
Lessons learned
• No Single Sign On service on all datacenters
• Manifest yaml file and GIT are not an happy couple
• API’s are not consistent across Watson services
• Cloudant is a very reliable, flexible and fast NoSQL datastore
• IBM Watson services are really powerful.
Lessons learned
• There is no RichText on the web, it is HTML
• Handling attachments on Cloudant was a challenge. Took some time get a
robust solution.
• BTW the way, we won the competition ;-)
Questions
Resources
• HR Assistant on BlueMix
• https://hrassistant.eu-gb.mybluemix.net/
• HR Assistant code on GitHub
• https://github.com/flinden68/HR-Assistant
• IBM Watson services
• https://www.ibm.com/watson/developercloud/services-catalog.html
• IBM Cloudant documentation
• https://docs.cloudant.com/
• HR Assistant Demo
• https://youtu.be/yM5Foxn9Fvg
Resources
• OSGi Cloudant connector
• https://bitbucket.org/flinden68/cloudant-connector
• OSGi Jackson JSON Wrapper
• https://bitbucket.org/flinden68/jackson-json-mapper-plugin
• ChartJS
• http://www.chartjs.org/
• Watson API Explorer
• https://watson-api-explorer.mybluemix.net/
Reach out to me
• @flinden68
• http://www.elstarit.nl
• flinden68@elstarit.nl
• https://nl.linkedin.com/in/flinden68

Weitere ähnliche Inhalte

Was ist angesagt?

When Smalltalk images get large
When Smalltalk images get largeWhen Smalltalk images get large
When Smalltalk images get large
ESUG
 

Was ist angesagt? (20)

Workflow All the Things with Azure Logic Apps
Workflow All the Things with Azure Logic AppsWorkflow All the Things with Azure Logic Apps
Workflow All the Things with Azure Logic Apps
 
MongoDB World 2018: Solving Your Backup Needs Using MongoDB Ops Manager, Clou...
MongoDB World 2018: Solving Your Backup Needs Using MongoDB Ops Manager, Clou...MongoDB World 2018: Solving Your Backup Needs Using MongoDB Ops Manager, Clou...
MongoDB World 2018: Solving Your Backup Needs Using MongoDB Ops Manager, Clou...
 
MongoDB World 2018: Data Models for Storing Sophisticated Customer Journeys i...
MongoDB World 2018: Data Models for Storing Sophisticated Customer Journeys i...MongoDB World 2018: Data Models for Storing Sophisticated Customer Journeys i...
MongoDB World 2018: Data Models for Storing Sophisticated Customer Journeys i...
 
The Future of Data Engineering - 2019 InfoQ QConSF
The Future of Data Engineering - 2019 InfoQ QConSFThe Future of Data Engineering - 2019 InfoQ QConSF
The Future of Data Engineering - 2019 InfoQ QConSF
 
MongoDB World 2018: Replatforming: Switching to MongoDB for Flexibility, Scal...
MongoDB World 2018: Replatforming: Switching to MongoDB for Flexibility, Scal...MongoDB World 2018: Replatforming: Switching to MongoDB for Flexibility, Scal...
MongoDB World 2018: Replatforming: Switching to MongoDB for Flexibility, Scal...
 
Elk meetup
Elk meetupElk meetup
Elk meetup
 
Integration Monday - BizTalk Migrator Deep Dive
Integration Monday - BizTalk Migrator Deep DiveIntegration Monday - BizTalk Migrator Deep Dive
Integration Monday - BizTalk Migrator Deep Dive
 
Altitude San Francisco 2018: Scale and Stability at the Edge with 1.4 Billion...
Altitude San Francisco 2018: Scale and Stability at the Edge with 1.4 Billion...Altitude San Francisco 2018: Scale and Stability at the Edge with 1.4 Billion...
Altitude San Francisco 2018: Scale and Stability at the Edge with 1.4 Billion...
 
Micro Services in .NET Core and Docker
Micro Services in .NET Core and DockerMicro Services in .NET Core and Docker
Micro Services in .NET Core and Docker
 
UWP apps development - Part 2
UWP apps development - Part 2UWP apps development - Part 2
UWP apps development - Part 2
 
Angular4 kickstart
Angular4 kickstartAngular4 kickstart
Angular4 kickstart
 
Intro to React
Intro to ReactIntro to React
Intro to React
 
The Serverless Native Mindset: Ben Kehoe, iRobot, Serverless NYC 2018
The Serverless Native Mindset: Ben Kehoe, iRobot, Serverless NYC 2018The Serverless Native Mindset: Ben Kehoe, iRobot, Serverless NYC 2018
The Serverless Native Mindset: Ben Kehoe, iRobot, Serverless NYC 2018
 
Architectural Patterns for Scaling Microservices and APIs - GlueCon 2015
Architectural Patterns for Scaling Microservices and APIs - GlueCon 2015Architectural Patterns for Scaling Microservices and APIs - GlueCon 2015
Architectural Patterns for Scaling Microservices and APIs - GlueCon 2015
 
Matt Chung (Independent) - Serverless application with AWS Lambda
Matt Chung (Independent) - Serverless application with AWS Lambda Matt Chung (Independent) - Serverless application with AWS Lambda
Matt Chung (Independent) - Serverless application with AWS Lambda
 
Icinga Camp Bangalore - Icinga and Icinga Director
Icinga Camp Bangalore - Icinga and Icinga Director Icinga Camp Bangalore - Icinga and Icinga Director
Icinga Camp Bangalore - Icinga and Icinga Director
 
Building the Serverless Container Experience: Kevin McGrath, Spotinst, Server...
Building the Serverless Container Experience: Kevin McGrath, Spotinst, Server...Building the Serverless Container Experience: Kevin McGrath, Spotinst, Server...
Building the Serverless Container Experience: Kevin McGrath, Spotinst, Server...
 
Azure Functions Overview
Azure Functions OverviewAzure Functions Overview
Azure Functions Overview
 
When Smalltalk images get large
When Smalltalk images get largeWhen Smalltalk images get large
When Smalltalk images get large
 
Refactoring Rails applications with RubyMine
Refactoring Rails applications with RubyMineRefactoring Rails applications with RubyMine
Refactoring Rails applications with RubyMine
 

Andere mochten auch

Andere mochten auch (20)

IBM Connect 2017: Refresh and Extend IBM Domino Applications
IBM Connect 2017: Refresh and Extend IBM Domino ApplicationsIBM Connect 2017: Refresh and Extend IBM Domino Applications
IBM Connect 2017: Refresh and Extend IBM Domino Applications
 
OpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino DevelopmentOpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino Development
 
Big Data With Graphs
Big Data With GraphsBig Data With Graphs
Big Data With Graphs
 
DEV-1467 - Darwino
DEV-1467 - DarwinoDEV-1467 - Darwino
DEV-1467 - Darwino
 
IBM Connections Adminblast - Connect17 (DEV 1268)
IBM Connections Adminblast - Connect17 (DEV 1268)IBM Connections Adminblast - Connect17 (DEV 1268)
IBM Connections Adminblast - Connect17 (DEV 1268)
 
IBM Connect 2017 - Beyond Domino Designer
IBM Connect 2017 - Beyond Domino DesignerIBM Connect 2017 - Beyond Domino Designer
IBM Connect 2017 - Beyond Domino Designer
 
Socialytics: Accelerating IBM Connections Adoption with Watson Analytics
Socialytics: Accelerating IBM Connections Adoption with Watson AnalyticsSocialytics: Accelerating IBM Connections Adoption with Watson Analytics
Socialytics: Accelerating IBM Connections Adoption with Watson Analytics
 
GraphQL 101
GraphQL 101GraphQL 101
GraphQL 101
 
DEV-1550: Why Java 8? Or, What's a Lambda? – IBM Connect 2017
DEV-1550: Why Java 8? Or, What's a Lambda? – IBM Connect 2017DEV-1550: Why Java 8? Or, What's a Lambda? – IBM Connect 2017
DEV-1550: Why Java 8? Or, What's a Lambda? – IBM Connect 2017
 
Beyond XPages
Beyond XPagesBeyond XPages
Beyond XPages
 
IBM Social Business Journey and IBM Verse / cloud collaboration #MWLUG2015
IBM Social Business Journey and IBM Verse / cloud collaboration #MWLUG2015IBM Social Business Journey and IBM Verse / cloud collaboration #MWLUG2015
IBM Social Business Journey and IBM Verse / cloud collaboration #MWLUG2015
 
One Firm's Wild Ride to The Cloud
One Firm's Wild Ride to The CloudOne Firm's Wild Ride to The Cloud
One Firm's Wild Ride to The Cloud
 
DEV-1185: IBM Notes Performance Boost - Reloaded – IBM Connect 2017
DEV-1185: IBM Notes Performance Boost - Reloaded – IBM Connect 2017DEV-1185: IBM Notes Performance Boost - Reloaded – IBM Connect 2017
DEV-1185: IBM Notes Performance Boost - Reloaded – IBM Connect 2017
 
IBM Presents the IBM Notes and Domino Roadmap
IBM Presents the IBM Notes and Domino RoadmapIBM Presents the IBM Notes and Domino Roadmap
IBM Presents the IBM Notes and Domino Roadmap
 
Your App Deserves More – The Art of App Modernization
Your App Deserves More – The Art of App ModernizationYour App Deserves More – The Art of App Modernization
Your App Deserves More – The Art of App Modernization
 
Let me introduce you: DOTS
Let me introduce you: DOTSLet me introduce you: DOTS
Let me introduce you: DOTS
 
IBM Messaging Roadmap
IBM Messaging RoadmapIBM Messaging Roadmap
IBM Messaging Roadmap
 
Meta etiquetas
Meta etiquetasMeta etiquetas
Meta etiquetas
 
QUẢN TRỊ DỊCH VỤ_ĐH NgÂN HÀNG
QUẢN TRỊ DỊCH VỤ_ĐH NgÂN HÀNGQUẢN TRỊ DỊCH VỤ_ĐH NgÂN HÀNG
QUẢN TRỊ DỊCH VỤ_ĐH NgÂN HÀNG
 
SLIDESHARE
SLIDESHARESLIDESHARE
SLIDESHARE
 

Ähnlich wie DEV-1129 How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Real World Application

Netflix oss season 2 episode 1 - meetup Lightning talks
Netflix oss   season 2 episode 1 - meetup Lightning talksNetflix oss   season 2 episode 1 - meetup Lightning talks
Netflix oss season 2 episode 1 - meetup Lightning talks
Ruslan Meshenberg
 
Cloud computing workshop at IIT bombay
Cloud computing workshop at IIT bombayCloud computing workshop at IIT bombay
Cloud computing workshop at IIT bombay
Nilesh Satpute
 

Ähnlich wie DEV-1129 How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Real World Application (20)

DEV03 - How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Real...
DEV03 - How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Real...DEV03 - How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Real...
DEV03 - How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Real...
 
Cloudant e XPages
Cloudant e XPagesCloudant e XPages
Cloudant e XPages
 
9 - Making Sense of Containers in the Microsoft Cloud
9 - Making Sense of Containers in the Microsoft Cloud9 - Making Sense of Containers in the Microsoft Cloud
9 - Making Sense of Containers in the Microsoft Cloud
 
Container Orchestration for .NET Developers
Container Orchestration for .NET DevelopersContainer Orchestration for .NET Developers
Container Orchestration for .NET Developers
 
Utilizing the open ntf domino api
Utilizing the open ntf domino apiUtilizing the open ntf domino api
Utilizing the open ntf domino api
 
Windows 8 Apps and the Outside World
Windows 8 Apps and the Outside WorldWindows 8 Apps and the Outside World
Windows 8 Apps and the Outside World
 
Working and Features of HTML5 and PhoneGap - An Overview
Working and Features of HTML5 and PhoneGap - An OverviewWorking and Features of HTML5 and PhoneGap - An Overview
Working and Features of HTML5 and PhoneGap - An Overview
 
Mongo DB at Community Engine
Mongo DB at Community EngineMongo DB at Community Engine
Mongo DB at Community Engine
 
MongoDB at community engine
MongoDB at community engineMongoDB at community engine
MongoDB at community engine
 
IBM - Introduction to Cloudant
IBM - Introduction to CloudantIBM - Introduction to Cloudant
IBM - Introduction to Cloudant
 
0812 2014 01_toronto-smac meetup_i_os_cloudant_worklight_part2
0812 2014 01_toronto-smac meetup_i_os_cloudant_worklight_part20812 2014 01_toronto-smac meetup_i_os_cloudant_worklight_part2
0812 2014 01_toronto-smac meetup_i_os_cloudant_worklight_part2
 
Ibm db2update2019 icp4 data
Ibm db2update2019   icp4 dataIbm db2update2019   icp4 data
Ibm db2update2019 icp4 data
 
Netflix oss season 2 episode 1 - meetup Lightning talks
Netflix oss   season 2 episode 1 - meetup Lightning talksNetflix oss   season 2 episode 1 - meetup Lightning talks
Netflix oss season 2 episode 1 - meetup Lightning talks
 
Tear It Down, Build It Back Up: Empowering Developers with Amazon CloudFormation
Tear It Down, Build It Back Up: Empowering Developers with Amazon CloudFormationTear It Down, Build It Back Up: Empowering Developers with Amazon CloudFormation
Tear It Down, Build It Back Up: Empowering Developers with Amazon CloudFormation
 
Cloud patterns
Cloud patternsCloud patterns
Cloud patterns
 
Aws-What You Need to Know_Simon Elisha
Aws-What You Need to Know_Simon ElishaAws-What You Need to Know_Simon Elisha
Aws-What You Need to Know_Simon Elisha
 
Introduction to node.js aka NodeJS
Introduction to node.js aka NodeJSIntroduction to node.js aka NodeJS
Introduction to node.js aka NodeJS
 
Cloud computing workshop at IIT bombay
Cloud computing workshop at IIT bombayCloud computing workshop at IIT bombay
Cloud computing workshop at IIT bombay
 
Forge - DevCon 2016: From Desktop to the Cloud with Forge
Forge - DevCon 2016: From Desktop to the Cloud with ForgeForge - DevCon 2016: From Desktop to the Cloud with Forge
Forge - DevCon 2016: From Desktop to the Cloud with Forge
 
Webinar Docker Tri Series
Webinar Docker Tri SeriesWebinar Docker Tri Series
Webinar Docker Tri Series
 

Mehr von Frank van der Linden

how to connect your app to the activity stream with x-pages
how to connect your app to the activity stream with x-pageshow to connect your app to the activity stream with x-pages
how to connect your app to the activity stream with x-pages
Frank van der Linden
 
Domino point2012 integrate domino designer with cvs source control
Domino point2012 integrate domino designer with cvs source controlDomino point2012 integrate domino designer with cvs source control
Domino point2012 integrate domino designer with cvs source control
Frank van der Linden
 

Mehr von Frank van der Linden (20)

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
 
Engage 2020: Hello are you listening, There is stream for everything
Engage 2020: Hello are you listening, There is stream for everythingEngage 2020: Hello are you listening, There is stream for everything
Engage 2020: Hello are you listening, There is stream for everything
 
NCUG 2019: Super charge your API’s with Reactive streams
NCUG 2019: Super charge your API’s with Reactive streamsNCUG 2019: Super charge your API’s with Reactive streams
NCUG 2019: Super charge your API’s with Reactive streams
 
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
 
Engage 2019: The good, the bad and the ugly: a not so objective view on front...
Engage 2019: The good, the bad and the ugly: a not so objective view on front...Engage 2019: The good, the bad and the ugly: a not so objective view on front...
Engage 2019: The good, the bad and the ugly: a not so objective view on front...
 
Social connections14: Super charge your API’s with Reactive streams
Social connections14: Super charge your API’s with Reactive streamsSocial connections14: Super charge your API’s with Reactive streams
Social connections14: Super charge your API’s with Reactive streams
 
Icon UK 2018 - Spring forward: an introduction to Spring boot and Thymeleaf f...
Icon UK 2018 - Spring forward: an introduction to Spring boot and Thymeleaf f...Icon UK 2018 - Spring forward: an introduction to Spring boot and Thymeleaf f...
Icon UK 2018 - Spring forward: an introduction to Spring boot and Thymeleaf f...
 
Spring forward: an introduction to Spring boot and Thymeleaf
Spring forward: an introduction to Spring boot and ThymeleafSpring forward: an introduction to Spring boot and Thymeleaf
Spring forward: an introduction to Spring boot and Thymeleaf
 
Let's serve your data
Let's serve your dataLet's serve your data
Let's serve your data
 
Let's server your Data
Let's server your DataLet's server your Data
Let's server your Data
 
Don't worry with bower
Don't worry with bowerDon't worry with bower
Don't worry with bower
 
Bccon use notes objects in memory and other useful
Bccon   use notes objects in memory and other usefulBccon   use notes objects in memory and other useful
Bccon use notes objects in memory and other useful
 
Use notes objects in memory and other useful java tips for xpages development
Use notes objects in memory and other useful java tips for xpages developmentUse notes objects in memory and other useful java tips for xpages development
Use notes objects in memory and other useful java tips for xpages development
 
An XPager's Guide to Process Server-Side Jobs on Domino
An XPager's Guide to Process Server-Side Jobs on DominoAn XPager's Guide to Process Server-Side Jobs on Domino
An XPager's Guide to Process Server-Side Jobs on Domino
 
The power of dots
The power of dotsThe power of dots
The power of dots
 
Integrate domino designer with cvs source control
Integrate domino designer with cvs source controlIntegrate domino designer with cvs source control
Integrate domino designer with cvs source control
 
how to connect your app to the activity stream with x-pages
how to connect your app to the activity stream with x-pageshow to connect your app to the activity stream with x-pages
how to connect your app to the activity stream with x-pages
 
Uklug2012 yellow and blue stream
Uklug2012 yellow and blue streamUklug2012 yellow and blue stream
Uklug2012 yellow and blue stream
 
Domino point2012 integrate domino designer with cvs source control
Domino point2012 integrate domino designer with cvs source controlDomino point2012 integrate domino designer with cvs source control
Domino point2012 integrate domino designer with cvs source control
 
Dnug2012 yellow and blue stream
Dnug2012 yellow and blue streamDnug2012 yellow and blue stream
Dnug2012 yellow and blue stream
 

Kürzlich hochgeladen

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Kürzlich hochgeladen (20)

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 

DEV-1129 How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Real World Application

  • 1. How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Real World Application Frank van der Linden, elstar IT Full stack Java Developer DEV-1129 IBM Connect 2017 Conference
  • 2. Me • Freelance Full stack Java developer • Owner of elstar IT • Curious of new technology • IBM Champion 2013, 2014 and 2017 • Run (mountain) marathons
  • 3. How do we proceed • HR Assistant • Running it on IBM BlueMix • Store it in Cloudant • Analyse it with IBM Watson • Show it with Charts • Lessons learned
  • 6.
  • 7. Frédéric Dehédin • At the time of the project: Senior Application developer at Belsoft Collaboration AG • @fdehedin • http://www.fdehedin.ch/
  • 8. Facts • Winner of the ICS Developer Competition 2016 • Runs on the XSP runtime on IBM BlueMix • Store all the data in Cloudant • Analyse jobs and job applications with IBM Watson • Backend is pure Java, no Java Notes objects
  • 9. Add ons • Cloudant connector OSGi plugin • Take out the security issue • Storing in and retrieving from Cloudant. JSON <—> POJO • Can be accessed from Java backend. • Do the heavy lifting. Don't reinvent the wheel.
  • 10. Add ons • Jackson Mapper OSGi plugin • Take out the security issue • Used with the IBM Watson services • Conversion of JSON to POJO • Makes @Annotations available in Java back end
  • 12. Running it on IBM BlueMix
  • 13. Overview • BlueMix is IBM PaaS, with various services • We picked a few services
  • 15. Deploy to IBM BlueMix • Fill the BlueMix Manifest file under Application Configuration • Will result in a yaml file
  • 16. Deploy to IBM BlueMix • Set location of deployment • Add shared-plugin folder • Add the OSGi plugins
  • 17. Deploy to IBM BlueMix • Deploy Application
  • 18. Store it in Cloudant
  • 19. What is Cloudant • It is the cloud version of CouchDb • It is document based • CouchDb is created by Damien Katz • Cloudant is bought by IBM • Is like MongoDb or NSF a NoSQL datastore
  • 20. What is Cloudant • Data stored as JSON • View and Search ‘formula’ defined in javascript • Replication • Tasks • Build in API • No annoying limitations
  • 22. Design document • Special type of document • Holds javascript for View and FT Search definition.
  • 23. • It is JSON everywhere. • _rev and _id are reserved parameters. • doc{}, is the actual data from application Document
  • 24. Attachment @ Cloudant • Stored as base64 encoded String • Can be as standalone • Or as part of Document (we choose this way) • Store id as attachmentId, so it can be retrieved when needed
  • 25. Attachment @ Cloudant • AttachmentDAO
  • 26. Attachment @ Cloudant • AttachmentController • Convert upload to Attachment object
  • 27. Attachment @ Cloudant • ControllerBase • All controllers can use these methods
  • 28. Attachment @ Cloudant • Servlet is called in application for download • base64 data for the image tag
  • 29. Analyse it with IBM Watson
  • 30. Watson API explorer • Very useful to test input and see what is returned
  • 31. Services we used • Tone analyser, to get the tone of the text • Personality Insight, to determine the personality of the job applicant • AlchemyLanguage, to get the keywords from the Job and Job application
  • 33. Tone analyser • The same structure to call the Watson services
  • 34. Tone analyser • ToneAnalyzerRequest contain the text to analyse • ToneAnalyzerInjector gets text from model class
  • 35. Tone analyser • Post the data to IBM Watson service (1) • Convert the response back to Java class (2) 1 2
  • 36. Tone analyser • ToneAnalyzerResponse holds the results • Use @annotations from Jackson to map JSON to properties • Result is the source of the charts
  • 37. Show it with charts
  • 38. ChartJS • Open source HTML5 javascript based • Responsive • DataSets = Array of Objects
  • 39. ChartJS • Factory to produce the chart data, accepts objects • Factory set default Chart Type, like Radar or Bar
  • 41. ChartJS • Custom control to display data
  • 42. ChartJS • Custom control to display data.
  • 44. Lessons learned • No Single Sign On service on all datacenters • Manifest yaml file and GIT are not an happy couple • API’s are not consistent across Watson services • Cloudant is a very reliable, flexible and fast NoSQL datastore • IBM Watson services are really powerful.
  • 45. Lessons learned • There is no RichText on the web, it is HTML • Handling attachments on Cloudant was a challenge. Took some time get a robust solution. • BTW the way, we won the competition ;-)
  • 47. Resources • HR Assistant on BlueMix • https://hrassistant.eu-gb.mybluemix.net/ • HR Assistant code on GitHub • https://github.com/flinden68/HR-Assistant • IBM Watson services • https://www.ibm.com/watson/developercloud/services-catalog.html • IBM Cloudant documentation • https://docs.cloudant.com/ • HR Assistant Demo • https://youtu.be/yM5Foxn9Fvg
  • 48. Resources • OSGi Cloudant connector • https://bitbucket.org/flinden68/cloudant-connector • OSGi Jackson JSON Wrapper • https://bitbucket.org/flinden68/jackson-json-mapper-plugin • ChartJS • http://www.chartjs.org/ • Watson API Explorer • https://watson-api-explorer.mybluemix.net/
  • 49. Reach out to me • @flinden68 • http://www.elstarit.nl • flinden68@elstarit.nl • https://nl.linkedin.com/in/flinden68