Alfresco Rumors: XMPP Enable Alfresco nodes (POC)

Post on 17-May-2015

4,660 views 0 download

description

Alfresco Summit. A proof of concept on how to XMPP (Messaging and Presence) Alfresco nodes. Via IM: Send notifications of changes, Comments on nodes are persisted to Alfresco, Comments added via web client are sent to subscribed users, Update Content in Alfresco from IM Client file transfer, Download content from IM client

transcript

#SummitNow

Alfresco Rumors:What is your content saying?7 Nov 2013 / 15 Nov 2013Jared Ottley / Alfresco Software

#SummitNow

#SummitNow

AgendaWhat is XMPP?Alfresco Rumors

• DemoLagniappeQ&A

#SummitNow

#SummitNow

What is XMPP?

#SummitNow

#SummitNow

XMPP – History+Jeremie Miller• Jabberd/XMPP (1998)

XMPP• Extensible Messaging & Presence

Protocol• Communication & Message Middleware• Extensible:• Pub/Sub, VoIP, Video, Gaming, IoT, File

Transfer

#SummitNow

#SummitNow

XMPP example<stream:stream><presence/>…<message from=“alfresco@xmpp.alfresco.com” to=“jared.ottley@xmpp.alfresco.com.com”>

<body>XMPP is cool!</body></message>…<presence type=“unavailable” /></stream:stream>

#SummitNow

#SummitNow

XMPP – Where can you get it?Servers:http://xmpp.org/xmpp-software/servers/

Clients:http://xmpp.org/xmpp-software/clients/

Libraries:http://xmpp.org/xmpp-software/libraries/

#SummitNow

#SummitNow

Alfresco RumorsGoal: Enable Alfresco nodes to talk and listen to XMPP events

#SummitNow

#SummitNow

Alfresco RumorsInitial Features• Notification of Changes• Comment• File Upload• Commands

#SummitNow

#SummitNow

Alfresco Rumors

Client

Client

Client

#SummitNow

#SummitNow

Alfresco Rumors

Client

Client

Client

0..n Clients

#SummitNow

#SummitNow

Alfresco RumorsBuilt using:• Alfresco 4.2• Openfire 3.8.2• Smack 3.3.1• Adium 1.5.8

#SummitNow

#SummitNow

Alfresco Rumors

Demo

#SummitNow

#SummitNow

Alfresco Rumors

cm:person

xmpp:user

xmpp:username

#SummitNow

#SummitNow

Alfresco Rumors

cm:content

xmpp:node xmpp:passwor

dxmpp:roster {…}

xmpp:owner

#SummitNow

#SummitNow

Alfresco Rumors

Client

Client

Client

#SummitNow

#SummitNow

Alfresco Rumors

XMPPServiceXMPPNodePolicy

/rooster/add

/disable

/enable

/message

XMPPClients

#SummitNow

#SummitNow

Alfresco Rumors

XMPPService

XMPPClients

Openfire Client

User Plugin

#SummitNow

#SummitNow

Alfresco Rumors

XMPPClient

Connection

File Transfer Manager

#SummitNow

#SummitNow

#Todo• Roster web script CRUD• Notification property list• Simplify adding commands• Test Scaling• Message web script broadcast, excludes• Add pub/sub• Rework User Service to be more RESTful

#SummitNow

#SummitNow

JingleAn extension that adds peer-to-peer (P2P) session control (signaling) for multimedia interactions such as in Voice over IP (VoIP) or videoconferencing communications.

• Voice• Video• Application

Sharing• Collaborative

Editing• Whiteboarding

#SummitNow

#SummitNow

FormsAn extension for data forms that can be used in workflows such as service configuration as well as for application-specific data description and reporting.

• Property Update• Workflow• Content Creation

#SummitNow

#SummitNow

Forms

#SummitNow

#SummitNow

Multi-User ChatAn extension for multi-user text chat, whereby multiple XMPP users can exchange messages in the context of a room or channel, similar to Internet Relay Chat (IRC). In addition to standard chatroom features such as room topics and invitations, the protocol defines a strong room control model, including the ability to kick and ban users, to name room moderators and administrators, to require membership or passwords in order to join the room, etc.

#SummitNow

#SummitNow

PresenceUpdate user lists of sites/share to provide online/offline notification.• Desktop Client• Mobile Client• Browser

#SummitNow

#SummitNow

Messaging• PubSub / Activity Feeds• RTC• Cross Application Messaging

• Inbound Messaging• Server Status

#SummitNow

#SummitNow

Lagniappela•gniappe | lan yap |nounSomething given as a bonus or extra giftORIGIN Louisiana French, from Spanish la ñapa.

#SummitNow

#SummitNow

GetNodesWithAspectCannedQueryFactoryRequirement:• Start XMPP node clients on start up

#SummitNow

#SummitNow

GetNodesWithAspectCannedQueryFactory

#SummitNow

#SummitNow

GetNodesWithAspectCannedQueryFactory

#SummitNow

#SummitNow

GetNodesWithAspectCannedQueryFactorypublic org.alfresco.query.CannedQuery getCannedQuery(org.alfresco.service.cmr.repository.StoreRef storeRef, java.util.Set aspectQNames, org.alfresco.query.PagingRequest pagingRequest)

• If run at init, the query maybe run before the schema is created – Solution: subsystem.

#SummitNow

#SummitNow

Custom User Profile

• Override SlingshotUserFactory class• constructUser• saveUser

• Custom userprofile.get* web script• Custom profile.js

These must be verified for changes with each new version of Alfresco.

#SummitNow

#SummitNow

Custom User Profile

custom-slingshot-*-context.xml<bean id="webframework.factory.xmpp.user” class="org.alfresco.integrations.xmpp.share.XMPPUserFactory” parent="webframework.factory.base" />

share-config-custom.xml <config evaluator="string-compare" condition="WebFramework"> <web-framework> <defaults> <user-factory>webframework.factory.xmpp.user</user-factory> </defaults> </web-framework> </config>

#SummitNow

#SummitNow

Alfresco Rumors

Q && A

#SummitNow

#SummitNow

ResourcesAlfresco Rumorshttps://github.com/jottley/alfresco-rumors

Openfire, Smack, Sparkhttp://www.igniterealtime.org/

#SummitNow