工作流学习笔记

工作流基本概念学习笔记

⼯作流管理联盟(WFMC)

1993年⼯作流管理联盟(Workflow Management Coalition,WFMC)成⽴并颁布了⼀系列工作流管理系统相关的标准和规范,包括工作流术语表、工作流参考模型、工作流管理系统各部分间协作的五个接口规格、工作流产品的互操作性标准等。其中参考模型,如下图示:
在这里插入图片描述

WFMC 定义的 5 类接口的功能:

  • 接口 1:流程定义接口,工作流服务和工作流建模工具间接口,包括工作流模型的解释和读写操作;
  • 接口 2:客户端应用程序接口,工作流服务和客户应用之间的接口,这是最主要的接口规范,它约定所有客户方应用与工作流服务之间的功能操作方式;
  • 接口 3:被调用应用程序接口,工作流系统和直接调用的应用程序之间的直接接口;
  • 接口 4:工作流平台执行服务之间的互操作接口,或者多个工作流系统之间的互操作接口;
  • 接口 5:系统管理、监控以及跟踪需要所用到的工具性接口,工作流服务于工作流管理工具之间的接口;
    主要应用场景:一般 OA 都内置有一个轻量级的审批流引擎,适用于办公协同领域。BPM 在中国主要适用于流程化信息化程度较高的制造业、零售业、房地产、金融业和政府事业单位,可以应用在企业战略、运营、管理等从上到下的各个场景。BPM 主要为这些行业中体量较大的公司客户服务。

其中接口一早期的标准为WPDL(Workflow Process Definition Language),后来这一接口的规范变更为XPDL(XML Process Definition Language)。

WFMC定义的XPDL(XML Process Definition Language)是至今工作流领域最为重要的一个标准,目前很多主流⼯作流产品都是依据这个标准和规则进⾏设计和开发的,因此大多数工作流引擎都是依据该标准设计开发的。

工作流定义

WFMC对工作流给出定义为:工作流是指一类能够完全自动执行的经营过程,根据一系列过程规则,将文档、信息或任务在不同的执行者之间进行传递与执行。

业务流程建模符号(BPMN)

BPMN(Business Process Modeling Notation)是BPM及工作流的建模语言标准之一。是指业务流程建模与标注,包括这些图元如何组合成一个业务流程图(Business Process Diagram)。

由BPMI Notation Working Group超过2年的努力,于2004年5月对外发布了BPMN 1.0 规范,后BPMI并入到OMG组织,OMG于2011年推出BPMN2.0标准,对BPMN进行了重新定义(Business Process Model and Notation)。

BPMN的主要目标是要提供被所有业务用户理解的一套标记语言,从创建流程轮廓的业务分析到这些流程的实现,直到最终用户的管理监控,包括业务分析者、软件开发者以及业务管理者与监察者。BPMN也支持提供一个内部的模型可以生成可执行的BPEL4WS。因此BPMN的出现,弥补了从业务流程设计到流程开发的间隙,在业务流程设计与流程实现之间搭建了一条标准化的桥梁。

BPMN定义了一个业务流程图(Business Process Diagram),该业务流程图基于一个流程图(flowcharting),该流程图被设计用于创建业务流程操作的图形化模型。而一个业务流程模型(Business Process Model),指一个由图形对象(graphical objects)组成的网状图,图形对象包括活动(activities)和用于定义这些活动执行顺序的流程控制器(flow controls)。

BPMN有以下4个基本元素:

  1. 流对象(Flow Objects):包括事件、活动、网关,是BPMN中的核心元素;
  2. 连接对象(Connecting Objects):包括顺序流、消息流、关联;
  3. 泳道(Swimlanes):包括池和道两种类型;
  4. 人工信息(Artifacts):包括数据对象、组、注释。

1.1~1.3参考知乎文档: https://zhuanlan.zhihu.com/p/514804348

从1.4开始都是自己通过翻阅activiti7的sdk代码以及写单元测试用例总结的

重要概念

工作流中有如下一些重要的概念需要注意:

  • 图形元素

  • 流程模型

  • 流程定义

  • 流程实例

  • 待处理任务

这些基本元素的依赖关系大致如下图所示: 使用图形元素经过建模过程, 产出流程模型, 流程模型一bpmn文件的形式体现, 流程模型的发布可以产出流程定义, 有了流程定义就可以用来创建具体的流程实例了, 继而具体的流程实例需要相关参与人处理, 这些需要处理的事项就是待处理任务.
在这里插入图片描述
从另外一个角度看, 同一个工作流的流程模型是可以反复修改的, 只有发布的流程模型才会产生流程定义, 并且创建流程实例的时候, 都是使用最新的流程定义创建的流程定义, 如果最新的流程定义被挂起(suspend), 则此时该流程不允许创建流程实例, 可以用如下的图形表示模型与流程定义的版本关系:
在这里插入图片描述

工作流状态机

