plat-17 alfresco ios mobile application details and design

36
Alfresco iOS Mobile Application Details and Design Ryan McVeigh, Director of Enterprise Integration - Zia Consulting Gi Lee, Principal Consultant – Zia Consulting

Upload: alfresco-software

Post on 22-May-2015

2.145 views

Category:

Technology


5 download

DESCRIPTION

Presentation given at DevCon 2011 San Diego by Ryan McVeigh and Gi Lee. Video accompanying this session is at: http://www.youtube.com/watch?v=gs0h6sSXVyQ 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!

TRANSCRIPT

Page 1: PLAT-17 Alfresco iOS Mobile Application Details and Design

Alfresco iOS Mobile Application Details and Design"

Ryan McVeigh, Director of Enterprise Integration - Zia Consulting"

Gi Lee, Principal Consultant – Zia Consulting"

Page 2: PLAT-17 Alfresco iOS Mobile Application Details and Design

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"

Page 3: PLAT-17 Alfresco iOS Mobile Application Details and Design

Who is Zia? A firm with deep technical expertise & strategic insight, coupled with our Agile software methodology, provides numerous benefits to our customers:"

Benefits"•  Achieve ROI by delivering improved operational efficiencies "•  Boost productivity by creating collaborative work environments"•  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"

Our  Partners  

Page 4: PLAT-17 Alfresco iOS Mobile Application Details and Design

Agenda"

•  Alfresco Mobile History •  Architecture Overview •  CMIS Refresher •  Demo •  Technical Walkthrough

•  CMIS Features"•  Alfresco RESTful API"

•  Open Source Project •  Roadmap & What’s Next? •  Questions?

Page 5: PLAT-17 Alfresco iOS Mobile Application Details and Design

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

Page 6: PLAT-17 Alfresco iOS Mobile Application Details and Design

Architecture Overview"

Mostly a CMIS application talking to Alfresco Several features specific to Alfresco

Alfresco  

CMIS  

REST  

Page 7: PLAT-17 Alfresco iOS Mobile Application Details and Design

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"

Page 8: PLAT-17 Alfresco iOS Mobile Application Details and Design

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"

Page 9: PLAT-17 Alfresco iOS Mobile Application Details and Design

Design"

•  Navigation based app for browsing CMIS repositories"•  Layered on Alfresco specific functionality"•  Hierarchy of Table Views "•  Universal binary"

Page 10: PLAT-17 Alfresco iOS Mobile Application Details and Design

Designed for the iPad"

•  Still a navigation based app but with iPad-specific controllers "•  Split View Controller"•  Still a universal binary"

Page 11: PLAT-17 Alfresco iOS Mobile Application Details and Design

Features using CMIS"

CMIS  AtomPu

b  Bind

ing   Browse  &  

Company  Home   getChildren  

Download  Document   getContentStream  

Metadata   getTypeDefiniBon  

Search   query  

Upload   createDocument  

Page 12: PLAT-17 Alfresco iOS Mobile Application Details and Design

Features using the Alfresco RESTful API"

Alfresco  RESTful  API  

AcBviBes  Feed  

View  &  Add  Tags  

Comments  

Like  a  Document  

Sites  List  

Page 13: PLAT-17 Alfresco iOS Mobile Application Details and Design

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"

Page 14: PLAT-17 Alfresco iOS Mobile Application Details and Design

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"

Page 15: PLAT-17 Alfresco iOS Mobile Application Details and Design

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*ʼ)!

Page 16: PLAT-17 Alfresco iOS Mobile Application Details and Design

Calling an AtomPub Service"

CMIS  RESTful  Request  

AtomPub  XML  

Alfresco  

Page 17: PLAT-17 Alfresco iOS Mobile Application Details and Design

Creating an HTTP Request"

•  Using ASIHTTPRequest build your request"

•  Delegate handles events from the request"

Page 18: PLAT-17 Alfresco iOS Mobile Application Details and Design

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"

Page 19: PLAT-17 Alfresco iOS Mobile Application Details and Design

NSXMLParser & NSXMLParserDelegate"

Setting up NSXMLParser"

NSXMLParserDelegate methods"– parser:didStartElement:namespaceURI:qualifiedName:attributes:"– parser:didEndElement:namespaceURI:qualifiedName:"– parser:foundCharacters:"

Page 20: PLAT-17 Alfresco iOS Mobile Application Details and Design

Calling Alfresco APIs"

RESTful  HTTP  Request  

JSON  

Alfresco  

Page 21: PLAT-17 Alfresco iOS Mobile Application Details and Design

We Like JSON!"

•  Simple to consume!"

•  Use SBJson"

•  Parses into NSDictionary and NSArray objects"

•  CMIS 1.1 will contain a Browser Binding!"

Page 22: PLAT-17 Alfresco iOS Mobile Application Details and Design

Open Source Availability"

Hosted on Bitbucket

http://bit.ly/rrNdTc

Search for “alfresco-mobile” at bitbucket.org

Released under the Mozilla Public License Version 1.1

Page 23: PLAT-17 Alfresco iOS Mobile Application Details and Design

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"

Page 24: PLAT-17 Alfresco iOS Mobile Application Details and Design

What do I need to know?"

•  Git"•  Objective-C"•  iOS App Programming"•  Alfresco RESTful API"•  CMIS AtomPub Binding"

Page 25: PLAT-17 Alfresco iOS Mobile Application Details and Design

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"

Page 26: PLAT-17 Alfresco iOS Mobile Application Details and Design

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."

Page 27: PLAT-17 Alfresco iOS Mobile Application Details and Design

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"

Page 28: PLAT-17 Alfresco iOS Mobile Application Details and Design

Getting Started "

•  Create an iOS developer account"

•  Install the latest version of XCode 4"

•  Clone the repository"•  git clone https://[email protected]/ziadev/alfresco-mobile.git"

•  Open the Project"

Page 29: PLAT-17 Alfresco iOS Mobile Application Details and Design

Two Targets?"

Two Targets: Alfresco & Fresh Docs"

Page 30: PLAT-17 Alfresco iOS Mobile Application Details and Design

Getting Started "

•  Select a target and the iOS Simulator to Use"

•  Build and Run"

Page 31: PLAT-17 Alfresco iOS Mobile Application Details and Design

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"

Page 32: PLAT-17 Alfresco iOS Mobile Application Details and Design

How Do I Contribute?"

Step-by-step example for forking and sending a pull request:http://bit.ly/pbIDRk"

Fork on Bitbucket   Clone" Work

Locally"

Commit Locally"Push"Send a pull

request"

Page 33: PLAT-17 Alfresco iOS Mobile Application Details and Design

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"•  [email protected]"

Disclaimer: Neither Alfresco nor Zia are making any claims or commitments to deliver these features."

Page 34: PLAT-17 Alfresco iOS Mobile Application Details and Design

Whatʼs Next?"

Zia is hosting a deep dive Webinar with Alfresco •  November 1 @ 1pm ET"•  http://bit.ly/tztqRL"

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!

Page 35: PLAT-17 Alfresco iOS Mobile Application Details and Design

Contact Us"

Ryan McVeigh – ECM Business Owner: •  [email protected]"

Gi Lee – Fresh Docs Architect •  [email protected]"

Michael Muller – Fresh Docs PM •  [email protected]"

Page 36: PLAT-17 Alfresco iOS Mobile Application Details and Design

Q & A"