Alfresco iOS Mobile  Application Details and Design Ryan McVeigh, Director of Enterprise Integration  - Zia Consulting Gi ...
Who are we? <ul><li>Ryan McVeigh </li></ul><ul><ul><li>Director @ Zia </li></ul></ul><ul><ul><li>Responsible for Zia’s ECM...
Who is Zia? A firm with deep technical expertise & strategic insight, coupled with our Agile software methodology, provide...
Agenda <ul><li>Alfresco Mobile History  </li></ul><ul><li>Architecture Overview </li></ul><ul><li>CMIS Refresher </li></ul...
Alfresco Mobile History <ul><li>Zia released Fresh Docs for iOS in December 2009 </li></ul><ul><li>Android application als...
Architecture Overview <ul><li>Mostly a CMIS application talking to Alfresco </li></ul><ul><li>Several features specific to...
CMIS Refresher <ul><li>CMIS TC Goals & Scope </li></ul><ul><ul><li>Enable applications to target different ECM repositorie...
Demo <ul><li>Alfresco Mobile in Action – A Few Features </li></ul><ul><ul><li>CMIS:  </li></ul></ul><ul><ul><ul><li>Login ...
Design <ul><ul><li>Navigation based app for browsing CMIS repositories </li></ul></ul><ul><ul><li>Layered on Alfresco spec...
Designed for the iPad <ul><ul><li>Still a navigation based app but with iPad-specific controllers  </li></ul></ul><ul><ul>...
Features using CMIS
Features using the Alfresco RESTful API
App Launch / Sites / Browse <ul><ul><li>CMIS: Retrieve AtomPub Service Document </li></ul></ul><ul><ul><li>Alfresco: Reque...
Activities <ul><ul><li>Alfresco: Retrieve user’s activity feed </li></ul></ul><ul><ul><li>User Clicks on a document cell <...
Search <ul><ul><li>Execute a CMIS Query </li></ul></ul><ul><ul><ul><li>Full-text search: </li></ul></ul></ul><ul><ul><ul><...
Calling an AtomPub Service CMIS RESTful Request AtomPub XML Alfresco
Creating an HTTP Request <ul><ul><li>Using ASIHTTPRequest build your request </li></ul></ul><ul><ul><li>Delegate handles e...
Parsing AtomPub XML <ul><li>Event-Driven XML Parsing (SAX) </li></ul><ul><ul><li>Parser sends messages (parsing events) to...
NSXMLParser & NSXMLParserDelegate <ul><li>Setting up NSXMLParser </li></ul><ul><li>NSXMLParserDelegate methods </li></ul><...
Calling Alfresco APIs RESTful HTTP Request JSON Alfresco
We Like JSON! <ul><li>Simple to consume! </li></ul><ul><li>Use SBJson </li></ul><ul><li>Parses into NSDictionary and NSArr...
Open Source Availability <ul><li>Hosted on Bitbucket  </li></ul><ul><li>http://bit.ly/rrNdTc </li></ul><ul><li>Search for ...
API ’s and Libraries Used <ul><ul><li>Cocoa Touch Frameworks </li></ul></ul><ul><ul><ul><li>The API ’s Apple provides to b...
What do I need to know? <ul><li>Git </li></ul><ul><li>Objective-C </li></ul><ul><li>iOS App Programming </li></ul><ul><li>...
Resources <ul><li>Apple ’s iOS Developer Library & Development videos </li></ul><ul><ul><li>View & View Controller Program...
Common Design Patterns <ul><ul><li>Model-View-Controller </li></ul></ul><ul><ul><ul><li>A pattern to relate the user inter...
Tools for iOS Development <ul><li>Mac with OS X Snow Leopard or Lion </li></ul><ul><li>XCode 4 </li></ul><ul><ul><li>Integ...
Getting Started  <ul><li>Create an iOS developer account </li></ul><ul><li>Install the latest version of XCode 4 </li></ul...
Two Targets? <ul><li>Two Targets: Alfresco & Fresh Docs </li></ul>
Getting Started  <ul><li>Select a target and the  iOS Simulator to Use </li></ul><ul><li>Build and Run </li></ul>
How do I install it on my device? <ul><ul><li>See iOS Provisioning Portal Resources & How-To Guides </li></ul></ul>
How Do I Contribute? <ul><ul><li>Step-by-step example for forking and sending a pull request: http://bit.ly/pbIDRk </li></...
Roadmap <ul><li>Features under future consideration </li></ul><ul><ul><li>Browse Site Members </li></ul></ul><ul><ul><li>S...
What’s Next? <ul><li>Zia is hosting a deep dive Webinar with Alfresco </li></ul><ul><ul><li>November 1 @ 1pm ET </li></ul>...
Contact Us <ul><li>Ryan McVeigh – ECM Business Owner: </li></ul><ul><ul><li>[email_address] </li></ul></ul><ul><li>Gi Lee ...
Q & A
Upcoming SlideShare
Loading in...5
×

DEVCON-Alfresco i os mobile application details and design

868

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
868
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

    Clipping is a handy way to collect important slides you want to go back to later.

×