工作流简介及其6种常用的工作流引擎

2023-10-27

先说说四个非PetriNet调度算法的开源引擎... 4

OBE的引擎调度机制... 4

Shark的引擎调度机制... 5

OSWorkflow的引擎执行机制... 6

JBpm的引擎执行机制... 6

再说说两个PetriNet调度算法的开源引擎... 9

YAWL的引擎调度机制... 10

Bossa的引擎调度机制(标准的PN机)... 12

工作流程的定义

 

工作流就是:

“在一个工作群组中,为了达成某一个共同目的而需要多人协力以循序或平行工作的形式来共同完成的任务”

 

关于工作流的几个名词解释:

 

任务

泛指各种事务上所必需执行的流程性工作

循序或平行工作

工作的流动性是一个人接着一个人执行,或同时由多人分开执行,或是上述两类工作合并之后的混合性工作

多人

若是单人就可以完成的工作,则不能归类为流程工作。凡是一件工作必须经由两个或更多人来协力完成的工作才能称为流程工作

共同目的

多人参的流程性工作,必须是以完成共同目的为前提。如果一群人是分别针对不同的专案来执行各别的工作,并不算构成一个工作流程

 

工作流程的应用范围

在一般的组织活动中,有相当多数量的事务性工作可以被归类到流程性工作的范围里面,举例如下:

 

采购单流程

贷款审核流程

员工绩效考核流程

工作报表呈报流程

各类报表会签流程

 

 

如何架构一个工作流程

首先要定义出在一个群组工作的环境下,所需要执行或控管的事务性工作性质及其内容

根据所定义的工作内容,再将它分成许多子工作,或称为步骤。每个步骤都都包含了在这个阶段所需要完成的项目清单,而且这些步骤内的项目应当是在逻辑上适合在同一步骤内完成的。任何一件流程工作都会有许多不同的方法来分解成许多子工作,而如何切割一个流程工作,则要根据实际的情况来做判断;

决定各个步骤需要那些专业背景的人员来执行;

决定各个步骤在流程执行时的顺序;

在执行的过程中,有些步骤的执行会因为某些条件不同而产生不同的结果,进而影响到下一个步骤的执行。所以我们必须要找出这些特定的步骤,并且将相关的执行状态条件定义清楚;

将工作流程中的所有执行步骤及每个步骤之间的关系图画出来,并且根据这份关系图来验证流程的可行性。

根据各个步骤的不同需求,分别建立各阶段所需要的表单,工作指令,文件……等项目。

 

工作流管理系统(WfMS)的三大功能模块

  一般而言,所有的WfMS都将包含如下三大功能模块:建立时功能、运行时控制功能、同用户及应用程序的交互功能。

建立时功能 

主要目标是通过某种分析、建模及系统定义手段将现实世界的业务过程转化成某种能够被计算机处理的形式化表示。这种形式化表示,我们就称之为过程定义(也称过程模型、过程模板、过程元数据等)。过程定义中一般都包含有对业务过程中的各个活动步骤的描述、同这些活动相关的各种计算机或人工操作、以及在各活动之间进行切换的各种控制规则。过程定义所定义的,实际上就是控制工作流过程执行的各种参数。

运行时实例控制功能 

主要进行在某个计算环境中工作流过程的管理及各活动步骤之间的状态转换。运行时控制系统将解释过程定义,完成过程的可操作实例的创建及控制,调度过程中各活动步骤,为所涉及到的用户生成待其处理的任务,并在合适的时机调用有关的应用程序资源,等等。这些服务我们一般就称之为“工作流执行服务”,有些系统可能是通过一个工作流引擎提供这些服务,而在另外一些系统则可能会用到多个协作的工作流引擎。工作流引擎是工作流运行时控制系统的核心部分,各种过程实例的执行都是由它负责完成的。

运行时同用户及应用的交互功能 

主要完成对工作流实例执行过程中各种活动的处理。在过程实例的执行过程中,经常需要用户通过某种应用程序来完成过程定义所要求完成的处理或操作,例如填写一个表单,或使用某个应用程序(如字处理软件、绘图软件等)生成新的文档或处理其他活动传递过来的文档等。另外工作流执行服务也可能需要自动的调用有关的应用对数据进行处理,如将某些数据写入到某个数据库系统中、调用某个应用程序对数据进行某种转换等。在不同的WfMS中,工作流执行服务所能访问的应用或资源可能是不一样的,如有些WfMS可能不提供此种能力,有些可能只能访问本地的应用或资源,有些则可能通过某种远程调用机制(如RPC或对象代理等)去访问其他机器上的资源。所有这些构成了运行时交互功能的主要内容。 

 

工作流管理系统的分类

 

