iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

23
iPhone native App, CMIS and the Cloud Mike Mahon, President, [email protected] Mike Muller, Director, Software Consulting, [email protected] 6/13/22 www.ziaconsulting.com 303.443.4004 x203

description

Mike Mahon, President and Mike Muller, Director, Software Consulting at Zia Consulting talk about a native iPhone application Zia has developed that allows mobile access to an Alfresco document repository. This application runs against the most recent Alfresco releases; no additional software needs to be installed on the servers and no configuration of Alfresco is required.It is configured by default to run against an Alfresco instance running in the Cloud. All of the calls to Alfresco to authenticate and pull content are utilizing Alfresco’s CMIS API.We are currently beta-testing the application, called Fresh Docs, for submission to Apple’s app store. To be notified when it’s available in the app store, or to participate in the beta test, contact [email protected]. You can find more information about the app and our plans to Open Source the code behind it at www.ziaconsulting.com/iphone.To attend, please visit http://alfresco.acrobat.com/live and enter the meeting room as a Guest.You can find more information about TTL here:http://drquyong.com/myblog/?p=203and the wiki linkhttp://wiki.alfresco.com/wiki/Live#Schedule

Transcript of iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

Page 1: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

iPhone native App, CMIS and the Cloud

Mike Mahon, President, [email protected]

Mike Muller, Director, Software Consulting, [email protected]

10/30/09 www.ziaconsulting.com 303.443.4004 x203

Page 2: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

Who is Zia?

10/30/09 www.ziaconsulting.com 2

A firm with deep technical expertise and strategic insight, dedicated providing customers with the following benefits:

BenefitsZia’s deep technical expertise and strategic insight, coupled with our Agile software methodology, provide numerous benefits to our customers:

✦ 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

Professional Qualifications✦ Highly-experienced senior staff consisting of Business Analysts, Enterprise Architects, Software Engineers and Data Architects

✦ Alfresco Professional Services Partner

Our Partners

Page 3: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

Enterprise Content Management (ECM)

Enterprise 2.0 Solutions

Data Management

At its heart, our Agile-based methodology is centered on a close collaborative approach to maximizing value for our customers. Constant client communication is necessary to ensure that each development iteration addresses features with the highest business value, even if those features were unknown at the launch of the project.

Zia’s Agile Solution Methodology

Organizations have increasing demand for accessibility to information. It is critical to guarantee data security, consistency, and timeliness, while providing that data access. Zia’s expertise in data management helps organizations implement effective data governance strategies. This governance is the key to effective data management and success.

The focus of technology should always be on people. Zia enables our customers to gain tremendous competitive advantage by allowing their team to collaborate more effectively, respond more quickly to changes, and make better decisions. Adopters of Enterprise 2.0 solutions will find they have a more productive, engaged and informed team.

An ECM is a cultivation of knowledge -- one of the most valuable assets to any organization. A proper ECM system ensures content has integrity through proper version control, allows producers to easily create content and publish it to a variety of mediums, and it automates processes, streamlining the review, approval and distribution of content across an organization. Zia's ECM offerings provide all of these benefits, and more, in a manner tailored to the client's business needs.

Service Offerings

Page 4: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

What is the project?

10/30/09 www.ziaconsulting.com 4

Zia has developed an app that allows mobile access to an Alfresco document repository. This application runs against the most recent Alfresco releases; no additional software needs to be installed on the servers and no configuration of Alfresco is required.

It is configured by default to run against an Alfresco instance running in the Cloud. All of the calls to Alfresco to authenticate and pull content are utilizing Alfresco’s CMIS API.

Page 5: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

Why did we do this project?

10/30/09 www.ziaconsulting.com 5

Interest in the platform

Contribute back to the community

Great learning opportunity

Page 6: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

Why use the Cloud?

10/30/09 www.ziaconsulting.com 6

Reduced cost compared to dedicated server

XFS and Amazon EBS snapshots allow nearly instant online backups

http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1663

Duplicate instances quickly and easily

Grow repository space quickly and easily

Excellent public demo site for the iPhone app

Page 7: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

Why CMIS?

10/30/09 www.ziaconsulting.com 7

LightweightStandards-basedInteroperable

For more information:

http://en.wikipedia.org/wiki/Content_Management_Interoperability_Services

http://wiki.alfresco.com/wiki/CMIS

Page 8: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

Demo

10/30/09 www.ziaconsulting.com 8

Page 9: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

Benefits of a Native App

Offline operationUsability and performancePush notification

Page 10: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

Required Services

Get sitesGet childrenGet contentSearch

Page 11: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

Get Sites

