关于工作流的模式

摘要:
它们仍然可以接收外部事件或启动并行任务。在这种情况下,可能存在状态机模式的表示。最好选择状态机模式,因为流模式本质上对工作流的路径进行建模,并将路径信息编码到模型中。例如,休假工作流中有两种参与:申请人和审批人在申请人眼中,他参与的工作流在审批人眼中是[流程模式],而他参与的工作流程是[状态机模式]。这些是我开发各种工作流的经验。

昨天发了几篇文章,被一些朋友说写的不认真,今天又写了几篇,请各位指点

另承上,今晚随手写一篇[关于工作流的模式]的文章,没有什么技术性,无法归到技术栏里,就当随笔发吧
-------------------------

关于工作流的模式

流模式(Sequential)
1.适合一个比效机械化的流程
2.在这种流程中,参与者处于一种被动的局面,他必须沿设定的路线一步一步完成。
例1:在MIS系统中,一个操作机器的工作流:
(开使->关1闸 –> 关2闸 -> 修理 -> 开2闸-> 开1闸 -> 结束)
在这个工作流中,需要严格按流程操作。而且在[修理]结点处可能还要调用一个修理某类设备的工作流。

例2:比如一个购物的工作流:
(开使->浏览->选择->缴费->取货 -> 结束)
在该例中,流程序顺的严格性就显得不是很重要,比如[缴费]与[取货]结点谁先谁后就不是很重要,只要[缴费]与[取货]都完成了就可以结正常[结束]该流程。
对于像这样的业务需求,就可以使用状态机模式

流模式的执行并非完全是顺序的。它们仍然可以接收外部事件或者启动并行任务,在这种情况下,可能会有状态机模式的表现形式。但就其设计与维护方式来说仍是 流模式

状态机模式(State Machine )
在状态机模式下,参与者的自主性比效大,工作流更多的是一个提醒的作用
例:一个审批流程:有六个部门批准才能通过,这六个部门的审批行为是独立进行的,不受其他部门结果的影响,可以使用状态机模式,配合规则实现
A.六个部门审批行为是并行模式
B.规则可以使用:全票通过,一票通过,简单多数,绝对多数,额定通过,等
另外状态可以由一种进入到另一种,如上例出现平票状态后,将进入联合听证流程

如何选择工作流模式
一个简单的判断标准
影响工作流程的一些重要的选择是否发生在工作流外部?是否由用户进行控制?
如果是,那就不适合采用流模式。而最好选用状态机模式

因为流模式本质上是对工作流的路径建模,将路径信息都编码到了模型之中。但是在某些时候,业务并不关心路径,而只关心结果,并且不关心结果是如何实现的。
这时要用流模式,就需要画出许多复杂的路径流程,但是这些复杂的路径却并非我们所关注的问题。而最后往往是维护路径的付出远远大于维护业务模块。

实际设计中的模式:
在实际设计中,模式的应用并不是泾渭分明的。同一工作流,在不同参与者的眼中就有不同的模式。
如一个请假的工作流,参与都有两种:申请人、审批人
在申请人眼里,他所参与的工作流是[流模式]
在审批人眼里,他所参与的工作流是[状态机模式]

以上是本人在开发各类工作流中的一些心得。在WWF中可能也会有一定的适用性

免责声明:文章转载自《关于工作流的模式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇配置suricataSpring 中使用了哪些设计模式?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

状态机设计——从简单的按键消抖开始

  目前笔者正在接受明德扬FPGA网上培训班的培训,讲的内容非常适合新手,且以练习和互动答疑的教学模式让我学到了很多东西。由于是根据自身时间安排进度的,所以战线拉的比较长,发现做些设计总结非常重要,可以帮助自己理清思路,同时也能得到很好的复习。   之前一直在做altera FPGA的相关学习,对xilinx还不是很熟悉,借着这个契机,将比较基础常用的设计...

springcloud Alibaba 微服务 flowable 工作流 自定义表单 vue.js前后分离

功能模块设计方案 1.代码生成器: [正反双向](单表、主表、明细表、树形表,快速开发利器)freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面、建表sql脚本、处理类、service等完整模块2.多数据源:(支持同时连接无数个数据库,可以不同的模块连接不同数的据库)支持N个数据源3.阿里数据库连接池druid,安全权限框架 shiro...

IDEA创建Activiti工作流开发

一、 安装Activiti插件 1. 首先打开FIle的setting功能,搜索Plugins:    2. 输入actiBPM,然后点击搜索: 3. 点击安装、应用: 安装好之后点击apply(应用),之后重启idea 二、 创建Activiti工作流并导出流程图图片 1. 重启IDEA之后,点击File文件中的New下的BpmnFile:...

ip黑白名单防火墙frdev的原理与实现

汤之盘铭曰 苟日新 日日新 又日新 康诰曰 作新民 诗曰 周虽旧邦 其命维新 是故 君子无所不用其极                           ——礼记·大学 在上一篇文章《DDoS攻防战 (二) :CC攻击工具实现与防御理论》中,笔者阐述了一个防御状态机,它可用来抵御来自应用层的DDoS攻击,但是该状态机依赖一个能应对大量条目快速增删的ip黑白...

面面俱到:SQL SERVER 2008主数据管理

SQLSERVER 2008R2中提供了主数据服务。很多人对主数据服务比较陌生。我们先介绍主数据服务的应用范畴。 主数据服务是当企业的规模达到一定的规模后,因企业信息化战略发展的需要。需要将企业内信息进行统一规划、形成制定统一的标准。建立一套统一的公共数据标准及维护体系、一个统一的公共数据平台。使其各子系统均按照统一的标准使用公共数据。使企业在信息化形成一...

Java 三大主流 工作流 学习

之前听同学说,他们在用工作流,好奇,搜索了一下,查看和搜集了一番,摘抄入下:(来源于:gzRiven)  三大主流工作流引擎:Shark,osworkflow,jbpm!   Shark的靠山是Enhydra。Enhydra做过什么呢?多了!从j2ee应用服务器,到o/r mapping工具,到这个工作流引擎等等。   为什么Shark的持久层采用DODS...