A (XPages) developers guide to Cloudant - MeetIT

43
A (XPages) developers guide to Cloudant Frank van der Linden @flinden68

Transcript of A (XPages) developers guide to Cloudant - MeetIT

Page 1: A (XPages) developers guide to Cloudant - MeetIT

A (XPages) developers guide to

CloudantFrank van der Linden

@flinden68

Page 2: A (XPages) developers guide to Cloudant - MeetIT

About me• Freelance Full stack Java developer, with XPages experience• Curious of new technology• Owner of elstar IT• Former IBM Champion (2013, 2014)

Page 3: A (XPages) developers guide to Cloudant - MeetIT

Roadmap• Why Cloudant• Introduction to Cloudant• Inside Cloudant• Connect to Cloudant• Cloudant @ XPages

Page 4: A (XPages) developers guide to Cloudant - MeetIT

Why Cloudant

Page 5: A (XPages) developers guide to Cloudant - MeetIT

Why Cloudant• For HR Assistant we wanted to use a different datastore

Page 6: A (XPages) developers guide to Cloudant - MeetIT

Introduction to Cloudant

Page 7: A (XPages) developers guide to Cloudant - MeetIT

What is Cloudant• It is the cloud version of CouchDb• CouchDb is created by Damien Katz• Cloudant is bought by IBM• It is document based• Is like MongoDb or NSF a NoSQL datastore

Page 8: A (XPages) developers guide to Cloudant - MeetIT

What is Cloudant• Data stored as JSON• View and Search ‘formula’ with javascript• Replication• Tasks• Build in API• No annoying limitations

Page 9: A (XPages) developers guide to Cloudant - MeetIT

Cloudant as service• Cloudant can be added as service in BlueMix

Page 10: A (XPages) developers guide to Cloudant - MeetIT

Cloudant standalone• Via website cloudant.com

Page 11: A (XPages) developers guide to Cloudant - MeetIT

Inside Cloudant

Page 12: A (XPages) developers guide to Cloudant - MeetIT

Inside Cloudant

Page 13: A (XPages) developers guide to Cloudant - MeetIT

Inside Cloudant• View mapping

• Search index

Page 14: A (XPages) developers guide to Cloudant - MeetIT

Connect to Cloudant

Page 15: A (XPages) developers guide to Cloudant - MeetIT

Connect to Cloudant• Direct via REST• https://someusername:[email protected]

• Via a OSGi Plugin, uses the HTTPConnection• https://bitbucket.org/flinden68/cloudant-connector

Page 16: A (XPages) developers guide to Cloudant - MeetIT

Connect to Cloudant• Credentials

• Account, necessary for the OSGi plugin

Page 17: A (XPages) developers guide to Cloudant - MeetIT

Connect to Cloudant• It is JSON everywhere• _rev and _id, reserved parameters• doc{}, is the actual data from application

Page 18: A (XPages) developers guide to Cloudant - MeetIT

Cloudant connector• Storing in and retrieving from Cloudant • Can be accessed from Java backend.• Will take out the security issues.• Do the heavy lifting. Don't reinvent the wheel.• https://bitbucket.org/flinden68/cloudant-connector

Page 19: A (XPages) developers guide to Cloudant - MeetIT

Cloudant @ XPages

Page 20: A (XPages) developers guide to Cloudant - MeetIT

Cloudant @ XPages

Page 21: A (XPages) developers guide to Cloudant - MeetIT

Cloudant @ XPages

Page 22: A (XPages) developers guide to Cloudant - MeetIT

Cloudant @ XPages• Repeat in XPages

• Columns - values from Job class

Page 23: A (XPages) developers guide to Cloudant - MeetIT

Cloudant @ XPages• JobController - getJobs

Page 24: A (XPages) developers guide to Cloudant - MeetIT

Cloudant @ XPages• Job Java Class

Page 25: A (XPages) developers guide to Cloudant - MeetIT

Cloudant @ XPages• CloudantDAO

Page 26: A (XPages) developers guide to Cloudant - MeetIT

Cloudant @ XPages• CloudantService - connect

• Find the data in Cloudant

Page 27: A (XPages) developers guide to Cloudant - MeetIT

Cloudant @ XPages• Job JSON in Cloudant

Page 28: A (XPages) developers guide to Cloudant - MeetIT

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

Page 29: A (XPages) developers guide to Cloudant - MeetIT

Attachment @ Cloudant• AttachmentDAO

Page 30: A (XPages) developers guide to Cloudant - MeetIT

Attachment @ Cloudant• AttachmentController• Convert upload to Attachment

object

Page 31: A (XPages) developers guide to Cloudant - MeetIT

Attachment @ Cloudant• ControllerBase• All controllers can use these methods

Page 32: A (XPages) developers guide to Cloudant - MeetIT

Attachment @ Cloudant• Servlet is called in application for download

• base64 data for the image tag

Page 33: A (XPages) developers guide to Cloudant - MeetIT

RichText @ Cloudant• Stored as MultiMimePart

Page 34: A (XPages) developers guide to Cloudant - MeetIT

RichText @ Cloudant• Which is nice converted to JSON ;-)

Page 35: A (XPages) developers guide to Cloudant - MeetIT

Search @ Cloudant• Cloudant job ftSearch index

Page 36: A (XPages) developers guide to Cloudant - MeetIT

Search @ Cloudant• Search example, filter the view

Page 37: A (XPages) developers guide to Cloudant - MeetIT

Search @ Cloudant• Do the search in the Controller,

call DAO

Page 38: A (XPages) developers guide to Cloudant - MeetIT

Search @ Cloudant• Search method calls the CloudantService

Page 39: A (XPages) developers guide to Cloudant - MeetIT

Search @ Cloudant• CloudantService calls connector to get the data

Page 40: A (XPages) developers guide to Cloudant - MeetIT

Resources• OSGi Cloudant connector

• https://bitbucket.org/flinden68/cloudant-connector

• Cloudant documentation

• https://docs.cloudant.com/

• HR Assistant

• hrassistant.eu-gb.mybluemix.net

• github.com/flinden68/HR-Assistant

Page 41: A (XPages) developers guide to Cloudant - MeetIT
Page 42: A (XPages) developers guide to Cloudant - MeetIT

Thank you

Page 43: A (XPages) developers guide to Cloudant - MeetIT