在本快速入门中,我们将了解一个执行工作流的最小 ASP.NET Core 应用程序。工作流将侦听传入的 HTTP 请求并写回一个简单的响应。

我们将:

  • 创建 ASP.NET Core 应用程序。
  • 使用 Elsa 的 Workflow Builder API 以编程方式定义工作流定义,当 HTTP 请求从指定的 URL 传入时,该 API 会执行。

项目

创建一个名为 ElsaQuickstarts.WebApp.HelloWorld 的新的空 ASP.NET Core 项目:

dotnet new web -n "ElsaQuickstarts.WebApp.HelloWorld"

CD 到创建的项目文件夹中:

cd ElsaQuickstarts.WebApp.HelloWorld

添加以下包:

dotnet add package Elsa
dotnet add package Elsa.Activities.Http

工作流程

创建一个名为 HelloWorld.cs 的新文件并添加以下代码:

using System.Net;
using Elsa.Activities.Http;
using Elsa.Builders; namespace ElsaQuickstarts.WebApp.HelloWorld
{
/// <summary>
/// A workflow that is triggered when HTTP requests are made to /hello-world and writes a response.
/// </summary>
public class HelloWorld : IWorkflow
{
public void Build(IWorkflowBuilder builder)
{
builder
.HttpEndpoint("/hello-world")
.WriteHttpResponse(HttpStatusCode.OK, "<h1>Hello World!</h1>", "text/html");
}
}
}

上述工作流有两个活动。第一个活动 HttpEndpoint 表示一个 HTTP 端点,可以使用 HTTP 客户端(包括 Web 浏览器)调用该端点。第一个活动连接到第二个活动 WriteHttpResponse,后者将响应写入 HTTP 客户端。

当活动如本例所示链接时,第二个活动连接到第一个活动的“完成”结果。您还可以明确连接到“完成”结果,如下所示:

builder
.HttpEndpoint("/hello-world")
.When(OutcomeNames.Done)
.WriteHttpResponse(HttpStatusCode.OK, "<h1>Hello World!</h1>", "text/html");

任何时候您想连接到“Done”以外的结果时,都需要明确连接到活动的结果


Startup

接下来,打开 Startup.cs 并将其内容替换为以下内容:

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection; namespace ElsaQuickstarts.WebApp.HelloWorld
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services
.AddElsa(options => options
.AddHttpActivities()
.AddWorkflow<HelloWorld>());
} public void Configure(IApplicationBuilder app)
{
app.UseHttpActivities();
}
}
}

运行

运行程序并等待,直到看到以下输出:

Now listening on: http://localhost:5000

Now listening on: https://localhost:5001

Application started. Press Ctrl+C to shut down.

打开 Web 浏览器并导航到 https://localhost:5001/hello-world。

结果应如下所示:

最新文章

  1. wsimport命令讲解
  2. 导致VC不能释放的几个原因
  3. WinForm 加载自定义控件闪烁问题
  4. AForge学习笔记(列表)
  5. C#窗体钉在桌面、置底、嵌入桌面的办法
  6. 秒懂sql intersect
  7. Chrome控制台
  8. puppet cert maintain
  9. Session监听事件的处理
  10. javaweb学习方案1
  11. 关于PHP包含文件的方法
  12. POJ 1704 Georgia and Bob(阶梯Nim博弈)
  13. Redis cluster集群模式的原理
  14. vue+element之多表单验证
  15. Python_getter和setter方法
  16. jquery双击事件会触发单击事件
  17. rabbitmq 安装和配置
  18. Scrum Meeting 10.30
  19. python模块module package
  20. DataStage 三、配置ODBC

热门文章

  1. 自定义组件开发:使用v-model封装el-pagination组件
  2. 在线CRM系统对企业的好处有哪些
  3. Flask(1)- 简介
  4. java.io.CharConversionException: Not an ISO 8859-1 character: [留]
  5. 《Do Neural Dialog Systems Use the Conversation History Effectively? An Empirical Study》
  6. 报错处理:end Kernel panic - not syncing: Out of memory and no killable processes
  7. B站蹦了,关我A站什么事?
  8. Flask(11)- 操作 Cookie
  9. 【LeetCode】933.最近的请求次数
  10. DIV+css排版问题技巧总结---v客学院技术分享