PLAT-17 Alfresco iOS Mobile Application Details and Design


Published on

Presentation given at DevCon 2011 San Diego by Ryan McVeigh and Gi Lee.

Video accompanying this session is at:

In this session, we will explain how the Alfresco iOS Mobile Application was designed and developed. We’ll focus on the implementation details including the CMIS client, when the application talks directly to Alfresco API’s and some details, tips and tricks for Objective-C iOS development. You’ll learn the Open Source project hierarchy including how to modify, build and run the application. You’ll also learn about our future plans for the application and the project, and perhaps become a contributor yourself!

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

PLAT-17 Alfresco iOS Mobile Application Details and Design

  1. 1. Alfresco iOS Mobile 
Application Details and Design" Ryan McVeigh, Director of Enterprise Integration - Zia Consulting" Gi Lee, Principal Consultant – Zia Consulting"
  2. 2. Who are we?"Ryan McVeigh •  Director @ Zia" •  Responsible for Ziaʼs ECM Practice" •  CMIS Secretary and Technical Editor" •  Represented BEA Systems and Oracle" •  Ziaʼs lead CMIS representative"Gi Lee •  Principal Consultant @ Zia" •  Architect of Alfresco Mobile and Ziaʼs Fresh Docs products" •  CMIS Committee Member"
  3. 3. Who is Zia?
A firm with deep technical expertise & strategic insight, coupled with our Agile software methodology, provides numerousbenefits to our customers:" Benefits" •  Achieve ROI by delivering improved operational efficiencies " •  Boost productivity by creating collaborative work environments" Our  Partners   •  Maintain access and control of information through the enterprise" •  Allow employees to find the information they need, when they need it" •  Increase end-user adoption! •  Agile training by using Zia methodology and Rally tools" •  Raving fan customers" Professional Qualifications" •  Highly-experienced, accredited senior staff consisting of Business Analysts, Enterprise Architects, Software Engineers and Data Architects" •  Platinum Alfresco Professional Services & OEM Partner" •  Platinum Ephesoft Partner" •  Alfresco 2010 Implementation of the Year with Denver" •  MuleSoft Partner"
  4. 4. Agenda"•  Alfresco Mobile History•  Architecture Overview•  CMIS Refresher•  Demo•  Technical Walkthrough •  CMIS Features" •  Alfresco RESTful API"•  Open Source Project•  Roadmap & What’s Next?•  Questions?
  5. 5. Alfresco Mobile History"•  Zia released Fresh Docs for iOS in December 2009•  Android application also available•  Alfresco and Zia partnership entered this year for Alfresco Mobile
  6. 6. Architecture Overview"Mostly a CMIS application talking to AlfrescoSeveral features specific to Alfresco CMIS   Alfresco   REST  
  7. 7. CMIS Refresher"CMIS TC Goals & Scope •  Enable applications to target different ECM repositories uniformly" •  Provide a set of basic services enabling richer ECM applications and use cases" •  All for loose coupling of an ECM application on the underlying repository" •  Use popular protocol bindings" •  REST / AtomPub" •  Web Services / SOAP"
  8. 8. Demo"Alfresco Mobile in Action – A Few Features •  CMIS: " •  Login to Alfresco over HTTP or HTTPS" •  Browse, Search, Display Content and Edit Metadata, Upload Media" •  Create Folders" •  Alfresco" •  Alfresco Activities" •  Like & Unlike, Comment on Documents" •  iOS" •  Local Downloads" •  Multi Tasking"
  9. 9. Design" •  Navigation based app for browsing CMIS repositories" •  Layered on Alfresco specific functionality" •  Hierarchy of Table Views " •  Universal binary"
  10. 10. Designed for the iPad" •  Still a navigation based app but with iPad-specific controllers " •  Split View Controller" •  Still a universal binary"
  11. 11. Features using CMIS" CMIS  AtomPub  Binding   Browse  &   getChildren   Company  Home   Download   getContentStream   Document   Metadata   getTypeDefiniBon   Search   query   Upload   createDocument  
  12. 12. Features using the Alfresco RESTful API" Alfresco  RESTful  API   AcBviBes  Feed   View  &  Add  Tags   Comments   Like  a  Document   Sites  List  
  13. 13. App Launch / Sites / Browse"•  CMIS: Retrieve AtomPub Service Document"•  Alfresco: Request Sites List"•  CMIS: Request folder children for the Root Collection"•  CMIS: Navigate into a folder or site"
  14. 14. Activities"•  Alfresco: Retrieve userʼs activity feed"•  User Clicks on a document cell" •  CMIS: Retrieve Document via getObjectByID service"•  User clicks on the info icon " •  CMIS: Retrieve Document Metadata using getTypeDefinition service"
  15. 15. Search"•  Execute a CMIS Query" •  Full-text search:" •  SELECT * FROM cmis:document WHERE CONTAINS(ʻkeywordsʼ)! •  Search by cmis:name:" •  SELECT * FROM cmis:document WHERE CONTAINS(ʻ~cmis:name:ʼ*keywords*ʼ)!
  16. 16. Calling an AtomPub Service" CMIS  RESTful  Request   Alfresco   AtomPub  XML  
  17. 17. Creating an HTTP Request"•  Using ASIHTTPRequest build your request"•  Delegate handles events from the request"
  18. 18. Parsing AtomPub XML"Event-Driven XML Parsing (SAX)"•  Parser sends messages (parsing events) to it s delegates (callbacks)"Use NSXMLParser & NSXMLParserDelegate"•  Recommended by Apple"•  Native API"•  Objective-C based implementation"Why not use the Tree-based API (DOM)?"•  Apple does not provide the API for iOS"
  19. 19. NSXMLParser & NSXMLParserDelegate"Setting up NSXMLParser"NSXMLParserDelegate methods"– parser:didStartElement:namespaceURI:qualifiedName:attributes:"– parser:didEndElement:namespaceURI:qualifiedName:"– parser:foundCharacters:"
  20. 20. Calling Alfresco APIs" RESTful  HTTP  Request   Alfresco   JSON  
  21. 21. We Like JSON!"•  Simple to consume!"•  Use SBJson"•  Parses into NSDictionary and NSArray objects"•  CMIS 1.1 will contain a Browser Binding!"
  22. 22. Open Source Availability" Hosted on Bitbucket for alfresco-mobile at Released under the Mozilla Public License Version 1.1
  23. 23. API s and Libraries Used" •  Cocoa Touch Frameworks" •  The APIʼs Apple provides to build an iOS application" •  ASIHTTPRequest" •  Communication with the server" •  Wrapper around Appleʼs CFNetwork API" •  SBJson" •  Fast, simple & clean JSON parser and generator" •  GHUnit" •  Objective-C Test framework"
  24. 24. What do I need to know?" •  Git" •  Objective-C" •  iOS App Programming" •  Alfresco RESTful API" •  CMIS AtomPub Binding"
  25. 25. Resources"Apple s iOS Developer Library & Development videos • View & View Controller Programming Guide" • Table View Programming Guide" • Key-Value Programming Guide" • Memory Management Programming Guide" • iOS Human Interface Guidelines" !! ! !Beginning iPhone 4 Development: ! !! ! !Exploring the iOS SDK, Apress Publishing"Programming in Objective-C, Sam s Publishing"
  26. 26. Common Design Patterns" •  Model-View-Controller" •  A pattern to relate the user interface to an underlying data model." •  Delegation"" •  A patten where an object, the delegator, delegates tasks to an associated helper object, the delegate." •  The delegate is responsible for executing the task for the delegator." •  Target-Action" •  Target-action is a design pattern in which an object holds the information necessary to send a message to another object when an event occurs."
  27. 27. Tools for iOS Development"•  Mac with OS X Snow Leopard or Lion"•  XCode 4" • Integrated Development Environment" • Integrated Build System" • Debugger" • Interface Builder" • iOS Simulator
•  Instruments" • Performance and behavior analysis"
  28. 28. Getting Started "•  Create an iOS developer account"•  Install the latest version of XCode 4"•  Clone the repository" •  git clone"•  Open the Project"
  29. 29. Two Targets?" Two Targets: Alfresco & Fresh Docs"
  30. 30. Getting Started "•  Select a target and the 
 iOS Simulator to Use" •  Build and Run"
  31. 31. How do I install it on my device?" •  Signup for a iOS Developer Program Account" •  Configure Profile" •  Development Certificate, App ID, 
 Provisioning Device & Certificates" •  Configure & Build the application for your device" See iOS Provisioning Portal Resources & How-To Guides"
  32. 32. How Do I Contribute?" Fork on Work Clone" Bitbucket   Locally" Send a pull Commit Push" request" Locally" Step-by-step example for forking and sending a pull request:"
  33. 33. Roadmap" Features under future consideration •  Browse Site Members" •  Search and Browse for People" •  Version History and Upload New Versions" •  Browse Recent Docs" •  More…" Alfresco Mobile Product Manager •  Marc Dubresson" •" Disclaimer: Neither Alfresco nor Zia are making any claims or commitments to deliver these features."
  34. 34. Whatʼs Next?"Zia is hosting a deep dive Webinar with Alfresco •  November 1 @ 1pm ET" •"Code is Open Source •  Happy to have contributors" •  Alfresco will coordinate releases of Alfresco Mobile" •  Zia will coordinate releases of Fresh Docs" •  If you want to release to the Apple App Store, contact us"Come see us at our booth!
  35. 35. Contact Us"Ryan McVeigh – ECM Business Owner: •"Gi Lee – Fresh Docs Architect •"Michael Muller – Fresh Docs PM •"
  36. 36. Q & A"