使用SharePoint Web服务获取工作流状态

时间:2013-05-27 06:54:45

标签: sharepoint-2010

我需要一些帮助,也许有人面临类似的任务。 我想使用SharePoint 2010 Web服务找到状态为“Error ocured”的所有工作流。 我想知道这项任务是否可行? 感谢。

1 个答案:

答案 0 :(得分:0)

使用CAML,您可以使用Web服务进行查询。

使用方法GetListItems和CAML查询与WorkflowStatus = 3(发生错误)。

public XmlNode _nodes;
string _ListID = "";
string _ViewID = "";
XmlDocumento _xmlDoc = new System.Xml.XmlDocument();
XmlElement _query = _xmlDoc.CreateElement("Query");
XmlElement _queryOptions = _xmlDoc.CreateElement("QueryOptions");
XmlElement _viewFields = _xmlDoc.CreateElement("ViewFields");

_query.InnerXML = @"
   <Where>
     <Eq>
       <FieldRef Name='WorkflowNameColumn' />
       <Value Type='WorkflowStatus'>3</Value>
     </Eq>
   </Where>";
_queryOptions.InnerXml = "<QueryOptions>   <IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns></QueryOptions>";
_viewFields.InnerXml = "";
// SharepointListWS is the name i use in Web References
SharepointListsWS.Lists _lst = new SharepointListsWS.Lists();
_nodes = _lst.GetListItems(_listID, _ViewID, _query, _viewFields, "300", _queryOptions, null);
foreach (XmlNode node in _nodes) {
  if (node.Name.ToLower() == "rs:data") {
    for (int i = 0; i < node.ChildNodes.Count; i++) {
      if (node.ChildNodes[i].Name.ToLower() == "z:row") {
        // you can debug here
        XmlNode AllNodes = node.ChildNodes[i];
        // Find at Attributes
        for (int a = 0;a < AllNodes.Attributes.Count; a++) {
           string field = AllNodes.Attributes[a].Value.Trim();
           string name = AllNodes.Attributes[a].Name;
           string colName = XmlConvert.DecodeName(name).ToLower().Replace("ows_", "");
        }
      }
    }
  }
}

可以找到状态列表here