惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
P
Palo Alto Networks Blog
C
Cisco Blogs
The Hacker News
The Hacker News
T
Threatpost
S
Schneier on Security
K
Kaspersky official blog
Spread Privacy
Spread Privacy
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
NISL@THU
NISL@THU
量子位
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Google DeepMind News
Google DeepMind News
Security Latest
Security Latest
博客园 - 司徒正美
云风的 BLOG
云风的 BLOG
博客园 - 叶小钗
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
News and Events Feed by Topic
爱范儿
爱范儿
P
Proofpoint News Feed
C
CERT Recently Published Vulnerability Notes
Project Zero
Project Zero
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Cisco Talos Blog
Cisco Talos Blog
GbyAI
GbyAI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Apple Machine Learning Research
Apple Machine Learning Research
T
Tenable Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
V
Vulnerabilities – Threatpost
Forbes - Security
Forbes - Security
博客园 - 三生石上(FineUI控件)
C
Cyber Attacks, Cyber Crime and Cyber Security
N
News and Events Feed by Topic
V
V2EX
Webroot Blog
Webroot Blog
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Blog — PlanetScale
Blog — PlanetScale
M
MIT News - Artificial intelligence
Scott Helme
Scott Helme
Simon Willison's Weblog
Simon Willison's Weblog
L
LangChain Blog
W
WeLiveSecurity
Cloudbric
Cloudbric

博客园 - 神游虚空

解决 GDAL 用 C# 访问时,中文乱码问题。 学习AI编程 安装 RAGFlow 安装 KTransformer 量化投资赚的哪方面的钱? python中调用 .net 的 dll 时,报错:Exception has occurred: TypeLoadException 使用 Open XML SDK 实现 html 富文本转换为 docx 格式示例 在python中 先调用C#的dll 返回了一个类的列表,如何把这个列表转换为 python 中的 DataFrame? vue项目服务器部属源码调试解决办法 vue3 + ts + element_plus 创建后台管理系统,学习记录 大A指数周内效应分析 两个通达信公式 如何在.netcore 上实现 Rbac 权限管理 修道是精神上的减熵过程 BPMN2.0 Specifaction 节选翻译,10.4.6 事件处理(handling Events,原文 275页) BPMN2.0 Specifaction 节选翻译,10.4 事件 Events (原文233页) 使用ef或dbcontext的时候主要注意三个问题 EFCore 中 group 分组后,只选出每组中含有最大值的数据行 BPMN2.0 Specifaction 节选翻译,10.2.8 循环特征 Loop Characteristics (原文 189页) BPMN2.0 Specifaction 节选翻译,10.2.5 子流程 Sub-Processes (原文173页)
BPMN2.0 Specifaction 节选翻译,10 Process (原文145页)
神游虚空 · 2021-01-08 · via 博客园 - 神游虚空

1、背景

  最近因工作需要,需要用C#自己实现一个支持 BPMN 2.0 的流程引擎。

       网上查了查相关C#的开源,实现程度都很少。还没有象 Java 中 Activity 包好用的包。

  不得已,自动手丰衣足食!

  不过要多一点的部份实现 BPMN 2.0 ,至少实现的内容不能和 BPMN 2.0 相冲突。就需要细细研究一下 BPMN 2.0 了。

     不得已,自己阅读规范。在有时间的情况下,翻译两段,用于记录。

  因为是人工翻译,如果有翻译出错,还请不令指出方便深入理解和改正。

2、BPMN 2.0 规范

    BPMN2.0规范  http://www.omg.org/spec/BPMN/2.0/

    请点击下载标准:BPMN 2.0 规范

3、部份小节翻译

3.1 第10节翻译

 (注:本文由廖贵宾翻译,email:531622@qq.com,若引用请保留本申明和原链接)

