新闻源中的SharePoint 2013活动事件

时间:2015-08-13 11:25:10

标签: sharepoint sharepoint-2013 feed mysite

我需要在人们的MySites上为个人新闻源添加自定义通知。我在网上找到了几个SharePoint 2010的教程和代码示例,并尝试对SharePoint 2013执行相同的操作。它们都是关于使用ActivityEvents创建ActivityManager

这是我尝试过的代码:

        var targetSite = new SPSite("URL to MySite webapp");
        SPServiceContext context = SPServiceContext.GetContext(targetSite);
        var userProfileManager = new UserProfileManager(context);

        var ownerProfile = userProfileManager.GetUserProfile("domain\\user1");
        var publisherProfile = userProfileManager.GetUserProfile("domain\\user2");

        var activityManager = new ActivityManager(ownerProfile, context);

        Entity publisher = new MinimalPerson(publisherProfile).CreateEntity(activityManager);
        Entity owner = new MinimalPerson(ownerProfile).CreateEntity(activityManager);
        ActivityEvent activityEvent = ActivityEvent.CreateActivityEvent(activityManager, 17, owner, publisher);
        activityEvent.Name = "StatusMessage";
        activityEvent.ItemPrivacy = (int)Privacy.Public;
        activityEvent.Owner = owner;
        activityEvent.Publisher = publisher;
        activityEvent.Value = "HELLOOOO";
        activityEvent.Commit();

        ActivityFeedGatherer.BatchWriteActivityEvents(new List<ActivityEvent> { activityEvent }, 0, 1);

17函数中的ID CreateActivityEvent适用于StatusMessage活动类型,其类似于{Publisher} says: {Value}在资源文件中,因此我提供了{{1}我的Value的属性。

代码运行没有任何异常,在ActivityEvent数据库中,我可以看到正确的条目出现在User Profile Service Application_ProfileDB表中。 但是活动在活动供稿中是不可见的,既不是在所有者上也不是在发布者的活动中,即使这些人互相追随。我手动在CA中运行了活动源作业以更新活动源。 此外,我尝试使用自己的ressource文件对自定义ActivityEventsConsolidated执行相同的操作,结果相同:ActivityTypes表中的条目(如果Owner = Publisher,则为ActivityEventsConsolidated),但没有条目在MySite上。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我自己找到了解决这个问题的方法。 在Central AdministrationSetup MySites中,您必须在Enable SharePoint 2010 activity migration部分启用Newsfeed设置,以便支持SP2013中的SP1010遗留活动。