# 📘 Documentation: Flow Visualization Framework Based on .NET 8
## 🧩 Project Overview
This project is a **flow visualization framework** based on **.NET 8**.
- All runtime dependencies, environment, and editor are **open-source**
- Supports **secondary development**, suitable for scenarios such as embedded systems, industrial control, and data flow automation
📺 **Bilibili Video Updates**: Project-related videos are periodically updated. Visit [my Bilibili profile](https://space.bilibili.com/33526379) for more.
---
## 🗓️ Planned Tasks (Updated July 28, 2025)
- ✅ Improving **"flowchart to C# code"** feature
- 🔥 Designing **hot update mechanism**
- 🔧 Designing **remote control logic** for multiple clients
---
## 🖌️ How to Draw a Flow?
### 🛠️ Preparation
1. Compile the `Serein.Workbench` project to ensure the workbench is operational
2. Create a class library project and reference `Serein.Library` (can also be acquired via Negut)
### ✨ Start Drawing
1. In the class library, add a class and mark it with the `[DynamicFlow]` attribute
2. Mark methods with the `[NodeAction]` attribute
3. Compile the project and drag the generated DLL into the left "Library" panel of the workbench
4. The workbench will automatically parse and load all node methods
### 🎨 Draw Node Flows
1. Create a new canvas in the workbench
2. Drag methods from the left library panel onto the canvas to generate nodes
3. Drag between node connectors to create links, representing data/control flow
4. Repeat to build a complete flow
### ▶️ Run the Flow
- **Run from start node**:
- Set a node as "start node" → Click "Run" → Select "Run from current canvas"
adapter = new WpfUserControlAdapter(userControl, userControl);
});
return adapter;
public class WpfUserControlAdapter : IEmbeddedContent
{
private readonly UserControl userControl;
private readonly IFlowControl flowControl;
public WpfUserControlAdapter(UserControl userControl, IFlowControl flowControl)
{
this.userControl = userControl;
this.flowControl= flowControl;
}
public IFlowControl GetFlowControl()
{
return flowControl;
}
public object GetUserControl()
{
return userControl;
}
}
```
---
## ✅ Summary
- This framework provides flexible flow editing, execution, and extension capabilities
- Supports advanced features such as scripting, global data, and sub-flows
- Suitable for AGV scheduling, PLC automation, visual logic control, and more
---
> This documentation helps developers get started quickly and understand interface usage. For more information, refer to video demos or join the community discussion.