使用.net 构建 Elsa Workflow

18 篇文章 0 订阅
4 篇文章 0 订阅

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

开发环境 net6

一章 简单使用

官方文档

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<IWorkflowRunner>();
                //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<IWorkflowRunner>();
                await workflowRunner.RunAsync(workflow);

            }
        }

    }
}

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

官方文档

不兼容swagger? 先注释

改造成支持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<CustomWorkflow>();
    });
    elsa.UseHttp();
});

跟swagger  AddControllers 冲突 需要注释掉

使用

app.UseWorkflows();

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

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

第四章 Exposing the REST API

  <PackageReference Include="Elsa" Version="3.0.0-preview.727" />
  <PackageReference Include="Elsa.Http" Version="3.0.0-preview.727" />
  <PackageReference Include="Elsa.Workflows.Api" Version="3.0.0-preview.727" />
  <PackageReference Include="Elsa.Identity" Version="3.0.0-preview.727" />

授权 使用

访问

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

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


            //----------------------------------------------------------------------------
            //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不对
 

  //--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"
  //}'

默认账号密码就是这

鉴权 颁发token

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

原来的还能用

随便改个值

凭证不对访问 问不了

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

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

先用到这里吧

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云草桑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值