1、结构化的与即席的

  结构化工作流指的是在实际工作过程中会反复重复、严格按照某个固定的步骤进行的业务过程。定义此种工作流所需要的各种类型的信息可以通过对业务过程进行详细的分析而得到,从而得到完整的过程定义并在以后的应用过程中反复使用。大量的办公程序,如公文处理、审批等都属此类。即席工作流则是针对那些重复性不是很强或没有重复性的工作流程的,关于这类流程执行所需的有关参数(如参加者等)事先无法确定,而必须推迟到过程实例运行时才能确定,同时在执行过程中间还可能会发生一些意外的情况。这种动态多变的特点在提供更高灵活性的同时,也为过程的建模与执行带来更多的复杂性。

  2、面向文档的与面向过程的

  前者的侧着点在于将电子形式的文档、图像等在有关的人员之间进行分发,以便能够得到不同人的处理与审阅。现有的文档管理与映像管理系统均属此类。在面向过程的WfMS中,工作流被描述成一序列执行环节。与各环节相应都有待处理的数据对象。各环节的数据对象可以按不同的方式分发到其他环节中去,如可以将数据对象的值作为控制条件、或者依此数据对象组装成其他的数据对象等。高端的WfMS一般都属此类系统。

  3、基于邮件和基于数据库

  前者使用电子邮件来完成过程实例执行过程中消息的传递、数据的分发与事件的通知。低端的系统所使用的经常就是此种方法,它可以充分发挥电子邮件系统在广域环境下的数据分发功能,但整个系统将运行于一种松散耦合的模式下。在基于数据库的WfMS中,所有的数据都保存在某种类型的DBMS中,过程的执行实际上就是对这些数据的查询与处理。高端的大规模系统所使用的一般都是此种方法。

  4、任务推动的与目标拉动的

  前者指的是从过程的开始逐步地一个环节一个环节的执行,当某个活动实例被处理完之后,后续的有关活动将被创建并被激活,由此直至整个工作流程的完成。这是目前大多数面向过程的WfMS所使用的执行方式。而在目标拉动的WfMS中,一个业务流程被看成是一个目标。过程实例执行时,该目标将被分解得到多个相互之间按一定约束条件的关联起来的可执行的多个环节,其中各环节还可以当成是子目标而进一步进行分解。在各环节均执行完毕之后,整个过程也就完成了。目标拉动是一种全新的执行方式,下一代的WfMS将具有此种特征。应该说明的是:上述分类只是从不同的角度入手的。一般来说,后面那些特点将给WfMS带来更好的灵活性,同时也将成为那些能够支持跨机构的大规模复杂工作流管理、面向关键任务的WfMS不可缺少的特征。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

