• 【转】SharePoint工作流中常用的方法


    SharePoint中使用工作流对象模型。

    SharePoint工作流对象模型在Microsoft.SharePoint.Workflow命名空间。你可以利用此对象模型对你的工作流进行编程。你可以启动和停止一个工作流,检查一个工作里的状态或者历史,或者检索一个任务列表关联的工作流。本节将介绍工作流中对象模型的常见用途。参照完成的SDK在www.msdn.microsoft.com.命名空间有很多类,但是按照以下前两名: 

     ■ SPWorkflow—此类描述一个工作流在站点或者项上的实例。它能被使用去看见谁开始工作流(Author属性)和获取工作流的状态.

    ■ SPWorkflowManager—此类有许多的helper方法的类,你可以在工作流上使用。最有用的方法包含在以下: 

    – GetItemActiveWorkflows  

    – GetItemWorkflows

    – GetWorkflowTasks

    – RemoveWorkflowFromListItem

    – StartWorkflow 

    虽然这些类很有用,他们协同工作在一个host在同一个命名空间的其他类中。表12.5显示类的列表和他们的SDK描述。 

     表12.5

    下面的代码片段显示五种常见的例子。

    第一个片段显示编程的方式启动工作流:
    /*************************************************/
    foreach (SPWorkflowAssociation association in
    splistitem.ParentList.WorkflowAssociations)
    {
    if (association.AllowManual)
    {
    splistitem.Web.Site.WorkflowManager.StartWorkflow(
    splistitem, association, association.AssociationData, true);
    }
     
    这个代码片段首先获取所有列表中关联的工作流。这可能是比较简单的一个内容类型或者站点为站点工作流。SPWorkflowAssociated对象包含属性例如工作流启动选项。接下来,代码块检查是否允许授通过用户界面手工启动。如果是这样,通过工作流管理的Startworkflow方法。 
    第二个片段显示如何停止工作流:
    SPWorkflow workflow = splistitem.Workflows[1];
    web.Site.WorkflowManager.RemoveWorkflowFromListItem(workflow);
     
    停止工作流很简单。使用工作流管理并调用RemoveWorkflowFormListItem方法并传递你要终止的工作流。工作流再次帮助去检索列表上活动的工作流,像下面的片段: 
     SPWorkflowCollection runningWFs =
    web.Site.WorkflowManager.GetItemActiveWorkflows(splistitem);
    Console.WriteLine("Names of Running Workflows:");
    foreach (SPWorkflow workflow in runningWFs)
    {
          Console.WriteLine(workflow.ParentAssociation.Name);
    }
     
     工作流管理者的GetItemActiveWorkflows方法检索所有运行在项上的工作流集合。在项上的工作流包含所有的工作流,不管他们运行与否。有些可能已经完成或者出现故障。你可以选择使用GetItemWorkflows并传递给SPWorkflowFilter参数通过指定SPWorkflowState对象。通过使用过滤器和State,你可以只检索孤立的工作流。 激活工作流,你可能想获取工作流任务。下面的代码片段显示如何做到这点:
     SPWorkflow workflow = splistitem.Workflows[1];
    Console.WriteLine("Titles of Workflow's Tasks:");
    foreach (SPWorkflowTask task in workflow.Tasks)
    {
         Console.WriteLine(task["Title"].ToString());
    }
     
     每个工作流的任务属性是一个SPWorkflowTaskCollection对象。你可以编译通过每个工作流任务去检索所有的任务。这可以选择通过工作流管理的GetWorkflowTasks方法,你可以传递进SPWorkflowFileter参数去过滤任务。对应的任务是工作流历史列表。下面的片段显示如何以编程的方法检索工作流历史:
    SPWorkflow workflow = splistitem.Workflows[1];
    SPList historyList = workflow.HistoryList;
    SPQuery query = new SPQuery();
    query.Query =
    "<OrderBy><FieldRef Name="ID"/></OrderBy>" +
    "<Where><Eq><FieldRef Name="WorkflowInstance"/>" +
    "<Value Type="Text">{"+ workflow.InstanceId.ToString() +"}</Value>" +
    "</Eq></Where>";
    SPListItemCollection historyItems = historyList.GetItems(query);
    foreach (SPListItem historyItem in historyItems)
    {
    Console.WriteLine(historyItem["Description"].ToString());
    }
     
    每个工作流有一个历史列表属性指向SPList对象。这个列表可以查询历史项目。查询通过SPQuery对象或者LINQ to SharePoint 完成。
    输入CAML查询,并通过工作流实例ID,去获取工作流历史列表项。历史列表存储的描述列将被返回(签核意见之类的就放在这列表中)。
  • 相关阅读:
    SpringMvc 大概流程分析
    HandlerMethodArgumentResolver 参数解析器
    linux 技巧:使用 screen 管理你的远程会话
    CentOS Linux解决Device eth0 does not seem to be present
    php连接oracle oracle开启扩展
    关于linux一些备份、还原,压缩,归档的命令
    Sphinx学习之sphinx的安装篇
    linux wget 命令用法详解(附实例说明)
    Linux的bg和fg命令
    linux中ctrl+z和ctrl+c的区别
  • 原文地址:https://www.cnblogs.com/52life/p/3603089.html
Copyright © 2020-2023  润新知