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://[email protected]/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"• [email protected]"
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: • [email protected]"
Gi Lee – Fresh Docs Architect • [email protected]"
Michael Muller – Fresh Docs PM • [email protected]"
Q & A"
Top Related