工作流编程循序渐进(5:状态机工作流)

一、状态机工作流简介

状态机工作流由一组状态组成。一个状态被指示为初始状态。每个状态都可以接收一组特定事件。视事件而定,可以转换到另一个状态。状态机工作流可以有最终状态。当转换到最终状态时,工作流将完成。

[一]状态机设计器视图

状态机设计器是一种自由形式的设计器,这意味着可以在设计图面上自由移动活动。

状态机设计器有两个视图:
(1)“状态”视图

(2)“事件驱动”视图

状态视图显示状态活动和可包含在状态活动内的事件驱动的活动。在此视图中,从一个状态到另一个状态的转换是由直线表示的,这些直线从一个状态中的事件驱动活动延伸到另一个状态。

也可以通过自己绘制直线来创建一个状态活动到另一个状态活动的转换。若要绘制转换,请你选择事件驱动的活动,然后选择活动上的某个手柄并拖动该手柄。此操作将绘制直线。此直线随后将连接到目标状态,指示状态之间的转换。如下图所示:


拖动上图状态活动内部的事件驱动活动的手柄,拖动到下面的状态活动上即可,得到如下图所示的结果:


若要访问事件驱动的视图,请双击事件驱动的活动。出现的设计器与顺序工作流设计器很像。在设计器的顶部,导航栏显示直到所显示事件驱动活动为止的活动层次结构。可以通过单击显示的层次结构中的任意元素导航回状态视图。如果已在状态视图中绘制了从一个状态到另一个状态的转换,并且正在显示该活动的事件驱动视图,则会为您将一个已设置状态活动添加到事件驱动的活动。如果更改已设置状态活动的属性,它将反映到状态视图中。

[二]状态机工作流活动

下表描述了状态机工作流设计器中使用的关键活动。

工具箱名称 活动 说明
State StateActivity 表示状态机中的一个状态;可能包含其他 StateActivity 活动。有关更多信息,请参见 使用 StateActivity 活动(可能为英文网页)。
SetState SetStateActivity 指定到新状态的转换。有关更多信息,请参见 使用 SetStateActivity 活动(可能为英文网页)。
StateInitialization StateInitializationActivity 在进入某个状态时执行;可能包含其他活动。有关更多信息,请参见 使用 StateInitialization 活动(可能为英文网页)。
StateFinalization StateFinalizationActivity 在离开 StateActivity 活动时执行包含的活动。有关更多信息,请参见 使用 StateFinalizationActivity 活动(可能为英文网页)。
EventDriven EventDrivenActivity 用于依赖于外部事件开始执行的状态。EventDrivenActivity 活动必须具有实现 IEventActivity 接口作为第一个子活动的活动。有关更多信息,请参见 使用 EventDrivenActivity 活动(可能为英文网页)。
时间: 2024-08-02 09:53:25

工作流编程循序渐进(5:状态机工作流)的相关文章

工作流编程循序渐进(4:InvokeWorkflowActivity活动)

一.简介 使用InvokeWorkflowActivity 活动可以从一个工作流中异步方式启动另一个工作流. 在已启动的工作流开始执行且工作流分支中的下一个活动执行之前,InvokeWorkflowActivity 活动即告完成. 注意: * WF不支持递归工作流.如果工作流A能够启动工作流B,则工作流B既不能直接启动工作流A,也不能启动任何直接或间接调用工作流A的工作流. * InvokeWorkflowActivity活动要求工作流运行时使用当前附加到该运行时的计划程序服务创建新工作流. *

工作流编程循序渐进(3:While活动)

一.引言本文中,我们来学习另一个简单活动--While活动.While活动将会持续循环的执行,直至指定判断为假. 下面,我们来构建一个简单的示例.本示例的目的是,想主要使用While活动实现显示一个九九乘法表. 二.创建控制台顺序工作流示例程序框架 请遵循如下步骤创建一个控制台顺序工作流示例程序: 1.启动VS2008,单击菜单"文件"|"新建"|"项目",创建一个名字为WhileActivity的控制台顺序工作流示例程序. 2.之后,系统自动打

工作流编程循序渐进(2:IfElseActivity活动)

一.引言本文中,我们来学习另一个简单活动--IfElseActivity.关于此活动,首先需要说明一下: 借助于IfElseActivity活动,你可以创建工作流中的分支结构,每一个分支对应于一个IfElseBranehActivity分支. IfElseActivitv活动可以有条件地选择执行多个IfElseBranchActivity分支中的一个.也就是说,对每个IfElseBranchActivity活动的执行,都必须被一个条件所激发. 对于IfElseBranchActivity活动的执

工作流编程循序渐进(1:代码活动与时间延迟活动)

创建控制台顺序工作流示例程序框架 请遵循如下步骤创建一个控制台顺序工作流示例程序: 1.启动VS2008,单击菜单"文件"|"新建"|"项目",创建一个名字为CodeAndDelay的控制台顺序工作流示例程序,见下图. 2.之后,系统自动打开工作流设计器界面,如图所示. 3.从工具箱中依次拖动Code,Delay,Code三个活动到图中右侧的汉字提示处,得到如图所示的情形. 此时,图中的三个活动相关参数都没有经过设置,下面将设置有关参数.

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

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

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

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

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

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

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

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

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

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