我们在Sharepoint 2010中有一个审批工作流程,当用户上传文档时,他们可以启动此审批工作流程,并指定多个人批准/拒绝。该文档的开头位于Released
,并在所有人都批准后移至Public Class Form1
Public ag As New ArrayList
Sub a() Handles Me.Load
ag.Add(New Integer() {1, 2})
If ag.Contains(New Integer() {1, 2}) Then
MsgBox("aaa")
End If
End Sub
End Class
。
现在我想在C#中批准/拒绝来自ASP.NET网页的任务,它包括:
获取指定人员的所有待处理任务,即如果Tom登录,则可以显示他待处理的所有任务,就像他在浏览器中打开Sharepoint一样。
如何批准/拒绝C#中的一项任务?
我是Sharepoint客户端对象模型的新手,感谢有人可以给我提供示例代码,谢谢。
更新:
这是我使用的代码,为上下文分配凭据,但在对象项中没有返回,我无法获取任务项列表。
[代码] [1]
以下是所有未清项目的图片,我没有分配任务,但我可以查看所有正在进行的项目。
Open items to be approved picture
新代码仍然无效,看起来没有为方法context.Web.Lists.GetByTitle(“Tasks”)返回任何内容;
[快速观察对象项目] [1]
您能告诉我如何查看列表名称吗?我试图更改为WBXmlList,它返回值但无法读取,也没有键'AssignedTo'
答案 0 :(得分:1)
对于您需要的场景,正确的CAML查询和任务批准代码。
为用户完成未完成的任务:
string url = "http://sharepointsite/";
var context = new ClientContext(url);
var query = @"
<View>
<Query>
<Where>
<And>
<Eq>
<FieldRef Name='Completed' />
<Value Type='Boolean'>0</Value>
</Eq>
<Eq>
<FieldRef Name='AssignedTo' LookupId='True'/>
<Value Type='Lookup'>
<UserID/>
</Value>
</Eq>
</And>
</Where>
</Query>
</View>";
var camlQuery = new CamlQuery() { ViewXml = query };
var list = context.Web.Lists.GetByTitle("Tasks");
var items = list.GetItems(camlQuery);
context.Load(items);
context.ExecuteQuery();
批准/拒绝任务:
string outcome = "Approved"; // "Rejected"
var task = GetTask(id); // to implement
task["Completed"] = true;
task["PercentComplete"] = 1.0f;
task["Status"] = "Completed";
task["WorkflowOutcome"] = outcome;
task["FormData"] = outcome;
完成所有任务:
string url = "http://sharepointsite/";
var context = new ClientContext(url);
var camlQuery = CamlQuery.CreateAllFoldersQuery();
var list = context.Web.Lists.GetByTitle("Tasks");
var items = list.GetItems(camlQuery);
context.Load(items);
context.ExecuteQuery();