#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