10 Process (原文145页)

  工作流(Process) 用来描述组织为完成目标而进行的一个序列的活动。在BPMN中工作流(Process)被绘成一张由定义了执行语义的工作流节点组成的图,这些节点包括多个活动节点( Acitivities)、事件节点(Events),网关节点(Gateways)以及关联的流转箭头(Sequence flows)。如图 10.1。组织中的任意层级都可以定义工作流(Processes),可以是整个企业范围应用的工作流(Processes),也可以是单人使用的工作流(Processes)。较低级别的工作流(Processes)可以组合起来,用来实现通用组织目录。

注:在BPMN规范中 Process 关键词意味着一组可流转节点的组合(flow elements)。在建模 Process 之间的交互时,规范中使用 Collaboration 和 Choreography 关键词表示。

我们使用XML文档来描述工作流的定义。在xml文档中,一个Process节点在Definitions节点中被定义时,在一个Process节点会包含一组流节点(Activities, Events 和 Gateways)以及它们之间如何流转的箭头(Sequence Flow)。这些元素如果转换成类,可以用UML图绘制出它们之间的关系(如图 10.2)。

如图10.2所示,Process类是 CallableElement 的子类,允许被其它的 Process 类通过 Call Acitivity 结构来索引或重用。在这种方式下,Process类应该定义一组能被处部访问的行为接口(Interfaces)。Process 类是可以被重用的元素,可以在其它 Definition 类中被导入(import)和使用。

图 10.3 展示了 Process 类中属性(attributes)和关联(associations)的细节内容。

类 Process 继承了 CallableElement 和 FlowElementContainer 的属性和关联(分别见表 10.24和 8.45)。而下表 10.1 是 Process 新增的属性和关联。

表 10.1 :Process类属性和模型关联表

属性名称

使用说明

processType:ProcessType = none

{None | Private | Public}

processType 属性指定 Process 可用的范围。

Public 状态,表示Process对外部用户可见,但不显示流程内部的流转细节。这种状态下可以被 Collaboration 类发现和调用。注:ProcessType 的 public 值是在 BPMN1.2 中被命名的。

Private 状态,表示Process 只用于特定组织内部。

默认值是 None 状态,表示没有指定。

IsExecutable:Boolean[0..1]

是可选的属性,表是Process 是否可执行。

可执行的 Process 是按照 14章的语义标准建模的(参见原文426页)。当然,在 Process 开发过程中,会出现没有足够细节来执行的时候。

不可执行的 Process 是一个私有的流程,是在模型定定级别,以描述Process行为的文档。这些流程定义中,并不包含那些需要需要执行的信息,如条件表达式信息。

对于处于 public 状态下的 Process,没有这个属性就等效于IsExecutable 为 False。对 public 状态下的 Process , IsExecutable 不应该为 True。

auditing :Auditing[0..1]

这个属性用于关联特性(properties)审计信息。

monitoring:Moitoring[0..1]

这个属性用于关联特性(properties)监测信息。

artifacts:Artifact[0..*]

这个属性用于本Process存储一个构件(Artifacts)列表。

IsClosed:Boolean=false

布尔值。当Process被运行或操作时,该值用于表明交互功能是否能发生,比如消息(Messages)和事件(Events)是否能发送和接收。

supports:Process[0..*]

建模时可以申明一个流程(Process) 或一组流程(Processes) 需要支持的功能和操作。这意味着,这一组流程(Processes)中每一个流程(Process)都支持相同的功能和操作。

properties:Property[0..*]

建模时自定义的特性(properties)应该被加到流程类(Process)中。这些特性(properties)被包含在Process类中。所有的任务类(Tasks)和子流程类(SubProcess)需要能访问这些特性(properties)。

resources:ResourceRole[0..*]

定义了资源(resource)可以执行和对流程类(Process)负责。这里的资源包括流程的执行者(performer)以及表单(form)中指定的个人(individual)、小组(group)、组织角色(organization role)、职位(position)和组织(organization)

注:对流程类(Process)中资源(resources)进行赋值,并不影响该流程类中所包含的活动类(Activities)的资源。关于资源赋值更多的细节信息查看原文的 154 页。

correlationSubscriptions:

CorrelationSubscription[0..*]

