You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@eventmesh.apache.org by ch...@apache.org on 2023/01/30 06:36:55 UTC

[incubator-eventmesh] branch master updated: Update 01-workflow.md

This is an automated email from the ASF dual-hosted git repository.

chenguangsheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-eventmesh.git


The following commit(s) were added to refs/heads/master by this push:
     new 35ce66cff Update 01-workflow.md
     new 2c6274ce4 Merge pull request #2959 from hanshal101/patch-1
35ce66cff is described below

commit 35ce66cffe822f65dbf66d41fb9852aec800b068
Author: Hanshal Mehta <12...@users.noreply.github.com>
AuthorDate: Sat Jan 28 22:06:25 2023 +0530

    Update 01-workflow.md
    
    Please tell if any changes should i apply
---
 docs/en/design-document/01-workflow.md | 359 ++++++++++++++++-----------------
 1 file changed, 178 insertions(+), 181 deletions(-)

diff --git a/docs/en/design-document/01-workflow.md b/docs/en/design-document/01-workflow.md
index fecae1ee6..549e48a4f 100644
--- a/docs/en/design-document/01-workflow.md
+++ b/docs/en/design-document/01-workflow.md
@@ -1,261 +1,258 @@
-# EventMesh Workflow
+#事件网格工作流程
 
-## Business Problem
+## 业务问题
+假设您正在为电子商务商店构建一个简单的订单管理系统。 该系统应该能够接收和提供来自商店网站的新订单。 供应流程应该能够处理所有订单、处理付款以及处理发货。
 
-Imaging you are building a simple Order Management System for an E-Commerce Store. The system should be able to receive and provision new orders from a store website. The provisioning process should be able to process all orders, handle payments, as well as process shipments.
-
-For high availability and high performance, you architect the system using event-driven architecture (EDA), and build microservice apps to handle store frontend, order management, payment processing, and shipment management. You deploy the whole system in a cloud environment. To handle high workloads, you leverage a messaging system to buffer the loads, and scale up multiple instances of microservices. The architecture could look similar to:
+为了实现高可用性和高性能,您使用事件驱动架构 (EDA) 构建系统,并构建微服务应用程序来处理商店前端、订单管理、支付处理和发货管理。 您将整个系统部署在云环境中。 为了处理高工作负载,您可以利用消息传递系统来缓冲负载,并扩展多个微服务实例。 该架构可能类似于:
 
 ![Workflow Use Case](../../images/design-document/workflow-use-case.jpg)
 
