2012年3月21日,星期三

Extending 的SharePoint 2010 社会的 features

在社交方面,似乎许多SharePoint 2010客户想要和/或继续想要的不仅仅是“out-of-the-box”。使用活动供稿的客户尤其如此–将SharePoint变为社交平台的功能之一。“如何在活动供稿中对这些事情之一进行回复/评论?”客户通常会说。“Where’s the ‘like’ button?!”。因此,大量的第三方产品应运而生–一些专门用于SharePoint(Newsgator,Beezy,SnapworkSocial等),一些更通用,有时基于云,但具有SharePoint集成(Yammer等)。一世’m not an expert in those products, though I have looked 在 some. What I 做 know is 那 most are still evolving, and if you started this journey a while ago, frankly you might not have 喜欢d any of them. 可能be you have reasons for still not liking any of them, such as privacy concerns. Or perhaps the fact 那 many want to be a parallel universe alongside 的SharePoint, where content is “sync’d” or “published”至。我注意到几种产品的完全相同之处 更换 的SharePoint活动供稿,以及有关Microsoft构建的许多好东西,不幸的是丢失了-标签周围的通知我’m感兴趣,职位变化,有人指定他们和我有相同的兴趣,依此类推。这些都是我宝贵的功能’看到在企业中运作良好–它们有助于联系彼此相关的人员,内容和公司项目/工作流。

在这里,我想向您展示我们为一个客户所做的工作,也许采取了一种以SharePoint为中心的方法。一世’我不是在这里卖(它’不是收缩包装的产品,我不知道’拥有它),但是我认为谈论SharePoint中的一些难点以及您可能会做些什么会很有趣。我赢了’将发布源代码。这是我从事的项目的一部分 内容和代码,英国的合作伙伴。我是一个很小但很有才能的团队的一部分,这个团队包括我自己, 韦斯·哈克特(Wes Hackett)和Rich Browne (Rich is an extremely capable ‘under the radar’有点)。一些客户’的海上团队(一个非常棒的团队)也围绕着这套工具开发了其他功能。

活动提要– from “one way” to “two way”

所以让’从活动提要开始。让’s go from this:

OutOfBoxActivityFeed800_thumb

..对此(单击以查看大图):

ActivityFeed8001

Notice 那 the content is pretty much the same in both images. The look and feel is clearly 被偷 influenced by 脸书, but I’d 喜欢 to think there’不仅如此。显然我们有大‘tick-list’ items such as liking and commenting (more on these later), but we also enhanced some other aspects of the 的SharePoint 2010 activity feed too:

  • Activity feed items related to 的SharePoint content – did it ever strike you as weird 那 的SharePoint is an ECM system, but only status updates, job title changes and other ‘social’ things appear in the activity feed? Our client thought so, and we changed 那. Our feed has the 以下 content:
    • 公告,讨论/讨论回复,Wiki页面/企业Wiki页面,博客文章和博客评论。请注意缺少文件–显然,大多数SharePoint环境都有大量的文档,因此此内容类型需要一些考虑。后来我’ll talk about our ‘subscriptions’框架,使用户可以选择查看某些位置的文档。
    • [边注:ECM内容类型也出现在上方的第一张图片中,但这仅是因为我们‘activity publish’代码正在与OOTB合作‘presentation’ code – they wouldn’在标准的SP2010安装中显示。]
    • [边注:我的好友Wes在互联网上拥有最佳的参考资料,包括一些代码示例– see 用企业内容扩展活动提要]
  • 丰富的活动:
    • 上图中的博客文章就是一个很好的例子 –在OOTB活动提要中,用户只能看到文章标题。在我们的版本中,您会看到标题和内容的第一部分-提供更多上下文来帮助您确定链接是否值得关注。
    • 还检查了‘Rich Browne添加了一个新同事项目’ item. If he’s添加了一个新同事,很高兴给他看一张照片。
  • 影像学 –这样可以更轻松地快速识别条目的含义。
  • ‘Likes’ in the feed - 在某些情况下,‘likes’ are 已发表 to the feed as an activity. See the first item in the second screenshot). More on this later.
  • ‘My activity’ view –这可以帮助我找到我想要的东西’ve 已发表. For example, if I uploaded a PowerPoint 介绍 recently and know someone made an interesting comment, this view will help me find it again.
  • 状态更新栏 – no longer any need to navigate off to my 的SharePoint profile page just to update my status.
  • 外观和感觉 –主观的,但可以说更漂亮:)

评论/笔记板