工作流简介及其6种常用的工作流引擎 的相关文章

  • 设计模式——简单工厂模式

    简单工厂模式定义为 简单工厂模式又称为静态工厂方法模型 它属于类创建型模式 在简单工厂模式中 可以根据参数的不同返回不同类的实例 简单工厂专门定义一个类来负责创建其他类的实例 被创建的实例通常都具有共同的父类 简单工厂模式结构图 简单工厂模
  • 运放稳定性连载21:电容性负载的稳定性——具有双通道反馈的RISO(2)

    现在 我们必须测量如图10 6所示的Zo 小信号AC开环输出阻抗 该Tina SPICE测试电路将测试空载OPA177的Zo R2和R1以及LT为低通滤波器函数提供了一条AC通道 这样 使得我们能将DC短路和AC开路一起并入反馈电路 DC工
  • 【机器学习】十大算法之一 “朴素贝叶斯”

    作者主页 爱笑的男孩 的博客 CSDN博客 深度学习 活动 python领域博主爱笑的男孩 擅长深度学习 活动 python 等方面的知识 爱笑的男孩 关注算法 python 计算机视觉 图像处理 深度学习 pytorch 神经网络 ope
  • code style

    最近一直在看java convention和google c style 因为老板要提高代码质量 我们小公司一个 因为客户说我们的代码质量太烂了 于是开始搞代码质量 先从静态 代码质量开始 于是就研究起来code style 但是 我发现
  • 高效程序员的40个好习惯和行为方式

    每一个好的习惯 开头都会相应有一个唱反调的句子哦 1 做事 出了问题 第一重要的是确定元凶 找到那个人 一旦证实了是他的错误 就可以保证这样的问题永远也不会再发生了 指责不会修复bug 把矛头对准问题的解决办法 而不是人 这是真正有用处的正
  • 设计模式(5)-适配器模式(Adapter Pattern)

    适配器模式 Adapter Pattern 顾名思义 就像变压器 转接头差不多 就像美国的生活电压是110V 中国是220V 就需要一个变压器将220V转换成110V 或者一个Type C接口想插如USB接口的东西 你就需要一个转换器 而这
  • 第12课:生活中的构建模式——想要车还是庄园

    用程序来模拟生活 从剧情中思考构建模式 与工厂模式的区别 与组合模式的区别 构建模式的模型抽象 类图 基于升级版的实现 模型说明 应用场景 故事剧情 下周就要过年了 这是 Tony 工作后的第一个春节 还是在离家这么远的北京工作 所以肯定不
  • 设计模式--提供者模式provider

    设计模式 C 提供者模式 Provider Pattern 介绍 为一个API进行定义和实现的分离 示例 有一个Message实体类 对它的操作有Insert 和Get 方法 持久化数据在SqlServer数据库中或Xml文件里 根据配置文
  • linux内核中的设计模式

    创建型 Object Pool Object Pool模式可以提升性能 尤其是在对象的分配 初始化成本高 使用频率高 但使用时间短的情况下 对象池可以设置对象池的大小和回收时间缓存预分配的对象 NT和Linux都有简单的预分配缓存对象的机制
  • 前端vue实现分页功能

    前端Vue实现分页功能 我们都知道在spring boot项目中安装pagehelper可以实现分页功能 但是在vue中也能在前端实现分页 1 首先 在data中定义以下变量 data return list null listLoadin
  • 结束了在MSRA的实习

    从5月到11月底 总共在MSRA渡过了7个月的实习时光 这7个月似乎是我感觉过得最快的7个月 或许是一个人在北京 生活上没有太多的琐事 只有很单纯的工作 于是就有这种时光飞逝的感觉 当然 记忆里面也并非都是工作上的事情 在MSRA还认识来自
  • Java设计模式之装饰者设计模式Decorator Pattern

    目录 一 基本概念 二 结构 1 图示 三 案例演示 被装饰对象的基类 一个接口 有cost 和description 两个抽象方法 具体被装饰的对象 实现上面这个接口 装饰者抽象类 基类 实现drink接口 具体的装饰者类 糖 具体装饰者
  • 设计模式之访问者模式

    访问者模式 把被操作的对象作为元素 可变可拓展的操作作为访问者 可以说访问者中有很多操作 然后访问者访问元素 对该元素进行操作 不同的访问者有不同的操作 案例 定义访问者接口 public interface UniversalVisito
  • 设计模式——State(状态)模式

    目录 前言 1 定义 2 适用性 3 结构 3 1 结构图 3 2 参与者 4 应用举例 4 1 State TcpState 4 2 Context TcpConnection 4 3 ConcreteState ListeningTcp
  • 【设计模式】工厂模式(Factory Pattern)

    1 概述 工厂模式 Factory Pattern 是最常用的设计模式之一 它属于创建类型的设计模式 它提供了一种创建对象的最佳方式 在工厂模式中 我们在创建对象时不会对客户端暴露创建逻辑 并且是通过一个共同的接口来指向新创建的对象 工厂模
  • 前端工作总结03

    1 includes 与indexOf 的结合使用解决删除否的情况 因为我们的列表中有些会有签发signMark的值 有些没有 我用map方法返回相应数组某些值 返回一些新数组 如果没有返回的是 undefined 此时我们的length为
  • 设计模式详解---策略模式

    1 策略模式简介 策略模式 Strategy Pattern 是一种行为型设计模式 用于在运行时根据不同的情境选择不同的算法或策略 该模式将算法封装成独立的类 使得它们可以相互替换 而且可以独立于客户端使用它们的方式 1 1 主要角色 上下
  • 在AI技术的无情侵袭下,学学Java的23种设计模式还是非常有必要的

    目前国内80 程序员的主要工作是调用组合api实现各种业务需求 在顶层架构师设定好的框架下 做着重复且无聊的编码工作 如果未来ai被广泛应用 那么被替代的风险是很高的 比较扎心的是 其实目前用ai生成片段代码已经是各个公司比较普遍的做法了
  • C++设计模式 #3策略模式(Strategy Method)

    动机 在软件构建过程中 某些对象使用的的算法可能多种多样 经常改变 如果将这些算法都写在类中 会使得类变得异常复杂 而且有时候支持不频繁使用的算法也是性能负担 如何在运行时根据需求透明地更改对象的算法 将算法和对象本身解耦 从而避免上述问题
  • C++设计模式 --1.工厂模式和单例模式

    文章目录 1 工厂模式 简单工厂模式 工厂方法模式 抽象工厂模式 2 单例模式 懒汉式 饿汉式 1 工厂模式 简单工厂模式

随机推荐

  • 【shell】shell之cut用法

    目录 即可即用 命令详细说明 即可即用 提取列的用awk命令更好用 示例1 截取pers文件内冒号分隔的字符串的第3列 命令 命令说明 d 使用冒号 作为域分隔符 f 3 取分隔后的第3列 示例2 取括号内的数值 you age is 19
  • Error:for nested data item, row-key is required.的解决方法

    一 问题描述 遇到这个问题 首先跟着网上的教程更改 去掉package json中的element ui 版本号前面 不行之后我以为是我的版本问题 换了版本之后 报的错误更多了 然后给
  • Pandas使用(二)--筛选出dataframe某列中含有特定元素的行

    Pandas使用 二 筛选出dataframe某列中含有特定元素的行 python复现excel function dataframe筛选数据 方法一 通过条件判断 筛选出tnode列等于31010600000122的行 list to d
  • ubuntu tesseract 调试总结

    1 下载 编译运行Leptonica 下载地址 http code google com p leptonica 版本号 1 69 包名 leptonica 1 69 tar gz依次输入命令 configure make make ins
  • 深入Android系统(十二)Android图形显示系统-2-SurfaceFlinger与图像输出

    createEventConnection 方法返回的是一个IDisplayEventConnection对象mEvents 接着通过IDisplayEventConnection对象的stealReceiveChannel 方法 该方法主
  • 浅谈 JavaScript 作用域

    一 什么是作用域 作用是对代码的一个读写操作 域是js能够实现的一个范围 在script标签中var的时候 其实是在最大的window上加了一个属性 如果在script中没有用var声明 而是直接赋值 那就是自动在window上加一个属性
  • 解决出现“CMake can not determine linker language for target”问题的方法

    今天来分享一个我在编写CmakeList文件曾遇到的一个错误 当我通过cmake进行生成Makefile文件时候出现了下面两个错误 错误提示信息 CMake Error CMake can not determine linker lang
  • ChaosBlade 项目指南:我是如何为社区贡献 Redis 故障场景

    01 Redis 新特性介绍 1 1 背景 Redis 实际使用过程中会存在一些故障演练需求 例如 模拟触发所有 key 过期的极端故障场景 模拟主动触发 Redis 内存淘汰策略释放内存场景等等 所以 根据以上故障演练需求 决定对 Cha
  • MathType7.4mac最新版本数学公式编辑器安装教程

    MathType7 4中文版是一款功能强大且易于使用的公式编辑器 该软件可与word软件配合使用 有效提高了教学人员的工作效率 避免了一些数学符号和公式无法在word中输入的麻烦 新版MathType7 4启用了全新的LOGO 带来了更多对
  • Boost asio的async_write函数

    Boost asio是一个异步网络通信的库 其中async write是一个比较常用的函数 但是 如果没有正确的使用 就可能会出现一些意想不到的潜在Bug 例如下面的代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1
  • java ---学生信息管理系统

    Student 学生类 package 学生信息管理系统 学生类 public class Student 学号 private String sid 姓名 private String name 年龄 private String age
  • 不重装系统解决win10更新错误0x800f0922

    最近win10突然就不能更新了 一直提示无法完成更新 正在撤销更改 尝试了以下处理都无效 1 网络问题 2 net framework没有启用 3 sfc scannow 和 DISM exe Online Cleanup image Sc
  • 快速排序和堆排序算法的比较与详解

    快速排序 原理 1 通过partion函数将列表最左边的数归位 归位的这个数左边的数都是比他小的 右边都是比他大的数 2 通过partion函数递归 将每一个数归位 partion函数解读 关键问题 left
  • vue+element ui 上传文件,显示的文件参数内容只有uid

    现象 使用elment ui的el upload组件上传文件 会导致上传的文件参数file里面只包含uid 没有其他信息 file uid 52688455 其他参数 xxxx 过程 在网上查资料 首先发现 是没有设定content typ
  • CSS旋转的环形文字效果

  • 微积分

    对于微积分已经是过去式了 早就不知道说的是什么了 今天学习一波 微积分 Calculus 微积分是高等数学中研究函数的微分 积分以及有关概念和应用的数学分支 它是数学的一个基础学科 内容主要包括极限 微分学 积分学及其应用 微分学包括求导数
  • 利用Puppeteer实现验证码网站登录

    Puppeteer puppeteer是由Google官方推出的一个node库 可以启动Chromium浏览器模拟人为操作 类似于PhantomJS 这为爬虫和自动化测试提供了便利 流程 登录流程很简单 启动puppeteer打开目标网站
  • ABAP 传入数据到EXCEL自编函数

    DATA excel TYPE ole2 object workbook TYPE ole2 object sheet TYPE ole2 object cell TYPE ole2 object column TYPE ole2 obje
  • Servlet 清除Cookie 方法

    一 删除已知名称的Cookie 方案 重新建立同名立即删除类型的Cookie Cookie newCookie new Cookie username null 假如要删除名称为username的Cookie newCookie setMa
  • 工作流简介及其6种常用的工作流引擎

    先说说四个非PetriNet调度算法的开源引擎 4 OBE的引擎调度机制 4 Shark的引擎调度机制 5 OSWorkflow的引擎执行机制 6 JBpm的引擎执行机制 6 再说说两个PetriNet调度算法的开源引擎 9 YAWL的引擎