一个工作流, 在整个生命周期中, 存在如下几个不同的状态:

  • 流程模型: 工作流的初始状态为流程模型, 在状态机整个生命周期中, 流程模型可以被管理员反复修改、保存、发布;

  • 流程激活:

    • 流程模型修改保存后, 只有发布才能使得流程变更可用, 也就使得工作流进入激活状态, 可以用来发起新的流程实例;

    • 发起流程实例所用的流程定义是最新发布的流程模型所表达的意思, 流程定义的版本只向前不回退, 管理员可以用老版本重新提交, 也可以删除指定版本的流程定义(连着那次发布一起删除的);

  • 流程挂起:

    • 发布过的流程, 可以被挂起, 从而不允许用来创建流程实例(挂起流程具体指的是挂起最新版本的流程定义);

    • 挂起状态的流程, 可以被激活从而可以继续被用来创建流程实例(激活最新版本的流程定义);

    • 挂起状态的流程, 如果管理员发布了新版本的流程定义, 该流程自动转入可用状态;

    • 挂起状态的流程, 如果存在非挂起的流程定义, 则删除挂起的流程定义后, 流程会自动进入激活状态, 生效的流程定义版本是最新的那个激活状态的流程定义;

  • 流程删除: 不管流程处在任何状态, 都可以被删除掉, 流程的生命周期从此终结;

可以用如下的图形表示工作流的状态机:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Kafka和Spark Streaming是大数据领域中非常重要的技术,它们可以协同工作,实现实时数据处理和分析。Kafka是一个分布式的消息队列系统,可以高效地处理海量数据流,而Spark Streaming则是一个基于Spark的流处理框架,可以实现实时数据处理和分析。在学习Kafka和Spark Streaming时,需要掌握它们的基本概念、原理和使用方法,以及如何将它们结合起来实现实时数据处理和分析。同时,还需要了解Kafka和Spark Streaming的优缺点,以及如何优化它们的性能和可靠性。 ### 回答2: Kafka是一个高性能,可扩展的分布式消息系统。它通过将消息划分成一个或多个主题,然后将这些主题划分成一个或多个分区来进行实现。Kafka是由LinkedIn开发的,由Apache基金会进行管理。它的主要设计目标是支持分布式处理,如流处理和批处理等。Kafka通过使用Zookeeper来进行节点管理和故障转移,能够快速处理海量的数据。Kafka采用发布/订阅模式,支持多个消费者订阅同一个主题,每个消费者可以读取主题的所有分区数据,也可以选择读取其中的某个分区。 Spark Streaming是一个流处理框架,它能够利用Spark的分布式处理能力来对实时数据进行处理。Spark Streaming采用微批处理的方式,将实时数据流切片成一段一段的,并通过并行处理的方式进行计算。Spark Streaming的数据源可以是Kafka、Flume或者TCP sockets等。与Kafka相比,Spark Streaming更适合于需要进行实时计算的场景,例如:实时日志分析、实时推荐、实时风控等。同时,Spark Streaming还能够与Spark的批处理进行无缝对接,实现流处理与批处理的统一计算引擎。Spark Streaming支持机器学习、图计算等高级计算库,能够为用户提供更强大的计算能力。 学习Kafka和Spark Streaming的过程中,需要掌握Java、Scala等编程语言基础知识,并具备分布式系统的相关知识。对于Kafka,需要了解其基本概念、架构、API等,理解消息系统、发布/订阅模式、分区等内容。对于Spark Streaming,需要掌握其基本概念、流式计算流程、数据源等,同时也要熟悉Spark的RDD、DataFrame等相关知识。在学习中,需要结合实际项目,进行代码实践和调试,同时不断学习、思考和总结,以加深对Kafka和Spark Streaming的理解和应用。 ### 回答3: Kafka是由Apache SoftWare Foundation开发的一种分布式发布/订阅消息系统。其主要目的是为数据传输提供一种高吞吐量、低延迟的解决方案。Kafka提供了一种可靠的、持久化的、实时的数据传输方式,适用于众多的场景,如:日志收集、数据传输、消息系统等。 Kafka的特点: 1、高吞吐量:Kafka可以支持非常高的数据传输吞吐量,同时保持低延迟和高稳定性。 2、可扩展性:Kafka可以轻松扩展以适应更大的数据需求,并可以在运行时添加新的主题分区。 3、持久化:Kafka保证数据能够可靠地在分布式集群中传输,同时保证数据不会丢失或者被意外删除。 4、多样化的客户端:Kafka提供了多种语言的客户端接口,以满足不同的开发需求。 SparkStreaming 是由Apache Spark社区发展的一个实时数据处理框架。它用于将实时数据流分成小批处理,可以跨越不同的时间窗口进行计算。Spark Streaming提供了与Spark非常相似的编程模型,同时支持不同的输入源,包括社交媒体、传感器、消息队列等。 SparkStreaming的特点: 1、处理速度快:它可以支持毫秒级别的处理速度,并且可以在分布式系统中实现高吞吐量。 2、支持多种数据源:Spark Streaming可以从多种类型的数据源中读取数据,如HDFS、Flume、Kafka等。 3、编程简单:Spark Streaming提供了与Spark相似的编程模式,使得开发人员可以将Spark Streaming与Spark整合在一起进行处理。 4、高容错性:Spark Streaming在分布式环境中实现了高可靠性和容错性,使得它可以支持大规模的实时数据处理需求。 总之,Kafka和Spark Streaming这两个工具是在大数据处理领域中非常重要的工具。它们可以很好地相互结合,支持大规模的实时数据处理和分析,进而为企业提供更好更快的数据处理方案。如果你对这两个技术感兴趣,可以从官方文档和教程开始学习,逐步掌握它们的定义、特点、应用场景和基本使用方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋雨润华夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值