# 以 HTMX 和 ASP.NET Core @-}建立工作流程系统

<!--category-- ASP.NET, HTMX, Alpine.js, Workflow -->
<datetime class="hidden">2025-01-15T12:00</datetime>

## 一. 导言导言 导言 导言 导言

工作流系统在现代应用中无处不在, 从简单的审批程序到复杂的多功能 -step Atituals *.}虽然有极好的商业解决方案如Temporal,Airflow_,和n{8NMSSK6有时你需要适合自己具体需求的东西\.在这个系列中...,I'L会从零开始通过建立完整的工作流程系统 使用 ASPMS K10NET CoreMESK11}HTMX,*Alpine}.j,和HangfireMSG15}

到此系列的结尾 您将拥有一个功能齐全的工作流程系统, 与 @:+@

- 用于建设工作流程的视觉节点@-基编辑器
- JSON- 定义的工作流程节点,有输入@,输出 @,和条件
- 自定义工作流程执行引擎
- 投票远程宣传片用 " 燃火 " 进行背景工作处理
- 国家管理和持久性
- 监测工作流程执行的仪表板

[TOC]

## 为何建立您自己的工作流程系统@? @%

为何不使用现有解决方案?

**何时构建您的自动@ : @ {}**

- 您需要与您现有的应用程序进行深度整合
- 您有特定的商业逻辑, 与通用工作流程工具不兼容@ ' @ {}
- 您想要完全控制执行模式和缩放
- 您需要将外部依赖最小化
- 您想要学习如何在引擎盖下操作工作流程系统

**何时使用现有工具@ : @%**

- 您需要立即获得测试的解决方案 。
- 您需要功能, 如在很多机器上分布执行 。
- 您没有时间建设和维护海关基础设施

对于这个系列来说,我们选择建立我们自己 因为它给了我们完全的灵活性 而且是一个极好的学习机会

## 我们所建造的

我们的工作流程系统将支持几个关键概念 :

### 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}

```json
{
  "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将建立项目结构并构建核心工作流程引擎, 以执行基于我们的节点@-的工作流程 @.

继续收听!