27
Jive, Dropbox and other integrations

PLAT-5 Jive, Dropbox & Other Integrations

Embed Size (px)

DESCRIPTION

Alfresco provides many extensions points for building custom solutions, integrating with a multitude of different tools. Learn how Alfresco’s Integration Engineering team has approached building integrations with Jive and Dropbox. See what’s coming around the bend and how you can participate with community lead integration projects.

Citation preview

Page 1: PLAT-5 Jive, Dropbox & Other Integrations

Jive, Dropbox and other integrations!

Page 2: PLAT-5 Jive, Dropbox & Other Integrations

Jared Ottley Integration Engineer!Twitter: @jottley!Blog: http://jared.ottleys.net!

Senior Consultant, Alfresco!Solutions Engineer, Alfresco !QA Engineer, (Linux Lead – OES), Novell!Developer/System Analyst, US Federal Courts!

Maintainer Alfresco PDF Toolkit!http://code.google.com/p/alfresco-pdf-toolkit/!

Page 3: PLAT-5 Jive, Dropbox & Other Integrations

Integration Engineering @ Alfresco!

What do we do •  Focused on Developing Integrations with other products and the

Alfresco Platform!

•  Develop from the perspective of the customer. !•  Donʼt modify the core!•  Only use Public APIs!

•  Share what we learn!•  Blog post!•  Documentation!•  Engineering!

Page 4: PLAT-5 Jive, Dropbox & Other Integrations

Alfresco – Jive Toolkit

Page 5: PLAT-5 Jive, Dropbox & Other Integrations

Alfresco – Jive Toolkit!

What is the Alfresco – Jive Toolkit? •  A set of pre-built components that allows Jive to store documents

in Alfresco while still offering all of the same social features as “native” Jive documents (commenting, rating, discussions, etc.)!

•  The initial version of the Toolkit will allow users of Alfresco and/or Jive to create “managed” documents in any of the following 3 ways:!

•  …By uploading a document to Alfresco, using the Jive UI.!•  …By “publishing” an existing document from Alfresco to Jive, using

Alfrescoʼs Share UI.!•  …By “linking” an existing document stored in Alfresco to Jive, using the

Jive UI.!

Page 6: PLAT-5 Jive, Dropbox & Other Integrations

Housekeeping

What is required? •  Alfresco 3.4.3 and up (NOT Swift/4.0 at this time)!•  Jive 5.0.1!

Release Date? •  Soon!!

•  Small Developer Preview!•  Incorporate fixes from Preview!•  Release to the public!

Page 7: PLAT-5 Jive, Dropbox & Other Integrations

Design

CMIS Client •  CMIS Client on the Jive side!•  No need to add custom web scripts on the Alfresco side to handle

requests.!

•  We did add:!•  request filter!

•  Identifies calls from Jive!•  Authentication Servlet!

•  Authentication requests from Jive (…explained next…)!

Page 8: PLAT-5 Jive, Dropbox & Other Integrations

Permissions •  The models differ!•  No access to user credentials on either side!•  Implemented Solution!

•  Rely on a common backend – LDAP – Let each side manage its own permissions (Jive – Community; Alfresco – Node).!

•  Common user to make calls to Alfresco/Jive!•  Encrypted UserID to specify “RunAs” User!•  This is still open for change/improvement. We need “real world” feedback

to validate our approach!

Design

Page 9: PLAT-5 Jive, Dropbox & Other Integrations

Design

Delete •  Jive does not hold a copy of the content, just a reference: the

cmis:id!•  To protect it from from having Orphaned content. Alfresco does not

allow deletes while content is socialized.!•  Accomplished through a policy (beforeDeleteNode) which simply

throws an exception when a delete is tried!

Copy •  We want to allow coping of content in Alfresco, but we donʼt want

the content to be socialized!•  The Jive side only supports a single reference to content!•  Jive has no concept of folders (Though it does support tags/categories)!

•  Disable copying the socialized aspect to new node through a copy callback!

•  getCopyCallback returns DoNothingCopyBehaviourCallback()!

Page 10: PLAT-5 Jive, Dropbox & Other Integrations

Demo

Page 11: PLAT-5 Jive, Dropbox & Other Integrations

Alfresco Dropbox Connector!

Page 12: PLAT-5 Jive, Dropbox & Other Integrations

Alfresco Dropbox Connector!What is the Connector

•  A Dropbox client with specific ties into Alfresco!

•  The initial version will support syncing content (documents and folders) to and from a Dropbox account (single or multiple)!

•  While implemented specifically with Share in mind the implementation is primarily exposed through web scripts that can be called independently of Share.!

Page 13: PLAT-5 Jive, Dropbox & Other Integrations

Housekeeping

What is required? •  Alfresco 4.0 (aka Swift)!

Release Date?

•  TBD!•  Close to submission for Approval from Dropbox!•  Further Testing of Multiple User use case!

Page 14: PLAT-5 Jive, Dropbox & Other Integrations

Design

Worked started on 3.4.3!•  A couple of hurdles!