对话和对话是大多数社交解决方案的基础,毫无疑问,您’re familiar with how it works on 脸书 et al. But 的SharePoint 2010 already has the note board which allows comments/notes to be added on every 做cument, page and list item – so isn’够了吗?好吧,可能不会。一方面,请考虑我们希望能够发表评论‘social’ activities such as status updates, job title changes and so on. On a different tangent, the 的SharePoint 2010 note board architecture is effectively incompatible with a 脸书-style display of activities and comments 挂掉 them (as shown in our enhanced activity feed). This is because to fetch the set of comments for a feed containing 20 items, I have to make 20 individual calls to SocialCommentManager.GetComments() –这显然不会执行或扩展。因此,我们需要一种不同的方法。

在我们的案例中,我们做出了废弃标准笔记板的重大决定。这里有一些重要的考虑因素,包括向vNext的迁移路径,但是我们得出的结论是,编写一些迁移脚本(以及迁移我们将拥有的数据量)完全符合升级项目的期望。因此,没有OOTB设计的束缚,它’s possible to go back to first principles and use whatever data schema fits best. The key is simply being able to retrieve all your 喜欢s/comments (and anything else) in one operation, for whatever page/web part designs you come up with. Nothing more to it. When implemented this way, it means 那 a user can add a comment to a 的SharePoint item 来自活动提要或来自项目’s note board,无论我在哪里浏览该商品,这些评论都会显示出来。值得注意的是,大多数(也许是所有?)第三方产品处理此问题的方式是完全避开该问题–活动供稿中的注释仅显示在活动供稿中,而记事板上的注释则仅存在于记事板上–吐温再也见不到。我们的客户不是’由于这两个概念之间存在巨大的重叠,所以对此感到不满意-感觉这种脱节的行为可能会使用户感到困惑。我们争论说,我们的道路可能意味着“noise”评论将针对项目(“老兄,漂亮的小猫照片大声笑!”),但我们的客户更喜欢此方法。

所以当我们’不必在记事本上做一些工作,我们不妨给它一些UI方面的帮助。我的犯罪伙伴里奇(Rich)决定“显示5个项目并进行分页” approach was pretty poor in this enlightened age of 脸书 infinite scrolling. Even weirder, did you notice 那 any user can delete another user’注意?治理,谁需要它?这里’s a reminder of the 盒子外面 note board:

OOTB_noteboard_thumb1

这里’最终得到的是:

标签和注释Window_thumb7

如果我’d以上述用户之一的身份登录,那么‘Edit’ and ‘Delete’链接将显示在我的注释旁边(例如,我们修复了缺乏安全性的情况)‘Delete’)。还要注意,我们的日期比SharePoint更加用户友好’s ‘raw’显示日期/时间。

记事板Web部件

还考虑除‘tags and notes’ window, the 的SharePoint note board is also a web part which can be dropped on a page. This can be a great idea for a team site home page for example, so we ensured our note board had the same capability:

NoteBoardWebPart_thumb5

个人资料记事板

In 的SharePoint 2010, the note board also appears on a user’s profile page and can be used to leave a note for 那 person. In 那 context, it looks 喜欢 this:

OutOfBoxProfileNoteBoard800_2_thumb

This is definitely a useful piece in the 社会的 feature set - people are certainly getting used to sending messages using something other than e-mail. However, the lack of ‘reply’/ threaded讨论经常成为一个问题–你最终陷入了写作的荒谬脱节的境地 彼此’s profile in order to have a conversation. We thought it should be something more 喜欢 this:

ProfileNoteBoard800-_2_thumb

如果你 ever want to 做 something similar, 做n’不要忘了电子邮件通知,该通知提醒用户笔记已留在他们的笔记板上。当然,如果您要进行自定义操作,’有机会增强电子邮件的内容和行为–例如,不仅有人在您的记事板上发布通知时还会发送通知,而且有人在回复您的对话时也会发送通知’re involved in.

入口点

所以’拥有这个超级双面记录板真是太好了,但是’s also worth mentioning the experience to get to it. Since we already had much of the back-end code to support it, we thought we may as well display the number of 喜欢s/comments for the current page (or highlighted list item, or whatever). This is great for instantly seeing “interaction” around the current item, and probably encourages people to perform these 社会的 actions:

BadgeCounts_Liked2_thumb

These are basically direct 更换ments for the 社会的 controls added to the ribbon for ‘I 喜欢 it’ and opening the 标签和注释 window.

说到‘I 喜欢 it’ functionality in 的SharePoint, let’谈论我们如何应对‘likes’.

喜欢–比您想象的更重要

