zoukankan      html  css  js  c++  java
  • Elsa 工作流引擎 Hello World

    Elsa 简介

    Elsa 是一个基于MIT协议的.Net的开源工作流引擎,也就是你可以基于它修改源码及进行商业化。与其他工作流产品的区别是首先它可以很轻量级的嵌入到你的应用里,为你的应用提供流程化的能力; 其次它有设计器、API可以可视化的进行流程设计; 再次,它提供性能或功能的扩展能力,扩展性强。

    配置Elsa工作流引擎

    简单配置Elsa 的Hello World应用程序使用Http请求作为触发条件和Http Response作为输出。

    1. 创建一个项目 dotnet new web -n "ElsaQuickstarts.Server.DashboardAndServer"
    2. 进入该项目目录
      cd ElsaQuickstarts.Server.DashboardAndServer

    3. 添加项目包引用
      dotnet add package Elsa
      dotnet add package Elsa.Activities.Http
      dotnet add package Elsa.Activities.Temporal.Quartz
      dotnet add package Elsa.Persistence.EntityFramework.Sqlite
      dotnet add package Elsa.Server.Api
      dotnet add package Elsa.Designer.Components.Web

    4. 使用Visual Studio修改Setup文件,使用如下内容替换原有内容。
      using Elsa;
      using Elsa.Persistence.EntityFramework.Core.Extensions;
      using Elsa.Persistence.EntityFramework.Sqlite;
      using Microsoft.AspNetCore.Builder;
      using Microsoft.AspNetCore.Hosting;
      using Microsoft.Extensions.Configuration;
      using Microsoft.Extensions.DependencyInjection;
      using Microsoft.Extensions.Hosting;
      namespace ElsaQuickstarts.Server.DashboardAndServer
      {
      public class Startup
      {
      public Startup(IWebHostEnvironment environment, IConfiguration configuration)
      {
      Environment = environment;
      Configuration = configuration;
      }
      private IWebHostEnvironment Environment { get; }
      private IConfiguration Configuration { get; }
      public void ConfigureServices(IServiceCollection services)
      {
      var elsaSection = Configuration.GetSection("Elsa");
      // Elsa services.
      services
      .AddElsa(elsa => elsa
      .UseEntityFrameworkPersistence(ef => ef.UseSqlite())
      .AddConsoleActivities()
      .AddHttpActivities(elsaSection.GetSection("Server").Bind)
      .AddQuartzTemporalActivities()
      .AddWorkflowsFrom<Startup>()
      );
      // Elsa API endpoints.
      services.AddElsaApiEndpoints();
      // For Dashboard.
      services.AddRazorPages();
      }
      public void Configure(IApplicationBuilder app)
      {
      if (Environment.IsDevelopment())
      {
      app.UseDeveloperExceptionPage();
      }
      app
      .UseStaticFiles() // For Dashboard.
      .UseHttpActivities()
      .UseRouting()
      .UseEndpoints(endpoints =>
      {
      // Elsa API Endpoints are implemented as regular ASP.NET Core API controllers.
      endpoints.MapControllers();
      // For Dashboard.
      endpoints.MapFallbackToPage("/_Host");
      });
      }
      }
      }

    5. 创建Pages文件夹,并建立_Host.cshtml文件,使用如下内容替换原文件。
      @page "/"
      @{
      var serverUrl = $"{Request.Scheme}://{Request.Host}";
      }
      <!DOCTYPE html>
      <html lang="en">
      <head>
      <meta charset="utf-8"/>
      <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
      <title>Elsa Workflows</title>
      <link rel="icon" type="image/png" sizes="32x32" href="/_content/Elsa.Designer.Components.Web/elsa-workflows-studio/assets/images/favicon-32x32.png">
      <link rel="icon" type="image/png" sizes="16x16" href="/_content/Elsa.Designer.Components.Web/elsa-workflows-studio/assets/images/favicon-16x16.png">
      <link rel="stylesheet" href="/_content/Elsa.Designer.Components.Web/elsa-workflows-studio/assets/fonts/inter/inter.css">
      <link rel="stylesheet" href="/_content/Elsa.Designer.Components.Web/elsa-workflows-studio/elsa-workflows-studio.css">
      <script src="/_content/Elsa.Designer.Components.Web/monaco-editor/min/vs/loader.js"></script>
      <script type="module" src="/_content/Elsa.Designer.Components.Web/elsa-workflows-studio/elsa-workflows-studio.esm.js"></script>
      </head>
      <body>
      <elsa-studio-root server-url="@serverUrl" monaco-lib-path="_content/Elsa.Designer.Components.Web/monaco-editor/min">
      <elsa-studio-dashboard></elsa-studio-dashboard>
      </elsa-studio-root>
      </body>
      </html>

    6. 项目解决方案如下图

    7. 在Visual Studio中启动该服务

    创建和测试Hello World流程

    1. 启动成功之后在流程器中输入https://localhost:5001, 如果是http访问,地址是http://localhost:5000 .

    2. 在流程定义(Workflow Definitions)中新建一个流程,这里借用Elsa官网的Gif图片来说明步骤。
      quickstarts-aspnetcore-server-dashboard-and-api-endpoints-animation-1

    3. 创建好流程之后就可以在浏览器中输入地址进行测试。

    初步性能测试

    使用Apache并发100个请求1000次,在完全默认的情况下得到如下结果。

    可能是采用SQLLite作为持久化性能受到影响。暂时先不做评论。

    参考资料

    ASP.NET Core Server with Elsa Dashboard + Elsa Server API Endpoints

  • 相关阅读:
    oracle 批量修改表名 字段为大写197
    身份证附件上传样例197
    npm 设置源197
    manajo常用命令197
    vue 父组件向子组件传参197
    将BAT文件注册为服务197
    teaweb — linux 系统资源监控
    glances — linux 系统资源监控
    emitter-Client
    urlencode编码 — 为什么要编码
  • 原文地址:https://www.cnblogs.com/cbcye/p/elsa-gong-zuo-liu-yin-qing-hello-world.html
Copyright © 2011-2022 走看看