# a 利用HTMX和ASP.NET核心建立工作流程系统----第一部分:导言

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

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

从简单的审批程序到复杂的多步自动化,工作流量系统无处不在,都是现代应用系统。

虽然有极好的商业解决方案 比如时间、空气流和n8n, 有时你需要适合你具体需要的东西。

- 在这个系列中,我会带你们从头开始 建立一个完整的工作流程系统 使用ASP.NET Core, HTMX, Alpine.js, 和Hangfire。
- 在本系列结束时,你将拥有一个功能齐全的工作流程系统,包括:
- 用于建设工作流程的视觉节点编辑器
- JSON 定义的工作流程节点,包括投入、产出和条件
- 自定义工作流程执行引擎
- 投票远程宣传宣传片用 " 燃火 " 进行背景工作处理

[TOC]

## 国家管理和持久性

监测工作流程执行的仪表板

**为什么要建立你自己的工作流程系统?**

- 在潜入之前,让我们来谈谈房间里的大象:为什么不使用现有的解决办法呢?
- 何时构建您自己的 :
- 您需要与您现有的应用程序进行深度整合
- 你有不符合通用工作流程工具的具体商业逻辑
- 您想要完全控制执行模式和缩放

**您需要将外部依赖最小化**

- 您想要学习如何在引擎盖下操作工作流程系统
- 何时使用现有工具 :
- 你需要一个经过验证的 战战试验的解决方案

您需要功能, 如在很多机器上分布执行 。

## 你没有时间建设和维护 海关基础设施

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

### 我们正在建设的

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

- **1. 目标 1. 目标**节点
- **节点是工作流程的组成部分。**每个节点代表一个独立的行动或决定点。
- **实例:**HTTP 请求节点
- **:向外部服务提供API电话**条件节点
- **:评价表达方式和分支执行**变换节点

### : 处理数据(JSON操作、过滤等)

延迟节点

### :等待指定期限

触发节点

- :根据事件或时间表启动工作流程
- 2. 目标
- 流动流量
- 工作流程是连接节点的定向图。
- 数据通过连接从一个节点流向另一个节点,每个节点根据需要处理和转换数据。

### 3 个

执行引擎

- 解释工作流程定义并按正确顺序执行节点的引擎, 处理 :
- 顺序执行
- 平行执行( 当节点不互相依赖时)
- 有条件分支
- 错误处理和重试

### 国家持久性

4. 4个。

- 视觉编辑器
- 以网络为基础的用户界面,用户可在其中:
- 将节点拖放到画布上
- 通过它们之间的绘图边缘连接节点

## 配置节节点属性

测试工作流程

### 查看执行执行历史

- **5 个**背景处理
- **使用猎火,我们将执行:**排定的工作流程执行
- **AIP 外部数据调查**无法执行处决的重试逻辑
- **用于监测工作的仪表板**技术堆堆
- **下面我们用的是:**后端

### ASP.NET 核心核心9.0

- **:我们的网络框架**实体框架核心
- **数据持久性:数据持久性**邮件greSQL
- **: 用于存储工作流程定义和执行状态的数据库**枪火
- **:背景工作处理**系统文本Json

### 工作流程:JSON序列化

- **前端**HTMX 2. 0
- **: 对于动态、服务器驱动的用户界面更新,不写入 JavaScript**阿尔卑山
- **:交互式组件的轻量度 JavaScript 框架**尾风CSS + DisaiUI

## :装配和UUI组件

领导线

```
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
```

### :用于在节点之间建立联系(我们将探讨替代办法)

**基础设施基础设施**
嵌嵌入器

```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"
  }
}
```

**:集装箱化**
Seq 单位

- :用于结构化伐木
- 普罗米修斯+格拉法纳
- :用于监测

**建筑结构概览**
我们的系统将组织成几个项目:

- 关键设计决定
- 1. 目标 1. 目标
- 基于 JSON 的节点定义
- JSON将界定节点,使其易于序列、版本和分享:

**2. 目标**
基于图表的执行

- 工作流程是定向环形图(DAGs)。
- 执行引擎将:
- 确定执行命令的实绩地形排序

## 在可能的情况下平行执行节点

### 根据节点产出处理有条件的分支分支

- 3 个
- 州持久性
- 将跟踪每个工作流程的执行:
- 工作流程实例状态(运行、完成、失败)

### 节点执行结果

- 排定工作流程的触发状态
- 执行历史和日志
- 4. 4个。
- 扩展性
- 节点系统将基于插件 :

### 共同业务内置节点

- 自定义节点类型可以注册
- 节点审定和计划执行
- 这系列里有什么来着?
- 第2部分:建筑和核心工作流程引擎
- 建立项目结构

### 建立核心工作流程模型(节点、工作流程、连接)

- 实施图形执行引擎
- 地形分类和依赖性分辨率
- 第3部分:建立视觉编辑
- 与 HTMX 和 Alpine.js 创建工作流程布局
- 拖放节点位置

## 视觉连接绘图

节节点配置面板面板

- 工作流程序列化
- 第4部分:营火一体化和国家管理
- 设置用于背景处理的挂牌火
- 实施APIPI投票节点
- 触发州管理

## 重试逻辑和错误处理

板板集成

第5部分:先进地物和部署

## 执行自定义节点

工作流程版本

测试战略测试战略

绩效优化