的SharePoint 2010’s ‘I 喜欢 it’ is implemented as a 社会的 tag –这使Microsoft可以重新使用该功能的管道,并且在某些方面是一种很好的处理方式。但是,我们有不同的看法。对于我们/我们的客户而言,喜欢的主要目的是“generate footfall” – in other words, to put content under the eyes of people who would not otherwise see it. 脸书 做es this. So if a colleague of mine “likes”我没有的一些内容’在我的活动供稿中看不到 because it was created by a non-colleague or in a site/list/library which 我不’t have a ‘subscription’ to (注:‘subscriptions’是另一件定制作品,我’待会再说),然后我’可以在我的供稿中看到它:

LikeActivity_thumb3

因此,在上图中,Tristan Watkins是我的同事,但David Bowman不是。为了确保良好的品质,我们提出了一些建议 信噪比 比率在这里。您肯定会在以下方面变得相当复杂“keeping score” of which users have received 喜欢s for which content, and such conversations were a good reminder of the complex algorithms behind 脸书. However, simply ensuring 我不’t see 喜欢s for content I’我可能已经意识到这是一个很好的起点。请记住,如果原始活动(例如状态更新/文档/所有内容)出现在我的供稿中,那么我’ll be able to see 喜欢s/comments “hanging off” it right there – but it’s the 喜欢s “broadcast”我们需要注意的活动。最后,我们对注释的实现也使用了相同的“broadcast” logic –这样我就可以看到我的同事对我可能看不到的项目发表的评论。

最终结果非常强大。我们的客户在整个业务中都有一些喜欢的例子,例如,人们将人们聚集在一起(例如,他们继续共同努力,这对公司来说是成功的)– if you’re cynical about 社会的, seeing this happen might change your mind.

In user-experience terms, of course we also need to be able to see who 喜欢d any particular item. We put 那 as a new tab in the existing ‘tags and notes’窗口。尽管未在此图中显示,但我会看到‘Add as colleague’我曾经不在的任何人旁边的按钮(和状态图标)’已有同事,因为我们希望鼓励整个企业之间的联系:

点赞Dialog_thumb9

订阅内容

如果你’熟悉SharePoint的社会方面,您’ll know it’关于同事关系的一切。我的活动提要让我了解了同事的工作并帮助我保持联系。但是,在我们工作的环境中,这被认为有点“one-dimensional”-同事关系场’永远都是理想的。例如,如果我发现一个很棒的团队网站,那里的内容对我的工作非常有趣,那么会发生什么。让’s say it’是在SharePoint上开展业务的另一部分,’s说这些家伙正在制作一些出色的建筑文档。我可能不知道’不想将所有贡献者都添加为该站点的同事–一方面,我可能不希望他们的状态更新,生日,经理变更等。我可能 关心他们是否使用文件标记‘SharePoint’ or related terms, but remember 那 in the 盒子外面 activity feed I can be notified of 那 simply by ‘following’‘这些标签。因此,我真正想要的只是在站点中创建新内容时得到通知。一世 猜测 我可以使用警报,但是坦率地说,我的收件箱已经很忙,无论如何,这肯定是我偶尔会放入活动供稿中的东西吗?

So, we created a 订阅 framework. If a user sees some content in 的SharePoint, they can use it to be notified in their activity feed about new items, without requiring colleague relationships. Users can subscribe 在 the site (web) level:

SubscribeSiteActionsButton_thumb2

..或他们可以订阅特定的列表或库:

SubscribeRibbonButton_thumb2

SubscriptionConfirmation_Small_thumb

It’也可以订阅网站,但不包括“noisy”列表或库。订阅后,我’我会看到新的内容出现在我的活动供稿中,其中包括文档。正如我之前所说,我们没有’t implement notifications for 做cuments from colleagues because we felt 那 would result in 噪声, simply because 做cuments are so prevalent. With 订阅, it felt 喜欢 the user would have more control. The image below shows a 做cument in my activity feed –还考虑一下,现在我们的提要中有多种处理方式,因此我们添加了一个上下文菜单,以便用户可以理解为什么看到特定项目:

ActivityFeed_ContextMenu_800

小组活动供稿

除了对活动提要的主要增强之外,我们还开发了团队/小组活动提要。我们发现这是团队网站主页上很棒的Web部件–然后,网站的访问者可以立即看到新内容以及与该网站相关的其他近期活动。使用SharePoint提供的功能来实现这个概念有些棘手,但是我们对最终设计感到满意。在我们的模型中,此视图显示 该站点的任何所有者/成员与该站点有关的近期活动,以及任何新内容,包括文档 (i.e. as though you had a 订阅 to the site).

概要

With 的SharePoint 2010, the direction of the product moved firmly towards the 社会的 arena –当然,组织可以灵活选择是否使用此功能。但是,在采用者中’s fairly common to want more than is provided 盒子外面, and I’ve hopefully given some food for thought on what an enhanced version might look 喜欢.

18条评论:

