alfresco rumors: xmpp enable alfresco nodes (poc)
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 clientTRANSCRIPT
#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=“[email protected]” to=“[email protected]”>
<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