在网站集中列出Nintex Workflow任务

时间:2014-03-03 03:42:24

标签: sharepoint web-parts caml nintex-workflow

我正在开发一个SharePoint Web部件,该部件将批准选定的Nintex Workflow任务。列出Nintex工作流任务的简单表格(需要批准的复选框)。有没有人有一个例子如何在网站集中获得Nintex工作流任务?我想CAML查询将用于此。

谢谢,

Jakub

2 个答案:

答案 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部件实现至少可以考虑两种方法

基于查询的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了解更多详情