我正在开发一个SharePoint Web部件,该部件将批准选定的Nintex Workflow任务。列出Nintex工作流任务的简单表格(需要批准的复选框)。有没有人有一个例子如何在网站集中获得Nintex工作流任务?我想CAML查询将用于此。
谢谢,
Jakub
答案 0 :(得分:1)
由于您必须从网站集中的不同子网站获取任务,因此您必须使用SPSiteDataQuery。您可以将列表模板用于工作流任务,并在需要来自所有子站点的任务时将Web范围指定为“SiteCollection”。您可以编写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等。您可以创建自定义控件复选框显示任务并添加批准该任务的功能。
答案 1 :(得分:1)
Web部件实现至少可以考虑两种方法
由于范围是网站集,因此应使用SPSiteDataQuery class。
示例:从网站集返回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);
}
}
步骤:
您需要在搜索中创建自定义托管属性
映射到已爬网属性的服务应用程序
ows_ContentType
然后您可以构建关键字查询:ContentTypeName:"Nintex
Workflow Multi Outcome" OR ContentTypeName:"Nintex Workflow Task"
请参阅Building Search Queries了解更多详情