[ { "url" : "\/alfresco\/service\/api\/sites\/clients", "sitePreset" : "site-dashboard", "shortName" : "clients", "title" : "Consulting", "description" : "Zia Consulting client focused site. Contains materials on proposal...", "node" : "\/alfresco\/service\/api\/node\/workspace\/SpacesStore\/65be3462-ddb7-415f-a263-d7aca36953ee", "tagScope" : "\/alfresco\/service\/api\/tagscopes\/workspace\/SpacesStore\/65be3462-ddb7-415f-a263-d7aca36953ee", "isPublic" : false, "visibility" : "PRIVATE", "siteManagers" : ["mmahon", "pjh", "bwavell", "pmyers", "jbarry"] },{ "url" : "\/alfresco\/service\/api\/sites\/intranet", "sitePreset" : "site-dashboard", "shortName" : "intranet", ...

alfresco/service/api/sites?format=json

Page 12: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

Get Childrenalfresco/service/api/node/workspace/SpacesStore/<GUID>/children<feed>... <entry> <author><name>pmahon</name></author> <content>54186503-ed0c-4037-98d4-d071fbe8368e</content> <id>urn:uuid:54186503-ed0c-4037-98d4-d071fbe8368e</id> <link rel="cmis-type" href="http://foo.bar.com:80/alfresco/service/type/folder"/> <link rel="cmis-repository" href="http://foo.bar.com:80/alfresco/service/api/repository"/>… <published>2009-06-30T23:33:35.564Z</published> <summary></summary> <title>blog</title> <updated>2009-06-30T23:33:35.578Z</updated> <cmis:object> <cmis:properties> <cmis:propertyString cmis:name="LastModifiedBy"><cmis:value>pmahon</cmis:value></cmis:propertyString> <cmis:propertyDateTime cmis:name="LastModificationDate"><cmis:value>2009-06-30T23:33:35.578Z</cmis:value> </cmis:propertyDateTime>... </cmis:properties> </cmis:object> <cmis:terminator/> <app:edited>2009-06-30T23:33:35.578Z</app:edited> <alf:icon>http://foo.bar.com:80/alfresco/images/icons/space-icon-default-16.gif</alf:icon> </entry>...</feed>

Page 13: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

Get Contentalfresco/service/api/node/workspace/SpacesStore/<guid>/filename.ext<feed>... <entry> <author><name>mmahon</name></author> <content type="application/msword" src="http://foo.bar.com:80/alfresco/service/api/node/workspace/SpacesStore/4cf3b9de-e492-4374-b0c5-b9a48661b011/content.doc"/> <id>urn:uuid:4cf3b9de-e492-4374-b0c5-b9a48661b011</id> <link rel="self" href="http://foo.bar.com:80/alfresco/service/api/node/workspace/SpacesStore/4cf3b9de-e492-4374-b0c5-b9a48661b011"/>... <link rel="repository" href="http://foo.bar.com:80/alfresco/service/api/repository"/> <published>2009-06-15T21:24:14.392Z</published> <summary></summary> <title>mmuller_bio.doc</title> <updated>2009-07-02T18:04:26.134Z</updated> <cmis:object> <cmis:properties> <cmis:propertyString cmis:name="BaseType"><cmis:value>document</cmis:value></cmis:propertyString>... <cmis:propertyId cmis:name="ObjectTypeId"><cmis:value>document</cmis:value></cmis:propertyId> </cmis:properties> </cmis:object> <cmis:terminator/> <app:edited>2009-07-02T18:04:26.134Z</app:edited> <alf:icon>http://foo.bar.com:80/alfresco/images/filetypes/doc.gif</alf:icon> </entry>...</feed>

Page 14: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

Searchalfresco/service/search/keyword.atom?q=<pattern>&p=1&c=<count>

<feed>... <entry> <title>WBS-django-conversion.xls</title> <link rel="alternate" href="http://foo.bar.com:80/alfresco/service/api/node/content/workspace/SpacesStore/986b162e-0867-4a7b-9f4f-0e3837cdc97b/WBS-django-conversion.xls"/>... <icon>http://foo.bar.com:80/alfresco/images/filetypes/xls.gif</icon> <id>urn:uuid:986b162e-0867-4a7b-9f4f-0e3837cdc97b</id> <alf:noderef>workspace://SpacesStore/986b162e-0867-4a7b-9f4f-0e3837cdc97b</alf:noderef> <updated>2009-06-15T22:06:23.037Z</updated> <summary></summary> <author> <name>mmahon</name> </author> <relevance:score>0.012</relevance:score> </entry>...</feed>

Page 15: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

CMIS

Content Mgmt Interoperability ServicesProvides abstract web API to access CMSSpecification not finalizedSOAP and RESTREST API based on AtomPub

Page 16: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

CMIS Search

New query language: CQLBased on SQL 92Each content type is a tableEach property is a column

select Title, Description from document where LastModifiedBy = ‘mmuller’

Page 17: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

CMIS Search Requestalfresco/service/api/query

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><query> <statement>select score() as Relevance, ContentStreamLength from Document where contains(‘pancakes')</statement> <pageSize>20</pageSize></query>

This is the body of the POST request(not the response)

pageSize must be > 0Content-Type = application/cmisquery+xmlnamespace is inconsistent

Page 18: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

CMIS Search Responsealfresco/service/api/query

<feed>... <entry> <author><name>mmahon</name></author> <content type="application/vnd.excel" src="http://foo.bar.com:80/alfresco/service/api/node/workspace/SpacesStore/986b162e-0867-4a7b-9f4f-0e3837cdc97b/content.xls"/> <id>urn:uuid:986b162e-0867-4a7b-9f4f-0e3837cdc97b</id> <link rel="repository" href="http://foo.bar.com:80/alfresco/service/api/repository"/>... <title>WBS-django-conversion.xls</title> <updated>2009-06-15T22:06:23.037Z</updated> <cmis:object> <cmis:properties> <cmis:propertyString cmis:name="BaseType"><cmis:value>document</cmis:value></cmis:propertyString> <cmis:propertyDecimal cmis:name="Relevance"><cmis:value>0.0256947092711926</cmis:value></cmis:propertyDecimal> <cmis:propertyInteger cmis:name="ContentStreamLength"><cmis:value>18944</cmis:value></cmis:propertyInteger> </cmis:properties> </cmis:object> <cmis:terminator/> <alf:icon>http://foo.bar.com:80/alfresco/images/filetypes/xls.gif</alf:icon> </entry>...</feed>

THIS is the response

Page 19: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

CMIS Get Sites

select f.Name from folder as f where f.ObjectTypeId = 'F/st_site'

alfresco/service/api/query

<feed>... <entry> <author><name>mmahon</name></author> <content>977a5305-6800-4825-ade3-73e53e032635</content> <id>urn:uuid:977a5305-6800-4825-ade3-73e53e032635</id> <link rel="repository" href="http://foo.bar.com:80/alfresco/service/api/repository"/>... <title>newclienttemplate</title> <updated>2009-09-05T11:45:55.925Z</updated> <cmis:object> <cmis:properties> <cmis:propertyString cmis:name="BaseType"><cmis:value>folder</cmis:value></cmis:propertyString> <cmis:propertyString cmis:name="f.Name"><cmis:value>newclienttemplate</cmis:value></cmis:propertyString> </cmis:properties> </cmis:object> <cmis:terminator/> <alf:icon>http://foo.bar.com:80/alfresco/images/icons/space-icon-default-16.gif</alf:icon> </entry>…</feed>

Page 20: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

CMIS Get SitesHow do I get the description?

Page 21: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

Get Childrenalfresco/service/api/node/workspace/SpacesStore/<GUID>/children

<feed>... <entry> <author><name>pmahon</name></author> <content>54186503-ed0c-4037-98d4-d071fbe8368e</content> <id>urn:uuid:54186503-ed0c-4037-98d4-d071fbe8368e</id> <link rel="cmis-type" href="http://foo.bar.com:80/alfresco/service/api/type/folder"/> <link rel="cmis-repository" href="http://foo.bar.com:80/alfresco/service/api/repository"/>... <published>2009-06-30T23:33:35.564Z</published> <summary></summary> <title>blog</title> <updated>2009-06-30T23:33:35.578Z</updated> <cmis:object> <cmis:properties> <cmis:propertyString cmis:name="LastModifiedBy"> <cmis:value>pmahon</cmis:value> </cmis:propertyString> <cmis:propertyDateTime cmis:name="LastModificationDate"> <cmis:value>2009-06-30T23:33:35.578Z</cmis:value> </cmis:propertyDateTime>... </cmis:properties> </cmis:object> <cmis:terminator/> <app:edited>2009-06-30T23:33:35.578Z</app:edited> <alf:icon>http://foo.bar.com:80/alfresco/images/icons/space-icon-default-16.gif</alf:icon> </entry>...</feed>

It was CMIS already!

Page 22: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

Next Steps One call to get top-level site documents Workflow (approve/reject) Push notification (of task events, for instance) More Share features (blogs, forums, etc.)

Send an email to [email protected] to become a beta tester

Visit www.ziaconsulting.com/iphone for more information Release the source code

Page 23: iPhone, CMIS, and Amazon EC2 - Tech Talk Live with Alfresco

Zia Clients