•  No OAuth support!•  No Encrypted properties in content Models!•  Share customizations to Document Library possible...but not very friendly!

What we wanted to accomplish!•  Sync Documents/Folders from Alfresco to Dropbox!•  Sync Document/Folders from Dropbox to Alfresco!•  It needs to be simple with as little burden on the user to configure

and use!

Page 15: PLAT-5 Jive, Dropbox & Other Integrations

Design

Alfresco is the center of the universe •  Alfresco wins in conflicts!

•  Though we should note when conflicts occur and possibly at some point allow for conflict resolution!

•  If content is deleted in Alfresco is should be deleted in Dropbox.!•  If it is deleted in Dropbox it should not be removed from Alfresco!•  Targted deletes should be possible!

Dropbox integration is different than social content management

•  Social Content Management has multiple users typically publishing to single channel (1:1)!

•  Dropbox will typically have multiple users talking with their own Dropbox accounts (1:n)!

Page 16: PLAT-5 Jive, Dropbox & Other Integrations

Design

Challenges •  Closed resource!

•  No way to add/customize functionality on the service endanger!•  Limited Metadata!•  API does not currently allow for sharing across accounts!•  Rate Limited!•  Java API is focused on Android!

•  It is basically just a wrapper around the REST API!

Page 17: PLAT-5 Jive, Dropbox & Other Integrations

Design

Oauth •  Currently Using Signpost!•  Moving to SpringSocial!

•  SpringSocial is supported in Alfresco (Needed for Social Content Publishing)!

•  Use *New* Encyptyped Content Model properties types to store Token Key and Secret!

Apache HTTP Client 4.x •  Alfresco 4.0 now uses HTTPClient 4.x.!

•  This is different than 3.x!

Page 18: PLAT-5 Jive, Dropbox & Other Integrations

Design

Document Library Customizations •  Old way wasn't amp friendly!

•  Changes were overwriten!•  New way allows you to package changes in amp!

Note: Toolbar customizations aren't yet supported by the new DocumentLibrary extension functionality!

Page 19: PLAT-5 Jive, Dropbox & Other Integrations

Functionality

Sync Content/Folders (Alfresco to Dropbox) •  Select a piece of content and send it to Dropbox!•  Select a Folder and sync it to Dropbox!

•  If a folder is synced, all content in that folder will be synced to Dropbox as well!

•  When content/folder is synced to Dropbox it will show Dropbox icon as an indicator that it is currently synced to dropbox!

Page 20: PLAT-5 Jive, Dropbox & Other Integrations

Functionality

Once Sync'd, now what? •  Updates to content will sync the change automatically!•  Content added to a synced folder will be automatically synced!

Deleting Content •  Deletes in Dropbox will not delete the content in Alfresco!•  Deletes in Alfresco will be deleted in Dropbox!•  Targeted deletes not yet supported!

Copying Content •  Copying the content will remove the Dropbox aspect from the

content ie the copy will no longer be synced to Dropbox!

Page 21: PLAT-5 Jive, Dropbox & Other Integrations

Functionality

Sync Content/Folders (Dropbox to Alfresco) •  No way to trigger changes from Dropbox to Alfresco!•  We have to poll or manually sync content!

•  Manual sync!•  Content!

•  Users can sync updated content that has been synced to Dropbox from Alfresco back into the repository!

•  Folders!•  Users can sync updated content that has been synced to Dropbox from Alfresco

back into the repository in a synced folder!•  New Content added to a synced folder on the Dropbox side will be pulled into

Alfresco!•  Scheduled sync!

•  Not yet implemented!•  Will use the same underlying process of the manual sync to provide same functionality!

Page 22: PLAT-5 Jive, Dropbox & Other Integrations

Implementation

•  Build the Dropbox Client!•  Build the Model!•  Dropbox Service (move to an action?)!

•  Web Scripts!•  Why not CMIS?!

•  Background!•  Share UI!

Page 23: PLAT-5 Jive, Dropbox & Other Integrations

#ToDo

•  Finish move to SpringSocial!•  Dropbox Dashlet!

•  Allow to setup sync!•  Show current quota*!

•  Multi user Testing!•  Unsync !•  Targeted delete!•  Add when last synced information (when, by whom)!

Page 24: PLAT-5 Jive, Dropbox & Other Integrations

Demo

Page 25: PLAT-5 Jive, Dropbox & Other Integrations

Help Wanted!

We are looking for Help •  Highly visible projects!•  Build your community street cred!

•  Facebook Integration!•  Kofax Release Scripts!•  Lotus Quickr Connector!•  Microsoft Office Add-ins!•  PHP API!

Others are looking for help too! •  OpenOffice.org Plugin!•  LibreOffice CMIS Plugin!•  LibreOffice Alfresco Implementation!

Learn More @ http://wiki.alfresco.com/wiki/Help_Wanted

Page 26: PLAT-5 Jive, Dropbox & Other Integrations

Q&A

Page 27: PLAT-5 Jive, Dropbox & Other Integrations