gpt4 book ai didi

sharepoint - 如何从 Sharepoint 2010 中的工作流事件处理程序获取上下文

转载 作者:行者123 更新时间:2023-12-04 06:27:25 24 4
gpt4 key购买 nike

我正在将我们的自定义解决方案升级到 Sharepoint 2010。我想利用 工作流程已完成 事件处理程序,但我似乎无法获得相关的 SPListItem 从事件属性。

我尝试使用 SPWorkflowEventProperties.ActivationProperties 但这总是返回 null(即使在 WorkflowStarted 事件处理程序中)。

如何从工作流事件处理程序( SPListItem SPWeb SPSite 等)获取上下文?

最佳答案

我发现了同样的事情。 SPWorkflowEventProperties 实际上是无用的,因为几乎所有内容都为空。它不会说明状态(已批准、已拒绝等)。而且,最重要的是,它不会(直接)说明完成了哪些项目。希望这将在 future 的版本中得到解决。与此同时,我使用了以下内容:

public override void WorkflowCompleted(SPWorkflowEventProperties properties)
{
using (SPSite site = new SPSite(properties.WebUrl))
{
using (SPWeb web = site.OpenWeb())
{
SPListItem task = GetApprovedTask(properties, web);
SPListItem item = GetApprovedItem(web, task);
if (null != item)
{
// TODO : process approved item
}
}
}
}

private SPListItem GetApprovedItem(SPWeb web, SPListItem task)
{
SPListItem item = null;
if (null != task)
{
SPList list = web.Lists[new Guid(task[SPBuiltInFieldId.WorkflowListId].ToString())];
item = list.GetItemById((int)task[SPBuiltInFieldId.WorkflowItemId]);
}
return item;
}

private SPListItem GetApprovedTask(SPWorkflowEventProperties properties, SPWeb web)
{
SPListItem item = null;
string caml = @"<Where><And><And><And><Eq><FieldRef Name='WorkflowOutcome' /><Value Type='Text'>Approved</Value></Eq><Eq><FieldRef Name='WorkflowInstanceID' /><Value Type='Guid'>{0}</Value></Eq></And><IsNotNull><FieldRef Name='WorkflowListId' /></IsNotNull></And><IsNotNull><FieldRef Name='WorkflowItemId' /></IsNotNull></And></Where>";
SPQuery query = new SPQuery();
query.Query = string.Format(caml, properties.InstanceId);
query.RowLimit = 1;
SPList list = web.Lists["Tasks"];
SPListItemCollection items = list.GetItems(query);
if (items.Count > 0)
{
item = items[0];
}
return item;
}

关于sharepoint - 如何从 Sharepoint 2010 中的工作流事件处理程序获取上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5870961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com