Sharepoint 2010 COM - 如何批准C#中的任务?

时间:2017-07-31 15:40:23

标签: c# asp.net sharepoint

我们在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网页的任务,它包括:

  1. 获取指定人员的所有待处理任务,即如果Tom登录,则可以显示他待处理的所有任务,就像他在浏览器中打开Sharepoint一样。

  2. 如何批准/拒绝C#中的一项任务?

  3. 我是Sharepoint客户端对象模型的新手,感谢有人可以给我提供示例代码,谢谢。

    更新:

    这是我使用的代码,为上下文分配凭据,但在对象项中没有返回,我无法获取任务项列表。

    [代码] [1]

    以下是所有未清项目的图片,我没有分配任务,但我可以查看所有正在进行的项目。

    Open items to be approved picture

    新代码仍然无效,看起来没有为方法context.Web.Lists.GetByTitle(“Tasks”)返回任何内容;

    [快速观察对象项目] [1]

    您能告诉我如何查看列表名称吗?我试图更改为WBXmlList,它返回值但无法读取,也没有键'AssignedTo'

    WBXmlList

1 个答案:

答案 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();