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. Deep learning:三十四(用NN实现数据的降维)

    数据降维的重要性就不必说了,而用NN(神经网络)来对数据进行大量的降维是从2006开始的,这起源于2006年science上的一篇文章:reducing the dimensionality of d ...

  2. uvalive 2797 Monster Trap

    题意:给定一些线段障碍,判断怪物能不能逃离到无穷远处. 思路:从(0,0)点能否到无穷远处.用BFS搜索.那满足什么样的点符合要求,能加入到图中呢? 遍历每个点,显然一开始已经在某些线段上的点要删去. ...

  3. 天天动听MP3解码器性能提升50%

    天天动听今日升级提醒,发现有一句 “使用新的MP3解码器,性能提升50%”,太惊讶了. 之前版本的MP3解码器使用libmpg123,效果已经是MP3解码器中非常不错的了. 50%的提升,应该不仅仅是 ...

  4. Aisino 金税盘 pass throught

  5. 第十一章、认识与学习 BASH 数据流重导向

    数据流重导向就是将某个命令运行后应该要出现在屏幕上的数据, 给它导向到其他的地方,例如文件或者是装置 (例如打印机之类的)! 什么是数据流重导向 命令运行过程如下: 图 5.1.1.命令运行过程的数据 ...

  6. hdoj 1008 Elevator

    Elevator Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  7. [Objective-c 基础 - 2.4] 多态

    A.对象的多种形态 1.父类指针指向子类对象 2.调用方法的时候,会动态监测真实地对象的方法 3.没有继承,就没有多态 4.好处:用一个父类指针可以指向不同的子类对象 5.强制转换类型之后就能使用子类 ...

  8. (二) win8+XAML Binding(数据绑定)

    第一次接触Binding是用到listview的时候,ListView中如果要动态显示一些内容,我一开始想的就是动态生成一个item,然后插入... 其实用Binding就不用在代码中涉及listvi ...

  9. iOS几个效果动画-------------------(实例详讲)qq粘性效果

    这几天做了一些简单iOS的效果图,感觉苹果官方已经帮我们做了很多了,我们只是站在巨人的肩膀上编程,这些也没什么难的,最难的也就是用到了初中的三角函数,先让大家看看这几个动画吧.先列这几个把,由上而下分 ...

  10. MyBatis如何防止SQL注入

    转自:http://www.myexception.cn/sql/1938757.html SQL注入是一种代码注入技术,用于攻击数据驱动的应用,恶意的SQL语句被插入到执行的实体字段中(例如,为了转 ...