@rixabix(Richard Weston)说过...

这绝对是绝妙的东西,它显示了一些想法,您可以如何弥补MS整合在一起的产品所缺少的空白。

Thanks for sharing this Chris, it has certainly given me some insperation on improving the 社会的 features within our deployment :)

丰富

@SPJeff说过...

很棒的演示!上面的屏幕截图看起来很棒。感谢您的详细帖子,并与社区分享。

未知说过...

那'非常好的UI和功能。只需查看有关优质产品的图像和图像即可。它's awsome!

匿名 said...

嘿克里斯,

和往常一样,很棒的东西,或者我应该说比往常更好:)。一世'我在活动Feed中做了一些工作,'并不是最简单的API,因此恭喜您取得了这些成就。

斯蒂芬·艾肯斯(Stephane Eyskens)

弗兰克·奥夫·克里斯蒂安森说过...

克里斯,很棒的文章!

去年在伦敦的BPC会议上,我看到了一些类似的东西,对此印象深刻。

I see a lot of your features as well in NewsGator Social Sites for 的SharePoint, but this is a much more complex solution (and quite expensive).

您是否打算将其中的任何一种投放市场?

再次感谢!

克里斯·奥'Brien说过...

@坦率,

Thanks for the kind words. 我不'自己拥有任何代码,但您可以与 内容和代码.

干杯,

克里斯。

弗兰克·奥夫·克里斯蒂安森说过...

谢谢!
I'现在已经给他们发送了电子邮件。 :-)

马丁·卡扎科夫(Martin Kazakov)说过...

嘿克里斯,

很棒的帖子!感谢您分享这个。
您能给个提示吗,您需要花多长时间开发?团队有多大?

谢谢
马丁

马丁·卡扎科夫(Martin Kazakov)说过...

嘿克里斯,

很棒的帖子!感谢您分享这个。
您能给个提示吗,您需要花多长时间开发?团队有多大?

谢谢
马丁

比尔·克里斯德说过...

So, you were able to 做 this witohut creating your own data structures in SQL server? This has been the big sticking point for me 在 the beginning stages of a similar project. I have re-orged the 社会的 UI and now am looking 在 the 社会的 feeds but woudl prefer not to create my own databases and all of the headaches 那 it creates administratively and for upgrade considerations. Thanks for the article. very interesting

匿名 said...

哇!多么伟大的文章,您是男人,干得好。感谢您分享这个。

大卫·格林说过...

这是非常令人印象深刻的。如果拥有代码的组织出售或开源它会很好,因为我的组织将从中受益匪浅!

(开放源代码很棒,因为我们是一个资金短缺的内城区学区)

未知说过...

确实令人印象深刻。
但是,您如何设法将评论链接到OOTB ActivityEvents?
I've tried but I can'找到一种方法来识别由Sharepoint创建的合并ActivityEvent。

谢谢

克里斯·奥'Brien说过...

@Guillaume,

是的,我们度过了一个快乐的早晨,正在思考那个。在我们的案例中,答案是,尽管ActivityEvents在SharePoint 2010中具有ID系统,但没有人说您必须使用它来链接到自定义数据:)我们只是使用了复合ID(在适用于我们的方案上) ,仅此而已。

谢谢,

克里斯。

未知说过...

@克里斯
我肯定错过了什么。

考虑到事件发生时,Sharepoint为将在其活动供稿上看到该事件的每个人创建一个不同的ActivityEvent(具有不同的ID)。
您如何识别与同一事件相关的所有这些ActivityEvent,以便它们可以共享同一组注释?

我没有找到任何通用ID。
我能想到的最好的方法是结合使用CreationDate,publisherID,activityType等。

克里斯·奥'Brien说过...

@Guillaume,

我不'记得我们使用的确切方案,但是它与您所描述的非常相似。它工作得很好:)

谢谢,

克里斯。

匿名 said...

克里斯,您好,您能给我们大概估算一下这笔费用/时间/金钱吗?

匿名 said...

I'一直在做一个自定义"Facebook"基于SharePoint 2010的应用程序。所有不可思议的解决方案的基础是SocialComment。您可以使用自定义URI创建SocialComments。这是主要问题。您可以创建URI'对您的用户(UserProfile's)使用AccountName作为ID,并使用recordId分组(OrganizationProfiles)。好像's simple but it isn'相信我。有两个主要问题。 1)安全,因为你'必须迫使创建评论的用户成为该评论的作者。 2)SocialCommentMmanager的API是很多。例如,您无法通过ID获得SocialComment!您的'll have to use "Reflection" ;-) to 做 some operations. But 在 the end, and lots of effort we have a custom solution 喜欢 yours based on SocialComments.