Skip to content

Component Interactions Matrix


Metadata:

  • Title: Component Interactions Matrix and Dependencies
  • Status: draft
  • Updated: 2024-09-28
  • Author: ColorVision Development Team

简介

本文档提供 ColorVision 系统中各模块间的交互矩阵,详细描述模块间的调用关系、事件传递、依赖关系和扩展点。

目录

  1. 模块交互矩阵
  2. 依赖关系图
  3. 事件传递链
  4. 接口扩展点

模块交互矩阵

主要模块交互表

ModuleCallsEventsDependsOnExtPointsDescription
ColorVision.UIEngine.Templates, Engine.ServicesUI.WindowLoaded, UI.MenuClickedEngine, Common, ThemesIMainWindowInitialized, IStatusBarProvider用户界面层
ColorVision.EngineDatabase, MQTT, TemplatesEngine.ServiceStarted, Engine.TemplateExecutedCore, DatabaseIEngineService, ITemplateEngine核心引擎层
Template.ManagerFlow.Engine, Algorithm.EngineTemplate.Created, Template.ExecutedEngine, FlowITemplate, ITemplateValidator模板管理系统
Flow.EngineMQTT.Service, Device.ServicesFlow.Started, Flow.Completed, Flow.ErrorEngine, MQTTIInitializerFlow, IFlowNode流程引擎
Plugin.ManagerEngine.Services, UI.ComponentsPlugin.Loaded, Plugin.InitializedUI, EngineIPlugin, IPluginHost插件管理器
Device.ServicesMQTT.Client, Hardware.DriversDevice.Connected, Device.StatusChangedEngine, MQTTIDevice, IDeviceDriver设备服务层
MQTT.ServiceNetwork.ClientMQTT.Connected, MQTT.MessageReceivedEngine, NetworkIMQTTClient, IMQTTHandlerMQTT 通信服务
Database.ServiceSqlSugar, Entity.ModelsDB.Connected, DB.QueryExecutedCore, EntityIRepository, IDataContext数据库服务
Algorithm.EngineOpenCV, CUDA.RuntimeAlgorithm.Started, Algorithm.CompletedCore, TemplatesIAlgorithm, IImageProcessor算法引擎
RBAC.ManagerDatabase.Service, UI.AuthUser.LoggedIn, Permission.ChangedDatabase, UIIAuthService, IRoleProvider权限管理

详细交互说明

UI 层交互

引擎层交互

依赖关系图

层次依赖结构

循环依赖检测

当前系统中需要注意的潜在循环依赖:

  • 无循环: UI → Engine → Database → Core
  • 无循环: Templates → FlowEngine → MQTT → Engine
  • ⚠️ 注意: Plugin.Manager ↔ Engine.Services (通过接口解耦)
  • ⚠️ 注意: UI.Components ↔ Engine.Templates (事件驱动)

事件传递链

核心事件流

事件类型分类

系统级事件

  • Application.Started
  • Application.Shutdown
  • Service.Connected
  • Service.Disconnected

业务级事件

  • Template.Created
  • Template.Executed
  • Algorithm.Started
  • Algorithm.Completed

设备级事件

  • Device.Connected
  • Device.Disconnected
  • Device.StatusChanged
  • Device.ErrorOccurred

用户界面事件

  • Window.Loaded
  • Menu.Clicked
  • Button.Pressed
  • Data.Changed

接口扩展点

主要扩展接口

接口名称触发时机线程上下文返回/约束常见错误
IMainWindowInitialized主窗口初始化完成后UI线程voidUI冻结、空引用
IStatusBarProvider状态栏刷新时UI线程StatusInfo界面更新失败
IFileMeta文件操作时工作线程FileMetadata文件访问权限
IPlugin插件生命周期插件线程bool (成功/失败)资源泄露
IEngineService引擎服务调用服务线程Task异步操作超时
ITemplate模板执行计算线程TemplateResult参数验证失败
IAlgorithm算法执行GPU/CPU线程AlgorithmResult内存不足
IDevice设备控制设备线程DeviceResponse通信超时
IMQTTHandlerMQTT消息处理网络线程void消息格式错误
IInitializerFlow流程初始化初始化线程Task初始化超时

扩展点实现示例

主窗口扩展点

csharp
public interface IMainWindowInitialized
{
    string Name { get; }
    int Order { get; }
    Task InitializeAsync(MainWindow mainWindow);
}

// 实现示例
public class CustomMenuInitializer : IMainWindowInitialized
{
    public string Name => "Custom Menu";
    public int Order => 100;
    
    public Task InitializeAsync(MainWindow mainWindow)
    {
        // 添加自定义菜单项
        var menuItem = new MenuItem { Header = "自定义功能" };
        mainWindow.MainMenu.Items.Add(menuItem);
        return Task.CompletedTask;
    }
}

算法扩展点

csharp
public interface IAlgorithm
{
    string AlgorithmId { get; }
    string Name { get; }
    AlgorithmResult Execute(AlgorithmParam param);
    Task\<AlgorithmResult\> ExecuteAsync(AlgorithmParam param);
}

// 实现示例
public class CustomAlgorithm : IAlgorithm
{
    public string AlgorithmId => "custom-detection";
    public string Name => "自定义检测算法";
    
    public AlgorithmResult Execute(AlgorithmParam param)
    {
        // 算法实现
        return new AlgorithmResult();
    }
    
    public async Task\<AlgorithmResult\> ExecuteAsync(AlgorithmParam param)
    {
        return await Task.Run(() => Execute(param));
    }
}

组件映射 JSON 结构

详细的组件映射数据已生成到 component-map.json 文件中,包含:

  • 所有模块的详细信息
  • 依赖关系映射
  • 接口定义和实现
  • 事件发布和订阅关系

JSON 结构示例

json
{
  "modules": {
    "ColorVision.UI": {
      "type": "PresentationLayer",
      "dependencies": ["ColorVision.Engine", "ColorVision.Common"],
      "provides": ["IMainWindow", "IUserInterface"],
      "consumes": ["IEngineService", "ITemplateManager"],
      "events": {
        "publishes": ["UI.WindowLoaded", "UI.MenuClicked"],
        "subscribes": ["Engine.ServiceStarted", "Template.ExecutionCompleted"]
      }
    }
  },
  "relationships": [
    {
      "from": "ColorVision.UI",
      "to": "ColorVision.Engine", 
      "type": "dependency",
      "nature": "calls"
    }
  ]
}

最后更新: 2024-09-28 | 状态: draft

Released under the MIT License.