以 HTMX 和 ASP.NET Core @-}建立工作流程系统
一. 导言导言 导言 导言 导言
工作流系统在现代应用中无处不在, 从简单的审批程序到复杂的多功能 -step Atituals *.}虽然有极好的商业解决方案如Temporal,Airflow_,和n{8NMSSK6有时你需要适合自己具体需求的东西.在这个系列中...,I'L会从零开始通过建立完整的工作流程系统 使用 ASPMS K10NET CoreMESK11}HTMX,*Alpine}.j,和HangfireMSG15}
到此系列的结尾 您将拥有一个功能齐全的工作流程系统, 与 @:+@
- 用于建设工作流程的视觉节点@-基编辑器
- JSON- 定义的工作流程节点,有输入@,输出 @,和条件
- 自定义工作流程执行引擎
- 投票远程宣传片用 " 燃火 " 进行背景工作处理
- 国家管理和持久性
- 监测工作流程执行的仪表板
为何建立您自己的工作流程系统@? @%
为何不使用现有解决方案?
何时构建您的自动@ : @
- 您需要与您现有的应用程序进行深度整合
- 您有特定的商业逻辑, 与通用工作流程工具不兼容@ ' @
- 您想要完全控制执行模式和缩放
- 您需要将外部依赖最小化
- 您想要学习如何在引擎盖下操作工作流程系统
何时使用现有工具@ : @%
- 您需要立即获得测试的解决方案 。
- 您需要功能, 如在很多机器上分布执行 。
- 您没有时间建设和维护海关基础设施
对于这个系列来说,我们选择建立我们自己 因为它给了我们完全的灵活性 而且是一个极好的学习机会
我们所建造的
我们的工作流程系统将支持几个关键概念 :
1.節点
节点是工作流程的构件@. @ 每一个节点代表一个独立的动作或决定点@ ._ 示例 @ MS K2}
- HTTP 请求节点*: API呼叫外部服务
- 条件节点: 评估表达方式和分支执行
- 变换节点:处理数据 @(JSON management@,过滤},等#.)
- 延迟节点: 等待特定期限
- 触发节点: 启动基于事件或时间表的工作流程
*2. 工作流量
工作流程是连接节点的定向图表@.}数据从一个节点流向另一个节点,通过每个节点处理和根据需要转换数据的链接,
3. 执行引擎
用于解释工作流程定义并按正确的顺序执行节点的引擎@,}处理 @:}
- 顺序执行
- 双向执行@( @% 当节点互不依赖时#'}*)
- 有条件分支
- 错误处理和重试
- 国家持久性
4. 视觉编辑器
基于 Web 的 UI, 用户可以在此端端上 @: @%
- 将节点拖放到画布上
- 通过它们之间的绘图边缘连接节点
- 配置节点属性
- 测试工作流程
- 查看执行执行历史
5. 背景处理
使用Hangfire@, @ we'}将执行 @: @
- 排定的工作流程执行
- AIP 外部数据调查
- 无法执行处决的重试逻辑
- 用于监测工作的仪表板
技术堆叠
这里:' @%s 我们将使用什么? '}#:}
后端
- ASP=.NET 核心9.0:我们的网络框架
- 实体框架核心*: 用于数据持久性
- 邮件greSQL用于存储工作流程定义和执行状态的数据库
- 枪火: 背景工作处理
- 系统@. @ text @ ._ Json用于工作流程 JSON序列化
前端
- HTMX 2.0用于动态@,服务器 @-驱动 UI 更新, 不写入 JavaScript
- 阿尔卑斯山用于交互式组件的 :轻量级 JavaScript 框架
- 尾风CS @ +# DisiUI:-Styring和UI组件
- 领导线@: 用于绘制节点之间连接的 (we' 会探索其他选项@)
基础设施基础设施
- 嵌入器用于集装箱化
- Seq 单位用于结构化伐木的:
- 普罗米修斯 格拉法纳*:用于监测
建筑结构概览
我们的系统将组织成几个项目 :
Mostlylucid.Workflow/
├── Mostlylucid.Workflow.Engine/ # Core workflow execution engine
│ ├── Models/ # Node, Workflow, Connection models
│ ├── Execution/ # Workflow executor and runtime
│ └── Nodes/ # Built-in node implementations
├── Mostlylucid.Workflow.Shared/ # Shared models and DTOs
├── Mostlylucid.Workflow.DbContext/ # Entity Framework context
└── Mostlylucid/ # Main web app (existing)
├── Controllers/WorkflowController.cs
├── Services/WorkflowService.cs
└── Views/Workflow/ # Workflow UI views
关键设计决定
1.JSON-基于节点的定义 节点将在 JSON, 中定义, 使其容易序列化@, @ 版本_ ,} 并共享\ MS K3}
{
"id": "node-1",
"type": "HttpRequest",
"name": "Fetch User Data",
"inputs": {
"url": "https://api.example.com/users/{{userId}}",
"method": "GET",
"headers": {
"Authorization": "Bearer {{apiToken}}"
}
},
"outputs": {
"response": "{{result.body}}",
"statusCode": "{{result.statusCode}}"
},
"conditions": {
"onSuccess": "next-node-id",
"onError": "error-handler-node-id"
}
}
@ 2._ 图表@ MS K1_ 基于执行 工作流是定向环形图(DAGsMS K1 执行引擎:
- 确定执行命令的实绩地形排序
- 在可能的情况下平行执行节点
- 根据节点产出处理有条件的分支
国家持久性 每个工作流程的执行都将被跟踪@: @%
- 工作流实例状态@(Running,}已完成 @, 失败{)
- 节点执行结果
- 排定工作流程的触发状态
- 执行历史和日志
*4. 扩展性 节点系统将是一个插件@ - @ based @ MS K1
- 共同业务的节点
- 自定义节点类型可以注册
- 节点审定和计划执行
什么是' 来到这系列
建筑和核心工作流程引擎
- 建立项目结构
- 建立核心工作流程模型@(Node,}工作流程 @,连接{)
- 实施图形执行引擎
- 地形分类和依赖性分辨率
建立视觉编辑器
- 使用 HTMX 和 Alpine @ .js 创建工作流程画布
- drop 节点位置
- 视觉连接绘图
- 节点配置面板
- 工作流程序列化
营火融合和国家管理部分
- 设置用于背景处理的挂牌火
- 实施API投票节点
- 触发州管理
- 重试逻辑和错误处理
- Dashbo板集成
高级地物和部署
- 执行自定义节点
- 工作流程版本
- 测试战略
- 绩效优化
- 嵌入器部署
先决条件
为了配合这个系列 ,,你应该有:
- 安装了.NET @9.0%SDK
- ASP.NET核心监查中心的基本知识
- 熟悉实体框架核心
- 理解 HTML\ @,}CSS,}和基本 JavaScript
- 正在运行的依附性 docker @ ( @ optional@ MS K1@ I)}
开始
在下一篇文章“,”中,我们'将直接跳入建设核心工作流程引擎 “.”我们将创建模型“MS K4 实施执行引擎‘, 并写下第一个可以按程序完成的流程}♪.
这将会是一个有趣的旅程 @!We'll 构建真正有用的东西, 同时学习图表算法@,背景处理}#,和现代网络开发模式_.
结论结论
建立从头开始的工作流程系统是一个雄心勃勃的项目 @,,但是它也令人难以置信地富有回报性 @MS K2@You'将深入了解现代自动化平台是如何运作的_,和您#'将拥有一个完全适合你需要的系统+'}♪.
在“2,”部分中,我们'将开始编码 “! 我们MS K3将建立项目结构并构建核心工作流程引擎, 以执行基于我们的节点@-的工作流程 @.
继续收听!