使用.net 构建 Elsa Workflow
对接过蓝凌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: Elsaservices.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
先用到这里吧
相关文章:

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

open clip论文阅读摘要
看下open clip论文 Learning Transferable Visual Models From Natural Language Supervision These results suggest that the aggregate supervision accessible to modern pre-training methods within web-scale collections of text surpasses that of high-quality crowd…...
Vue3像Vue2一样在prototype(原型)上挂载数据
Vue2的写法 import App from ./App import Vue from vue import ./uni.promisify.adaptor Vue.config.productionTip false App.mpType app import config from "./static/js/config/config.js" Vue.prototype.$configconfig; const app new Vue({...App }) app.…...

API接口自动化测试
本节介绍,使用python实现接口自动化实现。 思路:讲接口数据存放在excel文档中,读取excel数据,将每一行数据存放在一个个列表当中。然后获取URL,header,请求体等数据,进行请求发送。 结构如下 excel文档内容如下&#x…...

基于springboot实现驾校管理系统项目【项目源码】
基于springboot实现驾校管理系统演示 JAVA简介 JavaScript是一种网络脚本语言,广泛运用于web应用开发,可以用来添加网页的格式动态效果,该语言不用进行预编译就直接运行,可以直接嵌入HTML语言中,写成js语言࿰…...
稀疏数组的保存优化(java版本)
什么是稀疏矩阵? 矩阵中,若数值为 0 的元素数目远远多于非 0 元素的数目,并且非 0 元素分布没有规律时,则称该矩阵为稀疏矩阵;与之相反,若非 0 元素数目占大多数时,则称该矩阵为稠密矩阵。 …...

Git GUI、SSH协议和IDEA中的Git使用详解
目录 前言 一、Git GUI的使用 1. 什么是Git GUI 2. 常见的Git GUI工具 3.使用 4.使用Git GUI工具的优缺点 优点: 缺点: 二、SSH协议 1.什么是SSH协议 2.SSH的主要特点和作用 3.SSH密钥认证的原理和流程 4. SSH协议的使用 三、IEDA使用git …...

Linux下C++调用python脚本实现LDAP协议通过TNLM认证连接到AD服务器
1.前言 首先要实现这个功能,必须先搞懂如何通过C调用python脚本文件最为关键,因为两者的环境不同。本质上是在 c 中启动了一个 python 解释器,由解释器对 python 相关的代码进行执行,执行完毕后释放资源。 2 模块功能 2.1python…...

计算机毕业设计选题推荐-校园交流平台微信小程序/安卓APP-项目实战
✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...
FlinK之检查点与保存点机制
检查点与保存点 检查点Checkpoint概述保存时机保存与恢复检查点算法 检查点配置启用检查点指定存储位置其它配置通用增量 保存点Savepoint概述使用保存点切换状态后端 SQL客户端中操作提交作业触发恢复 检查点Checkpoint 概述 在 Flink 中,检查点是用于实现状态一致…...

UE5 新特性 Nanite 开启
啥也不说,只能说,真的牛,在自己的项目上,从10几20的帧数,直接彪到了70 适用场景: 大场景,三角面足够多 在Project Setting里面 将这几个勾未true 勾上这个,放入场景即可...

仿写知乎日报第四周
本周主要修改了以往的一些bug,实现了一些遗漏的新功能。 无限右滑 无限右滑我听了学长的思路,首先在scrollView的画布大小设置多一个宽度的画布,然后每当滑到那个画布的时候,就调用一个通知,该通知会触发在首页的vie…...

MySQL join原理及优化
MySQL的JOIN原理是基于索引和算法的。在执行JOIN查询时,MySQL会根据连接字段上的索引来查找匹配的记录。 这种算法在链接查询的时候,驱动表会根据关联字段的索引进行查找,当在索引上找到了符合的值,再回表进行查询,也就…...

js案例:打地鼠游戏(打灰太狼)
效果预览图 游戏规则 当灰太狼出现的时候鼠标左键点击灰太狼加10分,小灰灰出现的时候鼠标左键点小灰灰击减10分,不点击不减分不加分。 整体思路 1.把获取背景图片中每个地洞的位置,把所有位置放到一个数组中。 2.封装随机数函数,随…...

删除杀软回调 bypass EDR 研究
01 — 杀软或EDR内核回调简介 Windows x64 系统中,由于 PatchGuard 的限制,杀软或EDR正常情况下,几乎不能通过 hook 的方式,完成其对恶意软件的监控和查杀。那怎么办呢?别急,微软为我们提供了其他的方法&a…...
Ansible自动化部署工具-组件及语法介绍
大家好,我是蓝胖子,我认为自动化运维要做的事情就是把运维过程中的某些步骤流程化,代码化,这样在以后执行类似的操作的时候就可以解放双手了,让程序自动完成。避免出错,Ansible就是这方面非常好用的工具。它…...

postgresql实现job的六种方法
简介 在postgresql数据库中并没有想oracle那样的job功能,要想实现job调度,就需要借助于第三方。本人更为推荐kettle,pgagent这样的图形化界面,对于开发更为友好 优势劣势Linux 定时任务(crontab) 简单易用…...

layui 表格(table)合计 取整数
第一步 开启合计行 是否开启合计行区域 table.render({elem: #myTable, url: ../baidui/, page: true, cellMinWidth: 100,totalRow:true,cols: [[ //表头//{ type: checkbox },{ type: checkbox,totalRowText: "合计" },//合计行区域{ field: id, align: center,…...

深入理解 TCP;场景复现,掌握鲜为人知的细节
握手失败 第一次握手丢失了,会发生什么? 当客户端想和服务端建立 TCP 连接的时候,首先第一个发的就是 SYN 报文,然后进入到 SYN_SENT 状态。 在这之后,如果客户端迟迟收不到服务端的 SYN-ACK 报文(第二次…...

【MySQL系列】 第二章 · SQL(中)
写在前面 Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正࿰…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...