PLAT-17 Alfresco iOS Mobile Application Details and Design

Post on 22-May-2015

2.145 views 5 download

Tags:

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

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"

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  

Agenda"

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

•  CMIS Features"•  Alfresco RESTful API"

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

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

Architecture Overview"

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

Alfresco  

CMIS  

REST  

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"

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"

Design"

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

Designed for the iPad"

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

Features using CMIS"

CMIS  AtomPu

b  Bind

ing   Browse  &  

Company  Home   getChildren  

Download  Document   getContentStream  

Metadata   getTypeDefiniBon  

Search   query  

Upload   createDocument  

Features using the Alfresco RESTful API"

Alfresco  RESTful  API  

AcBviBes  Feed  

View  &  Add  Tags  

Comments  

Like  a  Document  

Sites  List  

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"

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"

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

Calling an AtomPub Service"

CMIS  RESTful  Request  

AtomPub  XML  

Alfresco  

Creating an HTTP Request"

•  Using ASIHTTPRequest build your request"

•  Delegate handles events from the request"

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"

NSXMLParser & NSXMLParserDelegate"

Setting up NSXMLParser"

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

Calling Alfresco APIs"

RESTful  HTTP  Request  

JSON  

Alfresco  

We Like JSON!"

•  Simple to consume!"

•  Use SBJson"

•  Parses into NSDictionary and NSArray objects"

•  CMIS 1.1 will contain a Browser Binding!"

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

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"

What do I need to know?"

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

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"

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

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"

Getting Started "

•  Create an iOS developer account"

•  Install the latest version of XCode 4"

•  Clone the repository"•  git clone https://ziadev@bitbucket.org/ziadev/alfresco-mobile.git"

•  Open the Project"

Two Targets?"

Two Targets: Alfresco & Fresh Docs"

Getting Started "

•  Select a target and the iOS Simulator to Use"

•  Build and Run"

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"

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"

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"•  marc.dubresson@alfresco.com"

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

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!

Contact Us"

Ryan McVeigh – ECM Business Owner: •  rmcveigh@ziaconsulting.com"

Gi Lee – Fresh Docs Architect •  gi.lee@ziaconsulting.com"

Michael Muller – Fresh Docs PM •  mmuller@ziaconsulting.com"

Q & A"