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,去获取工作流历史列表项。历史列表存储的描述列将被返回(签核意见之类的就放在这列表中)。

【转】SharePoint工作流中常用的方法的更多相关文章

  1. org.apache.commons.lang.StringUtils中常用的方法

    org.apache.commons.lang.StringUtils中常用的方法,这里主要列举String中没有,且比较有用的方法: 1. 检查字符串是否为空: static boolean isB ...

  2. String对象中常用的方法

    String对象中常用的方法   1.charCodeAt方法返回一个整数,代表指定位置字符的Unicode编码.strObj.charCodeAt(index)说明:index将被处理字符的从零开始 ...

  3. 项目中常用js方法整理common.js

    抽空把项目中常用js方法整理成了common.js,都是网上搜集而来的,大家一起分享吧. var h = {}; h.get = function (url, data, ok, error) { $ ...

  4. String:(字符串)中常用的方法

    package stringyiwen; //字符串中常用的方法public class StringTest03 { public static void main(String[] args) { ...

  5. C语言中常用计时方法总结

    转自:http://blog.csdn.net/fz_ywj/article/details/8109368 C语言中常用计时方法总结 1. time() 头文件:time.h 函数原型:time_t ...

  6. 大数据学习day13------第三阶段----scala01-----函数式编程。scala以及IDEA的安装,变量的定义,条件表达式,for循环(守卫模式,推导式,可变参数以及三种遍历方式),方法定义,数组以及集合(可变和非可变),数组中常用的方法

    具体见第三阶段scala-day01中的文档(scala编程基础---基础语法)  1. 函数式编程(https://www.cnblogs.com/wchukai/p/5651185.html): ...

  7. 【java】开发中常用字符串方法

    java字符串的功能可以说非常强大, 它的每一种方法也都很有用. java字符串中常用的有两种字符串类, 分别是String类和StringBuffer类. Sting类 String类的对象是不可变 ...

  8. day2 列表中常用的方法

    列表中有很多方法,下面来看看常用的方法,我们知道,字符串是以字符列表形式存储的.因此上面学习的字符串中的很多方法在列表中也有.     1.extend() extend()列表的扩展,把两个列表进行 ...

  9. String类中常用的方法

    @Test public void demo(){ // 以下为String中的常用的方法及注释, 最常用的注释前有**标注 String s = "abcdefg123456"; ...

随机推荐

  1. 进程隐藏与进程保护(SSDT Hook 实现)(一)

    读了这篇文章终于明白大致怎么回事了 文章目录:                   1. 引子 – Hook 技术: 2. SSDT 简介: 3. 应用层调用 Win32 API 的完整执行流程: 4 ...

  2. North America Qualifier (2015)

    https://icpc.baylor.edu/regionals/finder/north-america-qualifier-2015 一个人打.... B 概率问题公式见代码 #include ...

  3. c++ 观察者模式

    观察者模式之比喻: 有家公司,老板经常不按时上班,于是员工就可以在老板来之前的那段时间娱乐一下,但是又过的是心惊胆战,怕 老板随时出现:这是观察者模式就起作用了:公司有个前台,她总是第一个看到老板进门 ...

  4. HW7.1

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  5. HW6.27

    import java.util.Scanner; import java.util.Arrays; public class Solution { public static void main(S ...

  6. 设置Windows 远程协助与远程桌面

    家庭局域网组建完成后,即可通过远程协助解决各种问题,或联机玩游戏等. 使用Windows 7\8\10 远程协助与远程桌面 Windows 8系统中自带了远程协助功能,家庭用户只需要做简单的设置,就可 ...

  7. RecyclerView设置verticalSapcing等

    RecyclerView没有像GridView那样有提供verticalSpacing属性,上StackOverflow找到了一种替代方法,代码如下 public class SpacesItemDe ...

  8. hdu 2715 Herd Sums

    Herd Sums Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  9. 转载 asp.net的Request.ServerVariables参数说明

    转载原地址: http://blog.csdn.net/vincent_void/article/details/7739338 当讨论Request对象内容时,要研究的集合之一就是ServerVar ...

  10. 7个改变世界的Java项目

    Java的开源生态系统是强大而健康的,这是我们(Oreilly)创建OSCON Java(Open Source Convention Java)的主要原因之一.在过去10年中,一些项目已经被广泛接受 ...