我需要在人们的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上。
有人可以帮忙吗?
答案 0 :(得分:0)
我自己找到了解决这个问题的方法。
在Central Administration
,Setup MySites
中,您必须在Enable SharePoint 2010 activity migration
部分启用Newsfeed
设置,以便支持SP2013中的SP1010遗留活动。