使用.net 构建 Elsa Workflow

对接过蓝凌OA 也基于泛微OA数据库原型重新研发上线过产品,自研的开源的也上线过 每个公司对OA流程引擎介绍 都不一样的, 比如Elsa 这款微软MVP开源组件,基于跨平台开发的技术含量高,专门做OA的同行推过对应文章。 直接看怎么用吧。

开发环境 net6

一章 简单使用

使用.net 构建 Elsa Workflow_第1张图片

官方文档

使用.net 构建 Elsa Workflow_第2张图片

using Elsa.Extensions;
using Elsa.Workflows.Core.Activities;
using Elsa.Workflows.Core.Contracts;
using Microsoft.Extensions.DependencyInjection;

namespace ConsoleApp1demo
{
    internal class Program
    {
        static async Task Main(string[] args)
        {
            {
                //ServiceCollection services = new ServiceCollection();
                nuget: Elsa
                //services.AddElsa();// 注册Elsa服务到容器
                定义一个工作流程,就只有一个工作环节 
                //ServiceProvider serviceprovider = services.BuildServiceProvider();

                //WriteLine workflow = new WriteLine("Hello, World!");

                //IWorkflowRunner workflowRunner = serviceprovider.GetRequiredService();
                //await workflowRunner.RunAsync(workflow);    
                //Console.WriteLine("Hello, World!");

            }

            {
                ServiceCollection services = new ServiceCollection();
                //nuget: Elsa
                services.AddElsa();// 注册Elsa服务到容器
                                   定义一个工作流程,就只有一个工作环节 
                ServiceProvider serviceprovider = services.BuildServiceProvider();

                var workflow = new Sequence()
                {
                    Activities = {
                            new WriteLine("Hello world"),
                            new WriteLine("Goodbye 66666")
                   }
                };

                IWorkflowRunner workflowRunner = serviceprovider.GetRequiredService();
                await workflowRunner.RunAsync(workflow);

            }
        }

    }
}

二章 改成API 使用的预发行版本 即还没有成为正式发布的版本!!!QAQ

官方文档

使用.net 构建 Elsa Workflow_第3张图片

使用.net 构建 Elsa Workflow_第4张图片

不兼容swagger? 先注释

使用.net 构建 Elsa Workflow_第5张图片

改造成支持httpjson

using Elsa.Http;
using Elsa.Workflows.Core.Activities;
using Elsa.Workflows.Core.Contracts;
using Microsoft.AspNetCore.Mvc;

namespace Zhaoxi.Elsa.Server_Project.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class RunWorkflowController : ControllerBase
    {
        //工作流执行着
        private readonly IWorkflowRunner _workflowRunner;

        public RunWorkflowController(IWorkflowRunner workflowRunner)
        {
            _workflowRunner = workflowRunner;
        }

        [HttpGet]
        public async Task Post()
        {
            await _workflowRunner.RunAsync(new WriteLine("Hello ASP.NET world!")); 
            await _workflowRunner.RunAsync(new WriteHttpResponse()
            { 
                Content = new("Hello ASP.NET world!")
            });
        }
    }
}

三章 开始用用核心点的东西了

好多前潜规则 丢

注册  //配置支持某一个端点 

//Elsa 作为一个端点
builder.Services.AddElsa(elsa =>
{
    elsa.UseWorkflowRuntime(runtime =>
    {
        //配置支持某一个端点 
        runtime.AddWorkflow();
    });
    elsa.UseHttp();
});

跟swagger  AddControllers 冲突 需要注释掉

使用.net 构建 Elsa Workflow_第6张图片

使用

app.UseWorkflows();

命名 类似于控制的后缀 workflows 微软风格

使用.net 构建 Elsa Workflow_第7张图片

http://localhost:5191/workflows/hello-word

使用.net 构建 Elsa Workflow_第8张图片

使用.net 构建 Elsa Workflow_第9张图片

第四章 Exposing the REST API

使用.net 构建 Elsa Workflow_第10张图片

使用.net 构建 Elsa Workflow_第11张图片

  
  
  
  

使用.net 构建 Elsa Workflow_第12张图片

授权 使用

使用.net 构建 Elsa Workflow_第13张图片

访问

使用.net 构建 Elsa Workflow_第14张图片

然后就潜规则 官网居然 直接就 下一页 不告诉怎么搞了 哈哈哈哈

使用.net 构建 Elsa Workflow_第15张图片

---分割线------------------------

使用.net 构建 Elsa Workflow_第16张图片


            //----------------------------------------------------------------------------
            //curl--location GET 'http://localhost:5031/elsa/api/workflow-definitions'
            //--header 'Authorization: ApiKey 00000000-0000-0000-0000-000000000000'     访问不到  token不对


            //----------------------------------------------------------------------------
            //要请求访问令牌,我们可以向端点发送以下请求/identity/login:
            //curl--location--request POST 'http://localhost:5031/elsa/api/identity/login' 
            //--header 'Content-Type: application/json' 
            //--data - raw '{
            //    "username": "admin",
            //    "password": "password"
            //}'


            //----------------------------------------------------------------------------
            //要使用访问令牌向 API 端点发出经过身份验证的请求,我们可以包含访问令牌,如下所示:
            // curl--location GET 'http://localhost:5031/elsa/api/workflow-definitions'
            // --header 'Authorization: Bearer {access_token}'

 http://localhost:5032/elsa/api/workflow-definitions

访问不到  token不对
 

使用.net 构建 Elsa Workflow_第17张图片

  //--header 'Authorization: ApiKey 00000000-0000-0000-0000-000000000000'   

使用.net 构建 Elsa Workflow_第18张图片

能访问了是通的

开始拿token

使用.net 构建 Elsa Workflow_第19张图片

  //----------------------------------------------------------------------------
  //要请求访问令牌,我们可以向端点发送以下请求/identity/login:
  //curl--location--request POST 'http://localhost:5031/elsa/api/identity/login' 
  //--header 'Content-Type: application/json' 
  //--data - raw '{
  //    "username": "admin",
  //    "password": "password"
  //}'

默认账号密码就是这

使用.net 构建 Elsa Workflow_第20张图片

使用.net 构建 Elsa Workflow_第21张图片

鉴权 颁发token

使用.net 构建 Elsa Workflow_第22张图片

使用.net 构建 Elsa Workflow_第23张图片

改成别的就没有数据 鉴权可用

使用.net 构建 Elsa Workflow_第24张图片

原来的还能用

使用.net 构建 Elsa Workflow_第25张图片

使用.net 构建 Elsa Workflow_第26张图片

随便改个值

使用.net 构建 Elsa Workflow_第27张图片

凭证不对访问 问不了

已知的是1用这个就能拿到token了还要其他干啥

使用.net 构建 Elsa Workflow_第28张图片

2如何活动的接口也带上token

使用.net 构建 Elsa Workflow_第29张图片

先用到这里吧

你可能感兴趣的:(.net,CTO,云原生,c#,elsa,工作流,.netcore,.net,OA,workflow)