10.3.2.2 事件
在基本元素一节中,我们知道,对一个事件来说,通常会有产生该事件的原因(触发器)和该事件所产生的影响(结果)。在本节中,我们将更加具体的讨论事件的行为,事件有两种行为:捕获触发器和抛出结果。
事件可以由触发器来指出产生该事件的原因,我们使用一个嵌入事件图形内部的图标来标识不同的触发器,存在不同种类的触发器,事件可以捕获触发器。
事件可以由结果来指出该事件所产生的影响,和触发器一样,我们使用一个嵌入事件图形内部的图标来标识不同的结果,事件可以抛出结果。
图10‑32捕获事件与抛出事件
捕获事件等待它所指定的触发器并在捕获后产生Token;抛出事件等待Token并在捕获后产生一个结果。
图10‑33消息开始事件与消息结束事件
核心开始事件
开始事件启动一个流程的新案例,它只有一个唯一的输出顺序流,没有输入顺序流。当它被触发后,会产生一个Token并顺着它的输出顺序流传出,有多种触发器可以触发开始事件,例如到一个预定的时间(定时触发器)、收到一个特定的消息(消息触发器)、收到一个特定的信号(信号触发器)等等。注意,开始事件只能捕获触发器不能抛出结果。
有3种核心开始事件:
- 定时开始事件(TimerStart Event):当满足时间条件时产生Token;
- 消息开始事件(MessageStart Event):当接受到特定的消息后产生Token;
- 信号开始事件(SignalStart Event):当接受到特定的信号后产生Token。
图10‑34核心开始事件
当满足设定的时间条件时,定时开始事件被触发。有多种设定时间条件的方式:指定一个特定的时间点,例如明天早上9点;指定一个时间间隔,例如两周后;指定一个周期性的时间,例如每天晚上12点开始运行所有的自动化测试。
图10‑35定时开始事件
消息开始事件和信号开始事件都是接受到特定的数据(消息/信号)后产生Token,它们的区别是什么呢?区别在于消息是一对一的,数据的发送和接受是点对点的形式;而信号是一对多的,数据的发送是广播的形式。
消息开始事件从流程外部参与者接受消息,并启动一个案例。
图10‑36消息开始事件
信号开始事件从流程外部参与者或外部流程订阅信号,接受并启动一个案例。
图10‑37信号开始事件
核心结束事件
结束事件可以结束其所在分支的执行,也可以结束整个案例,同时,可以产生并抛出一个结果,例如发送一个消息或信号。它只有输入顺序流,没有输出顺序流。注意,结束事件只能抛出结果不能捕获触发器。
有3种核心结束事件:
- 消息结束事件(MessageEnd Event):结束所在分支的执行并发送一个消息;
- 信号结束事件(SignalEnd Event):结束所在分支的执行并广播一个信号;
- 终止结束事件(TerminateEnd Event):结束整个案例的执行。
图10‑38核心结束事件
消息结束事件接受一个Token,结束所在分支的执行,给指定的外部流程或参与者发送一个消息。
图10‑39消息结束事件
信号结束事件接受一个Token,结束所在分支的执行,广播一个消息,所有对该信号感兴趣的流程和参与者都可以订阅并采取各自的行动。例子请参考图10-37。
终止结束事件结束整个案例的执行。当案例到达某个状态即意味着案例执行结束了,案例中如果存在正在执行的任务,这些任务被取消,这个状态由终止结束事件代表。终止结束事件实现了工作流控制模式里的显式结束(WCP_43)模式,具体该模式的描述请参考本书的工作流模式附录部分。
图10‑40终止结束事件
核心即时事件
在开始事件和结束事件之间发生的事件称为即时事件,即时事件会影响流程的流转,但不会启动或直接终止流程的执行。即时事件即可以捕获触发器又可以抛出结果。
有两种使用即时事件的方式,第一种是将事件使用在流程顺序流中:
图10‑41使用在流程顺序流中的即时事件
当事件使用在流程顺序流中时,事件既可以捕获触发器又可以抛出结果。当事件捕获触发器时,它首先等待一个Token,当Token到达后,它再等待一个触发器,当触发器被捕获后,它执行完毕,向后传递Token;当事件抛出结果时,它首先等待一个Token,当Token到达后,它抛出一个结果,然后执行完毕,如果存在输出顺序流的话就向后传递Token。
第二种是将事件附加在任务或子流程的边界上,此时的事件只能捕获触发器,根据捕获触发器后的不同行为边界事件又分为两种:边界中断事件和边界非中断事件。
图10‑42边界中断事件
当在任务1执行过程中,如果边界中断事件捕获了触发器,那么任务1将被停止执行,转为执行任务3;如果边界中断事件没有捕获触发器,那么任务1正常执行,然后执行任务2。
图10‑43边界非中断事件
当在任务1执行过程中,如果边界非中断事件捕获了触发器,那么任务1不会被停止执行,只是我们同时开始执行任务3,任务1完成后正常触发任务2;如果边界中断事件没有捕获触发器,那么任务1正常执行,然后执行任务2,任务3不会触发。我们使用虚线来标识这是一个非中断事件。
有4种核心即时事件:
- 普通即时事件(None IntermediateEvent):只支持使用在流程顺序流中,什么都不做立刻触发;
- 定时即时事件(Timer IntermediateEvent):支持使用在流程顺序流中捕获触发器,支持附加在任务/子流程边界上中断和非中断任务/子流程执行,满足时间条件时触发;
- 消息即时事件(MessageIntermediate Event):支持使用在流程顺序流中捕获触发器和抛出结果,支持附加在任务/子流程边界上中断和非中断任务/子流程执行,发送消息或等待消息触发;
- 信号即时事件(SignalIntermediate Event):支持使用在流程顺序流中捕获触发器和抛出结果,支持附加在任务/子流程边界上中断和非中断任务/子流程执行,广播信号或等待信号触发。
图10‑44核心即时事件
普通即时事件收到Token后立刻触发,什么都不做,继续向后传递Token。我们使用普通即时事件来标识案例执行到一个特定的状态点或里程碑。
我们使用定时即时事件有两种用途:为任务限定期限以及为有时间要求的任务进行时间延迟。
图10‑45定时即时事件
我们使用消息和信号即时事件对任务执行过程中的消息/信号进行处理,我们也使用它们向外发送消息/信号。
图10‑46消息/信号即时事件
- 大小: 21.7 KB
- 大小: 19.7 KB
- 大小: 14.8 KB
- 大小: 13.8 KB
- 大小: 29.2 KB
- 大小: 71.8 KB
- 大小: 13.5 KB
- 大小: 35.7 KB
- 大小: 35.3 KB
- 大小: 36.7 KB
- 大小: 19.3 KB
- 大小: 17.8 KB
- 大小: 36.6 KB
- 大小: 43 KB
- 大小: 20.3 KB
分享到:
相关推荐
这个库允许开发者在浏览器中直接编辑和交互BPMN模型,为业务流程的可视化管理和设计提供了便利。 标题中的"bpmn-js-examples"是指一系列的示例项目,旨在帮助开发者了解和学习如何在实际应用中使用bpmn-js库。这些...
在本文中,我们将深入探讨如何在前端环境中利用BPMN-js库实现工作流。BPMN-js是一个基于JavaScript的开源库,它允许开发者在Web应用中可视化和交互处理Business Process Model and Notation(业务流程模型与符号)...
2. 核心概念:BPMN的基本概念,包括流程、活动、事件、网关、任务等。 3. 图形符号:BPMN的图形符号,包括流程图、泳道图、事件图等。 4. 元模型:BPMN的元模型,包括流程meta模型、活动meta模型、事件meta模型等。 ...
1. **元模型**:这是BPMN的核心,定义了所有元素的抽象结构,包括活动、事件、网关等基本构建块。 2. **图形符号**:提供了视觉上的表达方式,使得业务流程易于理解和沟通。 3. **XML Schema**:定义了BPMN模型的...
在现代的Web开发中,BPMN(Business Process Model and Notation)是一种广泛使用的标准,用于建模业务流程。BPMN-js是一个基于JavaScript的开源库,它实现了BPMN 2.0规范,允许开发者在Web应用中创建、编辑和展示...
BPMN-JS属性面板是BPMN-JS的核心组成部分之一,它提供了一个界面,用户可以通过这个界面来修改和配置流程图中的元素属性。这些属性可能包括元素的名称、类型、触发条件等。汉化此面板意味着将原本英文的界面元素翻译...
这个"BPMN-JS.rar"压缩包包含的核心内容是BPMN-JS库,它提供了一个完整的解决方案,使开发者能够轻松地在网页上实现BPMN图的绘制和交互。下载并解压此包后,你可以直接在项目中引用BPMN-JS库,开始创建动态的、用户...
**源代码结构**:在解压后的文件中,我们可以预期看到`src`目录包含核心的JavaScript源代码,`test`目录包含单元测试,`example`目录可能包含如何在实际项目中使用bpmn-js的示例,`docs`目录可能包含API文档和用户...
在"vue-bpmn.rar"这个压缩包中,我们很可能找到了一个示例项目,它演示了如何在Vue.js应用中整合Bpmn-js库。Bpmn-js是基于SVG的开源库,用于渲染和编辑BPMN 2.0流程图。它提供了一套API,允许开发者在Web应用中嵌入...
标题:“bpmnjs在浏览器中查看和编辑BPMN20图表” 描述:“bpmn-js - 在浏览器中查看和编辑BPMN 2.0图表” 本文将详细介绍如何使用bpmn-js库在浏览器环境中查看和编辑符合BPMN 2.0标准的业务流程模型图表。bpmn-js...
1. **BPMN模型支持**:库提供对BPMN 2.0标准的全面支持,能够解析和生成BPMN流程图,包括活动、事件、网关、泳道等元素。 2. **流程执行引擎**:BPMN_RPA内含一个强大的执行引擎,可以按照流程图的定义顺序执行任务...
本文将深入探讨camunda-bpmn-js的核心功能、用法以及在实际项目中的应用。 首先,理解BPMN 2.0标准至关重要。Business Process Model and Notation(BPMN)是一种图形化语言,用于描述企业的业务流程。BPMN 2.0是其...
**BPMN官方Demo详解** BPMN,全称Business Process ...通过这个起点,我们可以深入理解BPMN的元素、构造和流程控制,同时掌握如何在Web环境中实现BPMN模型的交互与管理,从而在业务流程自动化和优化方面发挥重要作用。
在这个目录下,我们可以找到 Activiti BPMN 模型的实现,包括 BPMN 图形元素的类、解析器、执行器等关键组件。这些类文件使得 Activiti 能够理解 BPMN 2.0 流程图,将其转化为可执行的代码,并在运行时跟踪和管理...
在`BPMN_RPA-4.8.3.tar.gz`这个压缩包中,包含了`BPMN_RPA`库的4.8.3版本。这个版本可能包含了以下关键组件和特性: 1. **BPMN解析器**:该库可能包含一个能够解析BPMN 2.0 XML文件的解析器,将流程图转换为可执行...
- 掌握BPMN的符号和术语,理解各种元素(如泳道、任务、事件、网关等)的含义和用法。 - 学习和使用BPMN相关的库或工具,如BPMN.io,它可以与XMLStr.js配合,实现BPMN模型的可视化编辑和展示。 总之,XMLStr.js在...
2. **与BPMN js的无缝集成**:这个库利用了BPMN js的功能,包括模型解析、渲染和执行。用户可以通过React-bpmn与BPMN js交互,比如加载和保存流程模型,以及触发流程实例的执行。 3. **交互式编辑**:React-bpmn...
该软件的核心是其内含的`yaoqiang-bpmn-editor-2.0.91.jar`文件,这是一个Java编写的可执行JAR(Java Archive)文件,包含了整个编辑器的运行环境和功能实现。用户通过这个JAR文件可以启动并使用yaoqiang BPMN2.0...
在这个项目中,可能使用了`npm`或`yarn`来安装`bpmn-js`库,这是一个官方支持的BPMN 2.0模型器,提供了一套API和组件,用于在浏览器中展示和编辑BPMN流程图。Vue.js通过`import`语句将这个库引入到项目中,并在组件...