关联订阅(correlationSubscriptions)是基于内容关联的特征(feature)见原文章节 8.3.3。关联订阅(correlationSubscriptions)用于将进入消息(Messages)关联到流程(Process)中的数据。一个流程(Process)可以包含多条关联订阅(correlationSubscriptions)

definitionalCollaborationRef:

Collaboration[0..1]

对于与其他参与者交互的流程组(Processes),其中的流程(Process)可以引用一个明确的协作(Collaboration)。通过这个协作(Collaboration)描述该流程的参与者,也可以描述参与者通过消息流(Message Flows)关联的服务(service)、发送和接收任务(Task)或者信息事件(Message Event)。这个明确的协作(collaboration)不能被禁止。另外,这个协作(collaboration)也能在流程类(Process)中用来包含会话(Conversation)

另外,流程实例含有一个可以被表达式(Expression)引用的属性(attribute)。这些值只有在流程类(Process)被执行时才是有效的。见表 10.2

表 10.2  -- 流程实例属性表

属性名

使用说明

state: string = None

在原文13.2.2节查找允许的值,查看图13.2(BPMN Activity的生命周期)

10.1.1 流程基本概念 (Basic Process Concepts)

10.1.1 BPMN流程中的类型(Types)

商业流程(Business Process)建模补广泛用于和各种人群沟通各类信息。BPMN 被设计成覆盖多种类型的建模,允许明确的端到端(end-to-end)的商业过程(Business Processes)。这里有三种基本的商业流程(Business Processes):

  1、 (内部)私有的不需要运行的商业流程(Business Processes)

  2、 (内部)私有的能执行的商业流程

  3、 公共的商业流程

10.1.1.1 (内部)私有的商业流程(Business Processes)

私有商业流程存在于某个特定组织内部。这些流程组(Processes)通常被称为工作流(workflow)或BPM流程(如图 10.4))。另一个典型的同义词应用在Web services领域,叫做流程编排服务(Orchestration of services)。存在两种私有流程:能执行的和不能执行的。能执行的流程是为某种目的,按14章(原文426页)的要求,依照语义定义建模实现的。当然在开发过程中,会有因细节信息不足而不能执行的阶段。不能执行的流程是为使用流程文档化的目的,在详细建模的级别上进行建模。通常这样的流程缺少执行信息,如缺少条件表达式(condition Expressions)。

如果私有商业流程使用了一个泳道符号(例如在协作图 Collaboration 中,如下图),那么私有商业流程将包含一个单一的泳池(Pool)。流程中的流节点(flow)因此被包含在泳池中,不能放到泳池外。但消息流(Messages)能穿过池子的边界,用来表示在不同的私有商业流程间进行交互。

10.1.1.2 公共流程(Public Process)

       一个公共流程用于描述一个私有流程和其它流程或参与者之间的交互(如图 10.5)。仅有那些用于和其它参与者通信的活动(Activities)加上这些活动上的订单(order)被包括在公共流程中。这个私有商业流程中的所有其它的内部活动(Activities)不会在公共流程中显示。因此,公共流程显示需要商业流程与外部交互的外部世界的消息(Messages)和消息内的订单(order)信息。公共流程可单独建模,或者作为一个协作(Collaboration)的部分出现,用于显示公共的流程活动(Process Activities)和其他参与者之间的消息流(Messages)。注:流程的公共类型属性在BPMN 1.2中被提出的。

 

10.1.2 使用BPMN 的通用元素(Common Elements)

一些 BPMN 元素在流程(Process)和流程编排(Choreography)和协作(Collaboration)中是通用的。接下来的几个小节描述消息(Messages)消息流(Message Flows)参与者(Participants)箭头(Sequence Flows)构件(Artifacts)关联(Correlations)表达式(Expressions)和流程编排中的服务(services in Choreography)的用法。

网关(Gateways)和事件(Events)作为关键的图形元素,在流程编排(Choreography)和流程(Process)之间也是通用的。因为他们是非常重要的符号,会作为本章的主要小节出现(事件Events 在原文的 233页,网关Gateways 在原文的 287页)。