SharePoint状态机工作流解决方案(二):SharePoint中的WF状态机

在前文中我们提到 SharePoint 是在 WF 工作流引擎之上,封装了事件驱动接口的一个工作流平台; SharePoint 在 WF 上扩充了很多 Activity,其中和 WF 密切相关的有三个常用 Activity是: OnWorkflowActivated,CreateTask,OnTaskChanged。

一个简单的 SharePoint 顺序流。

OnWorkflowActivated:响应流程启动的事件。

CreateTask:生成 SharePoint 的任务。

OnTaskChanged:响应任务被改变的事件。

在一个流程中只能有一个 OnWorkflowActivated ;可以有任意数量的 CreateTask 和 OnTaskChanged ,但必须成对;

很多 SharePoint 工作流解决方案,在顺序流模式下,将 CreateTask 和 OnTaskChanged 组成一个自 定义的Activity,然后利用 ReplicatorActivity 的自动复制功能,使之支持多人同时审批。这种方式流 程很简洁,但顺序流不支持回退,遇到需要回退的情况,只能通过 WhileActivity 模拟,流程又会变得 很复杂。

一个简单的 SharePoint 状态机

流程包含了三个状态启动、审批和完成;再添加其他状态就可以实现状态之间的回退。

“响应启动事件”中包括了 OnWorkflowActivated 和 SetStateActivity

“添加审批人”中包括了 CreateTask

“响应审批事件”中包括了 OnTaskChanged 和 SetStateActivity

WF 的每个 StateActivity 只能包含一个 StateInitializationActivity,用于添加审批人和实现初 始化的业务逻辑。可以包含多个 EventDrivenActivity,用于同时响应多个审批事件,和实现审批后的业 务逻辑;EventDrivenActivity 的第一个控件必须是 HandleExternalEventActivity (OnTaskChanged的 基类)。

从上图中我们看到,在状态机下 CreateTask 和 OnTaskChanged 仍然是必须成对的,但他们的位置分 开了,CreateTask 处于 StateInitalizationActivity 中,OnTaskChanged 处于 EventDrivenActivity 中。

时间: 2024-11-02 01:25:29

SharePoint状态机工作流解决方案(二):SharePoint中的WF状态机的相关文章

SharePoint 2010工作流解决方案之向工作流中添加应用程序页

向工作流中添加应用程序页 修改工作流代码 首先,向工作流中添加一行代码,以将"Outcome"(结果)列的值设置为零报销单上显示的金额. 以后会在报销单汇总计算中用到此值. 设置工作流中的"Outcome"(结果)列的值 1.将在SharePoint 2010 工作流解决方案:创建带有关联窗体和启动窗体的工作流 主题中完成的项目加载到 Visual Studio. 2.打开 Workflow1.cs 代码 3.将以下代码添加到 createTask1_MethodI

SharePoint 2010工作流解决方案简介

目前很多人都在利用sharepoint 在做工作流, sharepoint 在07的时代只有两种方式开发工作流,一种是利用SharePoint designer做无代码开发的工作流, 另外一种是利用vs开发代码工作流. 这两种工作流开发方式,对于没有wf开发经验的来说,推荐使用designer 开发工作流. 在SharePoint 2010中加入了用visio 图形化制作工作流,个人感觉没啥大用.完全是浪费时间. SharePoint 的工作流引擎使用windows workflow found

SharePoint状态机工作流解决方案(一):为什么要用状态机

以前一直是作 Windows Workflow Foundation 的工作流平台,对 WF 比较熟悉,开发的工作流平台满 足了公司实施的各种项目的工作流应用的需求. 最近作了一个 SharePoint 文档库项目,里面的审批流程,涉及到 SharePoint 工作流:一直都听说 SharePoint 下没有成熟的工作流解决方案,但接触了以后发现,SharePoint 是一个非常好的工作流平台 :虽然在实际应用中还有一些设计和技术上的问题需要解决,可这些问题解决以后,SharePoint 工作流

SharePoint状态机工作流解决方案(三)

内置缺省流程逻辑的SharePoint状态机 在前文中我们提到,SharePoint 的任务封装机制决定了它的状态机应用存在两个问题,一个是多人审 批时,需要为每个审批人都添加一个EventDrivenActivity:另一个是审批人数在设计期就必须确定. 这两个问题有没有办法解决呢?幸亏 WF 提供了流程动态修改的功能,我们可以从 StateActivity 继 承一个自己的 State 活动,在状态执行前根据审批人的数量,在状态中动态添加 CreateTask. EventDrivenAct

SharePoint 2010工作流解决方案之将SharePoint Designer可重用工作流导入VS

将 SharePoint Designer 可重用工作流导入 Visual Studio 在 SharePoint Designer 中创建的工作流(即,声明性工作流)由 XML 语句组成,而非由代码组成. SharePoint Designer 2010 引入了可重用工作流,它们是可由 SharePoint 站点中的不同列表使用的可移植的声明性工作流. 在 Visual Studio 2010 中创建的工作流(如顺序工作流和状态机工作流)称为"代码工作流". 代码工作流由 XML 文

SharePoint 2010工作流解决方案之创建自定义网站工作流活动

创建自定义网站工作流活动 首先,创建一个用来包含和测试自定义工作流活动的项目. 创建网站工作流自定义活动项目 1.通过指向"文件"菜单上的"新建"并单击"新建项目",显示"新建项目"对话框. 2.展开"Visual C#"下的"SharePoint"节点,然后单击"2010". 3.在"模板"窗格中选择"顺序工作流". 4.在&

SharePoint 2013状态机工作流:日常报销示例

简单介绍下状态机工作流,状态机工作流提供了一系列的状态.工作流从初始状态开始,到终止状态结束.两个状态之间定义行为进行过渡.通常情况下,状态机工作流对事件作出反应,事件的发生将会使状态发生改变. 1.新建项目,选择SharePoint解决方案,创建空项目: 2.选择调试站点,部署为场解决方案,如下图: 3.添加新项,选择"Office/SharePoint"下面的"状态机工作流(仅场解决方案)": 4.选择列表工作流,修改工作流名称为"日常报销"

SharePoint 2013状态机工作流的扩展自定义状态

当我们使用SharePoint 2013的状态机工作流时,发现一个非常不爽的事情,就是SharePoint 所有的工作流状态,都是固定的那些,没办法显示我们自定义的状态,后来经过Google发现,原来这个状态是可以自定义的. 自定义状态步骤 1.修改xml添加MetaData下面的扩展项: <ExtendedStatusColumnValues>  <StatusColumnValue>测试状态1</StatusColumnValue>  <StatusColum

创建、部署和卸载SharePoint工作流解决方案包(WSP)

在Visual Studio 2005时代,Visual Studio的插件提供了一个批处理文件(*.bat)来部署 SharePoint工作流:在Visual Studio 2008时代,Visual Studio支持直接部署SharePoint工作流.虽然 使用Visual Studio 2008来设计.开发以及部署SharePoint工作流非常方便,但如果想要把开发好的工作 流部署到其他服务器,就会发现,Visual Studio 2008并没有将工作流生成为一个WSP文件,也没有提供 批