elsa 自定义活动
在本章节中,我们将探讨如何编写自定义活动。
先决条件
在编写自定义活动之前,您需要拥有一个运行正常的 Elsa 应用程序。如果还没有,请按照 [安装 - 控制台应用] 指南进行操作。
编写自定义活动
向应用程序提供活动有多种方式。最简单的方法是创建一个继承自 CodeActivity
的类。
让我们看一个例子。
问候活动
假设我们想创建一个自定义活动,用于向控制台打印问候语。
首先,创建一个继承自 CodeActivity
的类:
接下来,我们需要将活动注册到工作流运行时。为此,请打开 Startup.cs
并在 Elsa 服务配置中添加以下行:
为了尝试使用该活动,让我们创建一个使用它的工作流。创建一个新的 Workflow
对象如下:
最后,运行工作流:
如果运行应用程序,应该会看到以下输出:
你好,世界!
向活动传递数据
让我们扩展 Greeter
活动,使其接受一个名字作为输入,并向控制台打印个性化的问候语。
首先,在活动类中添加一个名为 Name
的属性:
接下来,更新 Execute
方法以使用 Name
属性:
最后,更新工作流以向活动传递一个名字:
如果运行应用程序,应该会看到以下输出:
你好,世界!
从活动传递数据
让我们扩展 Greeter
活动,使其返回问候语作为输出。
首先,将活动基类型从 CodeActivity
更改为 CodeActivity<string>
:
接下来,更新 Execute
方法以返回问候语:
最后,更新工作流以使用活动的输出:
注意我们正在使用 Result
属性来将变量设置为活动的输出。同时注意,我们将工作流的根活动更改为 Sequence
活动。这允许我们向工作流中添加多个活动。
如果你运行应用程序,你应该看到以下输出:
问候语是: 你好,世界!
工作流设计器
自定义活动可以在工作流设计器中使用。
创建应用
要尝试,请按照 [安装 - Elsa Studio] 指南创建一个新的 ASP.NET 应用。
创建活动
在你刚刚创建的应用中,创建一个名为 Activities
的新文件夹,并使用之前编写的代码向其中添加一个名为 Greeter
的新类:
注册活动
接下来,打开 Program.cs
并向 Elsa 服务配置中添加以下行:
创建工作流
运行应用并创建一个新的工作流定义。你应该能在工具箱中看到 Greeter
活动。
为了使用它,我们需要将其添加到工作流中。从工具箱中拖拽 Greeter
活动到工作流设计器上。
在属性面板中为活动输入一个名称。
接下来,让我们向工作流中添加一个 WriteLine
活动。从工具箱中拖拽 WriteLine
活动到工作流设计器上,并将其与 Greeter
活动连接起来。
为了让 WriteLine
活动打印问候语,我们需要将其 Text
属性设置为一个表达式,该表达式使用 Greeter
活动的输出。在使用 Greeter
活动的输出之前,我们需要像控制台示例中那样将其捕获到一个工作流变量中。
使用设计器时,我们可以通过 “变量” 面板来定义工作流变量。
点击 “添加” 按钮添加一个新变量。为变量输入一个名称并选择 string
类型。
接下来,我们需要将 Greeter
活动的 Result
属性设置为我们刚刚创建的变量。
最后,我们可以将 WriteLine
活动的 Text
属性设置为一个使用变量的表达式。我们使用以下 JavaScript
表达式:
运行工作流
为了运行工作流,请确保先发布你的更改。
然后从属性面板复制工作流定义 ID:
最后,发送以下 HTTP 请求(使用 Postman、cURL 等):
当你查看应用程序的控制台输出时,你应该会看到以下消息: