我正在处理一个SharePoint Web部件,该部件将批准选定的Nintex工作流任务。这将是列出Nintex工作流任务的简单表格(需要批准的复选框)。有没有人有如何在网站集中获取Nintex工作流任务的示例?我想 CAML 查询将用于此目的。
谢谢
雅各布
由于您必须从网站集中的不同子网站获取任务,因此必须使用 SPSiteDataQuery。您可以将列表模板用于工作流任务,并将网站范围指定为"网站集",因为您需要来自所有子网站的任务。您可以编写 caml 查询条件来筛选出任务。
SPSiteDataQuery query = new SPSiteDataQuery();
// Query all Web sites in this site collection.
query.Webs = "<Webs Scope="SiteCollection">";
//Ask for all lists created from the tasks template.
query.Lists = "<Lists ServerTemplate="107" />";
以下是所有列表模板 ID 的列表http://mirusp2010.blogspot.in/2013/03/list-template-id.html
如果已为类创建自定义列表模板,则可以指定 ID。SPSiteDataQuery 返回的数据表将包含有关此任务来自的子网站、任务的 id 等的信息。可以使用复选框创建自定义控件,以显示任务并添加功能以批准该任务。
可以考虑两种方法来实现 Web 部件
基于查询的 Web 部件
由于范围是网站集,因此应使用 SPSiteDataQuery 类。
示例:从网站集返回 Nintex 任务
/// <summary>
/// Retrieve Nintex Tasks from site collection
/// </summary>
/// <param name="siteUrl"></param>
/// <returns></returns>
public static DataTable GetNintexTasksResult(string siteUrl)
{
using (var site = new SPSite(siteUrl))
{
SPSiteDataQuery query = new SPSiteDataQuery();
query.Lists = "<Lists ServerTemplate="107" />";
query.Query = "<Where>" +
" <Or>" +
" <Eq>" +
" <FieldRef Name='ContentType' />" +
" <Value Type='Text'>Nintex Workflow Task</Value>" +
" </Eq>" +
" <Eq>" +
" <FieldRef Name='ContentType' />" +
" <Value Type='Text'>Nintex Workflow Multi Outcome Task</Value>" +
" </Eq>" +
" </Or>" +
"</Where>";
query.Webs = "<Webs Scope="SiteCollection" />";
return site.RootWeb.GetSiteData(query);
}
}
基于搜索的 Web 部件
步骤:
您需要在搜索中创建自定义托管属性映射到已爬网属性的服务应用程序
ows_ContentType
然后你可以构造关键字查询:
ContentTypeName:"Nintex Workflow Multi Outcome" OR ContentTypeName:"Nintex Workflow Task"
有关更多详细信息,请参阅构建搜索查询