小小研究一下工作流WorkFlow

article/2025/8/14 21:23:54

修房子

在小牧老家农村,小时候总是看到村里有人在修房子。每次看到有人修房子的时候,他就会爬到房子面前的沙粒堆上去,翻找随着沙子一起被挖出来的贝壳。虽然也不知道拿来干嘛,不过总觉得收集贝壳很好玩。
小牧也喜欢看他们修房子。修房子的时候,专业的修房师傅会指导工人如何一步步修房子。第一步,首先要打地基,把地基打的牢牢的。第二步是浇筑地梁。在地基上面浇筑房子的核心骨架。第三步是盖造房子的主体结构,基本是修出了房子的框架外形了。第四步是封顶,考虑水电走向、防水等[1]。
那么,可以看到修房子是有一个标准流程的,工人们会按照流程一步步去修房子,这样才能保证房子能够修的结实可靠。

工作流

上面的例子只是简单地说明了流程。生活中处处存在各种流程,有简单的,有复杂的。比如办事流程,不仅仅需要严格遵守办事流程顺序,还需要保证办事员具有办事权限,特殊情况还需要保密、不可回退流程等。因此过程管理其实是非常重要且广泛存在的。
同样在软件领域,我们依然有很多流程。同样可举个栗子。小牧是搞云计算的,假如用户现在要准备创建一台虚拟机了,那么也存在一系列的流程,比如首先要进行权限验证,金额验证、参数验证,判断是否运行创建虚拟机;允许创建后需要进行存储资源申请、网络资源,还需要考虑物理集群等一系列问题,最后才是真正地创建虚拟机,返回给用户使用。在这个VM创建流程中,任何一步都不能出错,即使出错,每个步骤也有相应的处理方法,比如回滚或者退出报错。
在软件业务中,存在非常多复杂的流程,也叫工作流 。那么如果对于流程,每个都需要程序员去做流程控制、监控等工作,那就会造成冗余的工作。因此大佬们也做出了很多知名的流程控制框架,如JBPM和Activiti等工具。在这里呢,我们也设计一个简单我们自己的流程管理引擎,做一个小玩具。基本的设计思路参考ZStack的FlowChain结构[2],但是便于理解有一些改动。

基本介绍

图1 为小牧画的一个示意图。Task,也就是一个任务。一个流程里面多个任务,比如“修房子”对应打地基、修框架等等多个任务。而操作员,也就是具体执行流程的部分,操作员只有执行了当前手里的任务后,才会接收下一个Task。当然执行可以多线程多操作员一起执行,但是这里我们简化问题,设计为只有一个操作员,单条流水线线性执行Task。
这里写图片描述
图1 工作流示意图
从图中可以看出,这个流程中有两个重要的组成部分。

  • 任务Task,包含任务的运行信息,具体该task的运行方法
  • 传输带,用于存放需要执行的task序列
  • 操作员,运行task,根据task中的信息进行处理

因此如果我们要设计实现工作流引擎的话,首先是需要对这三个基本的组件进行设计。接下来分别介绍。

任务Task

Task为具体的一个工作步骤。要描述这个步骤,我们有几个需要考虑的点。

最基本的是需要知道这个任务要执行什么。因此我们可以定义一个run()方法。
当任务运行失败怎么办?因此我们要定义一下运行失败的处理方式,是否回滚rollback,以及rollback的具体操作。
因此我们更希望控制Task的具体操作,因此设计一个Task接口。

public interface Task{void run(Map data);   //任务的运行操作void rollback(Map data);   //任务的回滚操作
}

run函数为任务运行的具体执行流程。rollback为任务回退的时候的运行流程。有了这两个操作接口,那么操作员在拿到任务之后,就能去操作了。

操作员

操作员具体执行任务,根据任务设计好的run和rollback方法来执行。除了直接执行任务的功能外,操作员还需要从流水线上取出任务。因此操作员的描述如下:

public interface TaskOpera

http://chatgpt.dhexx.cn/article/IB6sRoFL.shtml

相关文章

微软 workflow 工作流总结

1.状态机工作流 (1)状态机工作流从state1 流转到 state2 到stateN (2) state中有执行状态和退出状态 (3) 在进入下一个步骤(state1 到 state2)前,首先会判断进入下一个状态的条件,下面我把它叫做判断模块 (4)在判断模块中,有三个生命周期:Trigger,Condition,Action (5)判断模…

WorkFlow工作流

工作流 一、什么是工作流 历史发展: 工作流的理论起源于70年代中期办公的自动化领域。90年代。工作流技术的研究与开发进一步发展。1993年8月,成立第一个工作流技术标准话的工业组织WFMC(工作流管理联盟)。现在,工作…

工作流(Workflow)基本介绍

工作流简介 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标&a…

Eclipse下配置主题颜色

对于长期做开发的哥们来说,过于明亮的背景色会导致视觉疲劳,从而致使效率各种下降、困意各种来袭。为了有效阻止这种可怕的事情发生,我们需要改变背景色! OK,这篇博客主要讲解如何设置eclipse软件的背景色:…

修改eclipse的主题颜色

