Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

596 views

Published on

The role of a human resources employee can be hard work when it comes to filtering hundreds or thousands of job applications. Often, the cover letters are submitted in unstructured formats, making data organization and identification of interesting job applications difficult. In this session, we will share a look behind the scenes of the award-winning HR Assistant application, which uses a combination of IBM Bluemix, Watson and a Cloudant database to improve the recruitment process. See how we integrate these different technologies and display the content graphically using XPages, along with how the development progressed and the challenges we faced.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

  1. 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. 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. 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
  4. 4. HR Assistant
  5. 5. Demo time
  6. 6. Frédéric Dehédin • At the time of the project: Senior Application developer at Belsoft Collaboration AG • @fdehedin • http://www.fdehedin.ch/
  7. 7. 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
  8. 8. 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.
  9. 9. 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
  10. 10. Roadmap
  11. 11. Running it on IBM BlueMix
  12. 12. Overview • BlueMix is IBM PaaS, with various services • We picked a few services
  13. 13. Credentials
  14. 14. Deploy to IBM BlueMix • Fill the BlueMix Manifest file under Application Configuration • Will result in a yaml file
  15. 15. Deploy to IBM BlueMix • Set location of deployment • Add shared-plugin folder • Add the OSGi plugins
  16. 16. Deploy to IBM BlueMix • Deploy Application
  17. 17. Store it in Cloudant
  18. 18. 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
  19. 19. What is Cloudant • Data stored as JSON • View and Search ‘formula’ defined in javascript • Replication • Tasks • Build in API • No annoying limitations
  20. 20. Cloudant database
  21. 21. Design document • Special type of document • Holds javascript for View and FT Search definition.
  22. 22. • It is JSON everywhere. • _rev and _id are reserved parameters. • doc{}, is the actual data from application Document
  23. 23. 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
  24. 24. Attachment @ Cloudant • AttachmentDAO
  25. 25. Attachment @ Cloudant • AttachmentController • Convert upload to Attachment object
  26. 26. Attachment @ Cloudant • ControllerBase • All controllers can use these methods
  27. 27. Attachment @ Cloudant • Servlet is called in application for download • base64 data for the image tag
  28. 28. Analyse it with IBM Watson
  29. 29. Watson API explorer • Very useful to test input and see what is returned
  30. 30. 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
  31. 31. tone analyser schema
  32. 32. Tone analyser • The same structure to call the Watson services
  33. 33. Tone analyser • ToneAnalyzerRequest contain the text to analyse • ToneAnalyzerInjector gets text from model class
  34. 34. Tone analyser • Post the data to IBM Watson service (1) • Convert the response back to Java class (2) 1 2
  35. 35. Tone analyser • ToneAnalyzerResponse holds the results • Use @annotations from Jackson to map JSON to properties • Result is the source of the charts
  36. 36. Show it with charts
  37. 37. ChartJS • Open source HTML5 javascript based • Responsive • DataSets = Array of Objects
  38. 38. ChartJS • Factory to produce the chart data, accepts objects • Factory set default Chart Type, like Radar or Bar
  39. 39. ChartJS
  40. 40. ChartJS • Custom control to display data
  41. 41. ChartJS • Custom control to display data.
  42. 42. Lessons learned
  43. 43. 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.
  44. 44. 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 ;-)
  45. 45. Questions
  46. 46. 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
  47. 47. 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/
  48. 48. Reach out to me • @flinden68 • http://www.elstarit.nl • flinden68@elstarit.nl • https://nl.linkedin.com/in/flinden68

×