-While each microservice is acting on its own event channels, EventMesh plays a crucial role of doing Event Orchestration.
+虽然每个微服务都在自己的事件通道上运行,但 EventMesh 在进行事件编排方面起着至关重要的作用。
 
 We use [CNCF Serverless Workflow](https://serverlessworkflow.io/) to describe this Event Workflow Orchestration.
 
-## CNCF Serverless Workflow
+## CNCF 无服务器工作流
 
-CNCF Serverless Workflow defines a vendor-neutral, open-source, and fully community-driven ecosystem for defining and running DSL-based workflows that target the Serverless technology domain.
+CNCF Serverless Workflow 定义了一个供应商中立、开源且完全由社区驱动的生态系统,用于定义和运行面向 Serverless 技术领域的基于 DSL 的工作流。
 
-Serverless Workflow defines a Domain Specific Language (DSL) to describe stateful and stateless workflow-based orchestrations of serverless functions and microservices.
+无服务器工作流定义了一种领域特定语言 (DSL) 来描述无状态和无状态基于工作流的无服务器功能和微服务编排。
 
 More details could be found in its [official github site](https://github.com/serverlessworkflow/specification)
 
-## EventMesh Workflow
-
-We leverage Serverless Workflow DSL to describe the EventMesh workflow. Based on its spec, the workflow is consists of a series of workflow states used to describe the control-flow logic. At this time we only support event related workflow states. See the supported states in [Workflow DSL Design](#workflow-dsl-design-wip).
+## 事件网格工作流程
 
-A `workflow state` can include applicable `actions`, or services/functions that should be invoked during workflow execution. These `actions` can reference reusable `function` definitions which define how these functions/services should be invoked. They can also reference events that trigger event-based service invocations, and events to wait for that denote completion of such event-based service invocation completion.
+我们利用无服务器工作流 DSL 来描述 EventMesh 工作流。 根据其规范,工作流由一系列用于描述控制流逻辑的工作流状态组成。 目前我们只支持与事件相关的工作流状态。 请参阅 [工作流 DSL 设计](#workflow-dsl-design-wip) 中的支持状态。
 
+“工作流状态”可以包括适用的“操作”,或应在工作流执行期间调用的服务/功能。 这些“动作”可以引用可重用的“功能”定义,这些定义定义了这些功能/服务应该如何被调用。 它们还可以引用触发基于事件的服务调用的事件,以及等待表示此类基于事件的服务调用完成的事件。
 In EDA solution, we usually defined our event-driven microservice using AsyncAPI. Serverless workflow `function` definitions support defining invocation semantics using AsyncAPI. See [Using Funtions for AsyncAPI Service](https://github.com/serverlessworkflow/specification/blob/main/specification.md#using-functions-for-async-api-service-invocations) for more information.
 
-### AsyncAPI
+### 异步API
 
-AsyncAPI is an open source initiative that seeks to improve the current state of Event-Driven Architectures (EDA).
-Our long-term goal is to make working with EDAs as easy as it is to work with REST APIs.
-That goes from documentation to code generation, discovery to event management.
-Most of the processes you apply to your REST APIs nowadays would be applicable to your event-driven/asynchronous APIs too.
+AsyncAPI 是一项开源计划,旨在改善事件驱动架构 (EDA) 的当前状态。
+我们的长期目标是让使用 EDA 就像使用 REST API 一样简单。
+从文档到代码生成,从发现到事件管理。
+您现在应用于 REST API 的大多数流程也适用于您的事件驱动/异步 API。
 
 See AsyncAPI detail in the [official site](https://www.asyncapi.com/docs/getting-started)
 
-### Workflow Example
+### 工作流程示例
 
-In this example, we build the event-driven workflow of the Order management system above.
+在这个例子中,我们构建了上面订单管理系统的事件驱动工作流。
 
-First, we need to define AsyncAPI definitions for our microservice apps.
+首先,我们需要为我们的微服务应用程序定义 AsyncAPI 定义。
 
-- Online Store App
+- 在线商店应用
 
 ```yaml
-asyncapi: 2.2.0
-info:
-  title: Online Store application
-  version: '0.1.0'
-channels:
-  store/order:
-    subscribe:
-      operationId: newStoreOrder
-      message:
-        $ref : '#/components/NewOrder'
+异步API:2.2.0
+信息:
+   标题:在线商店应用程序
+   版本:'0.1.0'
+渠道:
+   商店/订单:
+     订阅:
+       operationId:newStoreOrder
+       信息:
+         $ref : '#/组件/新订单'
 
 ```
 
-- Order Service
+- 订购服务
 
 ```yaml
-asyncapi: 2.2.0
-info:
-  title: Order Service
-  version: '0.1.0'
-channels:
-  order/inbound:
-    publish:
-      operationId: sendOrder
-      message:
-        $ref : '#/components/Order'
-  order/outbound:
-    subscribe:
-      operationId: processedOrder
-      message:
-        $ref : '#/components/Order'
+异步API:2.2.0
+信息:
+   title: 订单服务
+   版本:'0.1.0'
+渠道:
+   订单/入库:
+     发布:
+       operationId:发送订单
+       信息:
+         $ref : '#/组件/订单'
+   订单/出站:
+     订阅:
+       operationId: processedOrder
+       信息:
+         $ref : '#/组件/订单'
 ```
 
-- Payment Service
+- 支付服务
 
 ```yaml
-asyncapi: 2.2.0
-info:
-  title: Payment Service
-  version: '0.1.0'
-channels:
-  payment/inbound:
-    publish:
-      operationId: sendPayment
-      message:
-        $ref : '#/components/OrderPayment'
-  payment/outbound:
-    subscribe:
-      operationId: paymentReceipt
-      message:
-        $ref : '#/components/OrderPayment'
+异步API:2.2.0
+信息:
+   title: 支付服务
+   版本:'0.1.0'
+渠道:
+   付款/入站:
+     发布:
+       operationId:发送付款
+       信息:
+         $ref : '#/组件/OrderPayment'
+   支付/出站:
+     订阅:
+       operationId:付款收据
+       信息:
+         $ref : '#/组件/OrderPayment'
 ```
 
-- Shipment Service
+- 寄件服务
 
 ```yaml
-asyncapi: 2.2.0
-info:
-  title: Shipment Service
-  version: '0.1.0'
-channels:
-  shipment/inbound:
-    publish:
-      operationId: sendShipment
-      message:
-        $ref : '#/components/OrderShipment'
+异步API:2.2.0
+信息:
+   title: 运输服务
+   版本:'0.1.0'
+渠道:
+   装运/入境:
+     发布:
+       operationId:sendShipment
+       信息:
+         $ref : '#/组件/OrderShipment'
 ```
 
-Once that is defined, we define the order workflow that describes our Order Management business logic.
+定义完成后,我们将定义描述订单管理业务逻辑的订单工作流。
 
 ```yaml
 id: storeorderworkflow
-version: '1.0'
-specVersion: '0.8'
-name: Store Order Management Workflow
-states:
-  - name: Receive New Order Event
-    type: event
-    onEvents:
-      - eventRefs:
-          - NewOrderEvent
-        actions:
-          - eventRef:
-              triggerEventRef: OrderServiceSendEvent
-              resultEventRef: OrderServiceResultEvent
-          - eventRef:
-              triggerEventRef: PaymentServiceSendEvent
-              resultEventRef: PaymentServiceResultEvent
-    transition: Check Payment Status
-  - name: Check Payment Status
-    type: switch
-    dataConditions:
-      - name: Payment Successfull
-        condition: "${ .payment.status == 'success' }"
-        transition: Send Order Shipment
-      - name: Payment Denied
-        condition: "${ .payment.status == 'denied' }"
-        end: true
-    defaultCondition:
-      end: true
-  - name: Send Order Shipment
-    type: operation
-    actions:
-      - eventRef:
-          triggerEventRef: ShipmentServiceSendEvent
-    end: true
-events:
-  - name: NewOrderEvent
-    source: file://onlineStoreApp.yaml#newStoreOrder
-    type: asyncapi
-    kind: consumed
-  - name: OrderServiceSendEvent
-    source: file://orderService.yaml#sendOrder
-    type: asyncapi
-    kind: produced
-  - name: OrderServiceResultEvent
-    source: file://orderService.yaml#processedOrder
-    type: asyncapi
-    kind: consumed
-  - name: PaymentServiceSendEvent
-    source: file://paymentService.yaml#sendPayment
-    type: asyncapi
-    kind: produced
-  - name: PaymentServiceResultEvent
-    source: file://paymentService.yaml#paymentReceipt
-    type: asyncapi
-    kind: consumed
-  - name: ShipmentServiceSendEvent
-    source: file://shipmentService.yaml#sendShipment
-    type: asyncapi
-    kind: produced
+版本:'1.0'
+规格版本:'0.8'
+名称:商店订单管理工作流
+状态:
+   - 名称:接收新订单事件
+     类型:事件
+     关于事件:
+       - 事件参考:
+           - 新订单事件
+         动作:
+           - 事件参考:
+               triggerEventRef:OrderServiceSendEvent
+               resultEventRef:OrderServiceResultEvent
+           - 事件参考:
+               triggerEventRef:PaymentServiceSendEvent
+               resultEventRef:PaymentServiceResultEvent
+     过渡:检查付款状态
+   - 名称:检查付款状态
+     类型:开关
+     数据条件:
+       - 姓名:支付成功
+         条件:“${.payment.status =='成功'}”
+         过渡:发送订单发货
+       - 名称:付款被拒绝
+         条件:“${.payment.status =='拒绝'}”
+         结束:真
+     默认条件:
+       结束:真
+   - 名称:发送订单发货
+     类型:操作
+     动作:
+       - 事件参考:
+           triggerEventRef:ShipmentServiceSendEvent
+     结束:真
+事件:
+   - 名称:NewOrderEvent
+     来源:文件://onlineStoreApp.yaml#newStoreOrder
+     类型:asyncapi
+     种类:消费
+   - 名称:OrderServiceSendEvent
+     来源:文件://orderService.yaml#sendOrder
+     类型:asyncapi
+     种类:生产
+   - 名称:OrderServiceResultEvent
+     来源:文件://orderService.yaml#processedOrder
+     类型:asyncapi
+     种类:消费
+   - 名称:PaymentServiceSendEvent
+     来源:文件://paymentService.yaml#sendPayment
+     类型:asyncapi
+     种类:生产
+   - 名称:PaymentServiceResultEvent
+     来源:文件://paymentService.yaml#paymentReceipt
+     类型:asyncapi
+     种类:消费
+   - 名称:ShipmentServiceSendEvent
+     来源:文件://shipmentService.yaml#sendShipment
+     类型:asyncapi
+     种类:生产
 ```
 
-The corresponding workflow diagram is the following:
+对应的工作流程图如下:
 
 ![Workflow Diagram](../../images/design-document/workflow-diagram.png)
 
-## EventMesh Workflow Engine
+## EventMesh 工作流引擎
 
-In the following architecture diagram, the EventMesh Catalog, EventMesh Workflow Engine and EventMesh Runtime are running in three different processors.
+在下面的架构图中,EventMesh Catalog、EventMesh Workflow Engine 和 EventMesh Runtime 运行在三个不同的处理器中。
 
 ![Workflow Architecture](../../images/design-document/workflow-architecture.jpg)
 
-The steps running the workflow is the followings:
-
-1. Deploy the Publisher and Subscriber Apps in the environment.
-   Describe the App APIs using AsyncAPI, generate the asyncAPI yaml.
-   Register the Publisher and Subscriber Apps in EventMesh Catalog using AsyncAPI.
+运行工作流的步骤如下:
 
-2. Register the Serverless Workflow DSL in EventMesh Workflow Engine.
+1. 在环境中部署发布者和订阅者应用程序。
+    使用 AsyncAPI 描述 App API,生成 asyncAPI yaml。
+    使用 AsyncAPI 在 EventMesh 目录中注册发布者和订阅者应用程序。
 
-3. EventMesh Workflow Engine query the EventMesh Catalog for Publisher and Subscribers required in Workflow DSL `function`
+2. 在 EventMesh Workflow Engine 中注册 Serverless Workflow DSL。
 
-4. Event-driven Apps are publish events to EventMesh Runtime to trigger the Workflow. EventMesh Workflow Engine also publish and subscribe events for orchestrating the events.
+3. EventMesh Workflow Engine查询EventMesh Catalog for Publisher和Subscribers在Workflow DSL`function`中需要
 
-### EventMesh Catalog Design
+4. 事件驱动的应用程序是将事件发布到 EventMesh Runtime 以触发工作流。 EventMesh Workflow Engine 还发布和订阅事件以编排事件。
 
-EventMesh Catalog store the Publisher, Subscriber and Channel metadata. consists of the following modules:
+### EventMesh目录设计
 
-- AsyncAPI Parser
+EventMesh Catalog 存储发布者、订阅者和频道元数据。 由以下模块组成:
 
-  Using the SDK provided by AsyncAPI community (see [tool list](https://www.asyncapi.com/docs/community/tooling)),
-  parse and validated the AsyncAPI yaml inputs, and generate the AsyncAPI definition.
+- 异步 API 解析器
 
-- Publisher, Channel, Subscriber Modules
+使用AsyncAPI社区提供的SDK(参见[工具列表](https://www.asyncapi.com/docs/community/tooling)),
+   解析并验证 AsyncAPI yaml 输入,并生成 AsyncAPI 定义。
+- 发布者、频道、订阅者模块
 
-  From the AsyncAPI definition store the Publisher, Subscriber and Channel information.
+   从 AsyncAPI 定义存储发布者、订阅者和频道信息。
 
-### EventMesh Workflow Engine Design
+### EventMesh 工作流引擎设计
 
-EventMesh Workflow Engine consists of the following modules:
+EventMesh 工作流引擎由以下模块组成:
 
-- Workflow Parser
+- 工作流解析器
 
-  Using the SDK provided by Serverless Workflow community (see supported [SDKs](https://github.com/serverlessworkflow/specification#sdks)),
-  parse and validated the workflow DSL inputs, and generate workflow definition.
+   使用 Serverless Workflow 社区提供的 SDK(参见支持的 [SDKs](https://github.com/serverlessworkflow/specification#sdks)),
+   解析和验证工作流 DSL 输入,并生成工作流定义。
 
-- Workflow Module
+- 工作流模块
 
-  It manages a workflow instance life cycle, from create, start, stop to destroy.
+   它管理一个工作流实例生命周期,从创建、开始、停止到销毁。
 
-- State Module
+- 状态模块
 
-  It manages workflow state life cycle. We support the event-related states, and the supported state list below is Work-in-Progress.
+   它管理工作流状态生命周期。 我们支持事件相关的状态,下面支持的状态列表是 Work-in-Progress。
 
-  | Workflow State | Description |
-  | --- | --- |
-  | Operation | Execute the AsyncAPI functions defined in the Actions |
-  | Event | Check if the defined Event matched, if so execute the defined AsyncAPI functions |
-  | Switch | Check the event is matched with the event-conditions, and execute teh defined AsyncAPI functions |
-  | Parallel | Execute the defined AsyncAPI functions in parallel |
-  | ForEach | Iterate the inputCollection and execute the defined AsyncAPI functions |
+   | 工作流状态 | 说明 |
+   | --- | --- |
+   | 操作 | 执行 Actions | 中定义的 AsyncAPI 函数
+   | 活动 | 检查定义的事件是否匹配,如果匹配则执行定义的 AsyncAPI 函数 |
+   | 切换 | 检查事件是否与事件条件匹配,并执行定义的 AsyncAPI 函数 |
+   | 并行 | 并行执行定义的 AsyncAPI 函数 |
+   | 为每个 | 迭代 inputCollection 并执行定义的 AsyncAPI 函数 |
 
-- Action Module
+- 动作模块
 
-  It managed the functions inside the action.
+   它管理动作中的函数。
 
-- Function Module
+- 功能模块
 
-  It manages the AsyncAPI functions by creating the publisher and/or subscriber in EventMesh Runtime, and manage the publisher/subscriber life cycle.
+   它通过在 EventMesh Runtime 中创建发布者和/或订阅者来管理 AsyncAPI 函数,并管理发布者/订阅者的生命周期。
 
-    | AsyncAPI Operation | EventMesh Runtime |
-    | --- | --- |
-    |  Publish | Publisher |
-    | Subscribe | Subscriber |
+     | AsyncAPI 操作 | EventMesh 运行时 |
+     | --- | --- |
+     | 发布 | 出版商 |
+     | 订阅 | 订户 |
 
-- Event Module
+- 事件模块
 
-  It manages the CloudEvents data model, including event filter, correlation and transformation using the rules defined in the workflow DSL.
+   它使用工作流 DSL 中定义的规则管理 CloudEvents 数据模型,包括事件过滤器、关联和转换。
 
-- Retry Module
+- 重试模块
 
-  It manages the retry logic of the event publishing into EventMesh Runtime.
+   它管理事件发布到 EventMesh Runtime 的重试逻辑。


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@eventmesh.apache.org
For additional commands, e-mail: commits-help@eventmesh.apache.org