很多小伙伴的eclipse都是以白色为主,看到别人的暗色的eclipse感觉很炫酷,这里就教大家一下如何改主题颜色 1.点击顶部导航栏help,找到Eclipse Marketplace 2.在弹出的Eclipse Marketplace窗口中,在search中搜索color theme&…

eclipse设置 “暗黑色” 主题

经典模式的 eclipse 都是白底黑字,比较刺眼,长时间写代码,让人感觉眼睛疲劳,所以尝试换一个暗黑色主题背景,可以有效减缓眼睛疲劳,而且暗黑色主题给人感觉就很酷炫,有木有! 1、打开…

Eclipse背景主题设置

这方面的内容是很简单,而且网上也相当多的教程。但我觉得,自己写一下,既可以加持自己写博客的心态,也给需要的人分享一下。 确认一下自己的Eclispse版本, 如果是最新版本的Eclipse Luna,可以略过第一步,如果是旧的版本需要下载一个插件,并将其放在eclipse目录下的plugi…

Eclipse在线安装color-theme主题

添加入口: Eclipse --> Help --> Install New Software --> addName: color-theme Location: http://eclipse-color-theme.github.com/update全选 NEXT 接受协议 选择 Install anyway Restart Now 重启 Window --> Preference --> General --> Appe…

为Eclipse安装主题插件(Color Theme)

由于正常eclipse界面配色是白底黑字,长时间工作容易眼睛疲劳,才想着去装这个Eclipse Color Theme 插件,安装过程中遇到了一些问题。 正常安装的话直接 Help -> marketplace -> search 框下输入 color theme 就可以搜索到目标插件&am…

如何把Eclipse修改为黑色主题

转载自:http://bbs.itheima.com/forum.php?modviewthread&tid119345&extrapage%3d1%26filter%3dtypeid%26typeid%3d390?lt3448 原帖名:如何把Eclipse修改为黑色主题?求配色方案! 因为主力问题已解决,经过修…

eclipse黑色主题黑色背景

现在本人用eclipse的版本信息:Eclipse for PHP Developers ----Version: Mars.1 Release (4.5.1),可以在菜单栏--help---about eclipse里查看 因为写代码到很晚,所以想换个黑色主题以以及黑色背景。 所以写一写这个设置。 自己先参照了别人…

(转)设置漂亮的Eclipse主题(Theme)风格

原地址:http://blog.csdn.net/zhouchangshi/article/details/37901519 童鞋们, eclipse主题太丑?想设置护眼的主题? 看看这些主题: 请移驾: Eclipse Color Themes http://www.eclipsecolorthemes.org/ 怎么…

idea安装eclipse风格主题

前言 最近开始学习使用idea,用惯了eclipse风格,IntelliJ IDEA 想换个eclipse主题,百度了一圈发现大部分教程去的下载地址都打不开,原来idea里面就可以搜索安装。。。。 一、打开idea 路径:file->setting-Plugins 二、在中间…

Eclipse主题设置

主题下载地址:http://www.eclipsecolorthemes.org/?q 这个是我自己的配置文件 , 看着舒服的童鞋也可以用,下载地址:http://download.csdn.net/download/rely_on_yourself/10137995 先展示下效果图: 设置步骤: 先将Eclipse的整个背景主题定好 将下载好的配置文件导入Ecl…

Eclipse主题插件DevStyle修改Eclipse主题

使用eclipse自带的插件下载功能,安装DevStyle插件,可轻松实现更换多种不同风格的主题。 以下是其中几款效果图 亮灰(经典款) 亮绿(护眼款) 亮粉(少女款) 深灰(熬夜…

Eclipse颜色主题(Color Theme)与缩进线(Indent Guide)插件安装教程

摘要:这篇博文主要介绍Eclipse的颜色主题插件(Color Theme)的安装教程,以及如何使用缩进线插件为编辑器中代码添加类似Visual Studio中的缩进线,以对Eclipse编辑器界面进行美化,要点如下: Colo…

Eclipse主题颜色配置

配置黑色框架 虽然以前也使用eclipse的黑色主题,但是配置起来稍微麻烦一点。 这里先声明,下面的方式适合最新版本的Eclipse Luna,旧的版本可以下载我提供的这个插件,并将其放在eclipse目录下的plugins目录下即可。 插件下载地址…

设置Eclipse背景主题

接下来一段时间,要去玩STM32了,以前很想玩玩的,由于转行做安卓开发,就不玩了,(专心做一件事。。。哈哈)。现在因为公司需要开发一套硬件设备,哈哈,我终于可以在今年年底之…

Eclipse恢复默认主题及配色;eclipse-color-theme插件安装

很多人刚开始使用Eclipse的时候,看到各种配色的主题都想尝试一下,网上下载epf文件导入修改配色; 用过一段时间之后,又想回归默认配色,可是这个时候发现回不去了;网上有删除 .setting文件夹后重启的方法&am…

Eclipse主题更换方法

 1.打开Eclipse的Help->Eclipse Marketplace 2.在Find里搜索Eclipse Color Theme,点击Install按钮 3.打开Window->Preferences->General->Appearance在Color Theme里就可以挑选自己喜欢的主题了 http://eclipsecolorthemes.org…