状态机工作流

状态机工作流

状态机工作流通常用于模拟不能被预测人类行为时的事件流的一种替代方案,例如,在一个审批流程中,当事件驱动流程执行的过程,通常作为外部事件和导向转换, 通常作为外部事件和引导其他可能的状态之间的转换。状态机工作流的必须包括initial状态和 final 状态,用以表示该进程的启动和完成状态。这是一个灵活的逻辑流程,可以在工作流的状态间来回循环,因为外部事件驱动一个状态机工作流,他们在本质上是被动的。

这里面包含几个比较重要的基础元素

State Entry(进入状态),State Exit(离开状态),Transitions(过渡),Trigger(触发器),Condition(条件),Action(行为),Final State(最终状态)

Transitions:状态机使用Transitions用于使从一个状态切换到另一个。状态的逻辑流程可被转换,Transitions只能流的一个方向。所以,如果状态从一个状态到另一个的变化然后再返回到原来的状态,必须经过两个Transitions

Trigger:  可以通过用Trigger执行自定义的代码 bookmark activity ,一般做为bookmark activity 容器。

Condition:用于判断一个bookmark activity 活动被激活后的状态转换的成功与否的表达式

 

总结

这是一个在NET 4.0 中实现的功能,FlowChar完全可以实现StateMachine 的所有业务逻辑,将FlowChar的结构展现成StateMachine ,通过拦截Bookmark实现[进入状态],[结束状态]

时间: 2025-01-04 22:59:15

状态机工作流的相关文章

状态机工作流<WWF第七篇>

状态机是另外一种常见的工作流类型.它是以状态的变迁为驱动而进行业务流转的,是一定需要人为干预的,而不像顺序类型工作流那样可以按照事先设计好的业务流程一步一步依次执行下去. 一.状态机工作流范例 State活动有三种状态类型: 起始状态: 业务逻辑过程状态: 终止状态: 在一个状态机工作流中起始状态和终止状态只能有一个.状态机工作流是从起始状态开始执行,在运行过程中通过业务员逻辑状态的变迁来进行工作流的流转,最终由终止状态标记工作流的结束.因此在状态机工作流设计界面上只能添加"State"

微软工作流WWF入门<第一篇>

工作流是什么东西?暂时还不是很弄得清除. 工作流是用来解决什么问题的?暂时只是形成了一个很模糊的概念,还没办法用语言描述出来. 一.入门范例 以VS2008为例,先来创建一个WWF程序. 在工具箱中,拖一个Code到"活动"中 打开codeActivity1的属性面板,在ExecuteCode里双击,然后进入,键入如下代码: namespace WorkflowConsoleApplication1 { public sealed partial class Workflow1 : S

第七篇 Integration Services:中级工作流管理

本篇文章是Integration Services系列的第七篇,详细内容请参考原文. 简介在上一篇文章,我们创建了一个新的SSIS包,学习了SSIS中的脚本任务和优先约束,并检查包的MaxConcurrentExecutables属性.这一篇我们将检查.演示并测试优先约束赋值为"成功"."完成"."失败"时对工作流的影响.约束赋值如果你按照前一篇的步骤操作过,打开My_First_SSIS_Project解决方案下的Precedence.dtsx

第七篇 SQL Server代理作业活动监视器

本篇文章是SQL Server代理系列的第七篇,详细内容请参考原文 在这系列的前几篇,你创建并配置SQL Server代理作业.每个作业有一个或多个步骤,可能包含大量的工作流.在这篇文章中,将查看作业活动监视器.作业活动监视器是系统管理工具来运行工作,查看作业历史记录,并启用/禁用作业.本文同样会回顾一些作业活动监视器调用的存储过程,你可以直接调用过程做你自己的自定义任务监控.SQL Server代理作业活动监视器SQL Server代理作业活动监视器的主要机制是监视作业运行,以及查看代理已运行

关于状态机工作流的编程方法

还没想好怎么写,先起了个古怪的名字.好吧,这篇文章纯属拔草之作,只讲一种大概的解决方案. 不过,我们大概得先解决掉两个概念:一个是状态机,一个是工作流. 什么是状态机?大概来说,就是我这里有一堆的状态,我在进行一项工作的时候,有一系列的状态:我要从一个状态转移到另一个状态.举个最简单的栗子:比如一个灯泡,有“开着”和“关着”两种状态.我对这个灯泡的操作是扳动开关,灯“开着”的时候,我按关灯,就到“关着”的状态:如果我再按开灯,就到了“开着”的状态.用状态转移图来表示大概是这样的: 什么是工作流?

SaltStack 入门到精通 - 第七篇: Targeting

什么是Targeting? Targeting minions 是指那些minion会作为运行命令或是执行状态的目标.这些目标可以是一个主机名,系统信息,定义的分组,甚至是自定义的绑定的对象. 例如命令  salt web1 apache.signal restart 可以重启ID 为web1的minion的apache.当然也可以在top文件中使用web1来作为目标匹配的内容: base:   'web1':     - webserver Targing 有哪些匹配方式? Minion Id

Python之路【第七篇】:线程、进程和协程

Python之路[第七篇]:线程.进程和协程 Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/env python # -*- coding:utf-8 -*- import threading import time   def show(arg):     time.sleep(1)     print 'thread'+str(arg)   for i in

用仿ActionScript的语法来编写html5——第七篇,自定义按钮

第七篇,自定义按钮 这次弄个简单点的,自定义按钮.其实,有了前面所定义的LSprite,LBitmap等类,定义按钮就很方便了.下面是添加按钮的代码, function gameInit(event){ backLayer = new LSprite(); addChild(backLayer); btn01 = new LButton(new LBitmap(new LBitmapData(imglist["replay_button_up"])),new LBitmap(new L

第七篇:创建一个SOUI的Hello World

从0开始一个SOUI项目 1.环境配置 SOUI项目本质是一个基于Win32窗口的应用程序.因此首先我们可以从Win32窗口应用程序向导创建一个简单的Win32项目. 并在第3页选择“Window应用程序” 选择“完成”后生成一个Win32应用程序骨架. 项目的文件结构如下图: 要使用SOUI开发程序程序,首先当然是要找到从SVN获取的SOUI项目代码.假定SOUI项目保存在%SOUIPATH%这个环境变量指向的目录(安装了SOUI向导后会自动创建这个环境变量). 我们需要在VS的include