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