How Watson, Bluemix, Cloudant, and
XPages Can Work Together In A Real
World Application
Frank van der Linden, elstar IT
Full stack Java Developer
DEV03
Engage 2017
Me
• Freelance Full stack Java developer
• Owner of elstar IT
• Curious of new technology
• IBM Champion 2013, 2014 and 2017
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
• The future
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
• The services we used.
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 (now "Watson Natural Language Understanding”)
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 ;-)
The future
The future
• Move on as commercial service / solution (in progress)
• Let it work with Domino authentication (done)
• Change AlchemyLanguage service to Natural Language Understanding service.
(done)
• Add Document Conversion service (in progress)
• Add support for more NoSQL datastores (NSF done, MongoDb in progress)
• More to come…..
Questions
Resources
• HR Assistant on Bluemix
• https://hrassistant1.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

DEV03 - 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 DEV03 Engage 2017
  • 2.
    Me • Freelance Fullstack Java developer • Owner of elstar IT • Curious of new technology • IBM Champion 2013, 2014 and 2017
  • 3.
    How do weproceed • HR Assistant • Running it on IBM Bluemix • Store it in Cloudant • Analyse it with IBM Watson • Show it with Charts • Lessons learned • The future
  • 4.
  • 6.
  • 7.
    Frédéric Dehédin • Atthe time of the project: Senior Application developer at Belsoft Collaboration AG • @fdehedin • http://www.fdehedin.ch/
  • 8.
    Facts • Winner ofthe 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 • Cloudantconnector 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 • JacksonMapper 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
  • 11.
  • 12.
    Running it onIBM Bluemix
  • 13.
    Overview • Bluemix isIBM PaaS, with various services • The services we used.
  • 14.
  • 15.
    Deploy to IBMBluemix • Fill the Bluemix Manifest file under Application Configuration • Will result in a yaml file
  • 16.
    Deploy to IBMBluemix • Set location of deployment • Add shared-plugin folder • Add the OSGi plugins
  • 17.
    Deploy to IBMBluemix • Deploy Application
  • 18.
    Store it inCloudant
  • 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
  • 21.
  • 22.
    Design document • Specialtype of document • Holds javascript for View and FT Search definition.
  • 23.
    • It isJSON 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.
  • 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 withIBM 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 (now "Watson Natural Language Understanding”)
  • 32.
  • 33.
    Tone analyser • Thesame structure to call the Watson services
  • 34.
    Tone analyser • ToneAnalyzerRequestcontain the text to analyse • ToneAnalyzerInjector gets text from model class
  • 35.
    Tone analyser • Postthe data to IBM Watson service (1) • Convert the response back to Java class (2) 1 2
  • 36.
    Tone analyser • ToneAnalyzerResponseholds the results • Use @annotations from Jackson to map JSON to properties • Result is the source of the charts
  • 37.
  • 38.
    ChartJS • Open sourceHTML5 javascript based • Responsive • DataSets = Array of Objects
  • 39.
    ChartJS • Factory toproduce the chart data, accepts objects • Factory set default Chart Type, like Radar or Bar
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
    Lessons learned • NoSingle 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 • Thereis 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 ;-)
  • 46.
  • 47.
    The future • Moveon as commercial service / solution (in progress) • Let it work with Domino authentication (done) • Change AlchemyLanguage service to Natural Language Understanding service. (done) • Add Document Conversion service (in progress) • Add support for more NoSQL datastores (NSF done, MongoDb in progress) • More to come…..
  • 48.
  • 49.
    Resources • HR Assistanton Bluemix • https://hrassistant1.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
  • 50.
    Resources • OSGi Cloudantconnector • 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/
  • 51.
    Reach out tome • @flinden68 • http://www.elstarit.nl • flinden68@elstarit.nl • https://nl.linkedin.com/in/flinden68