agentic_huge_data_base / wiki
页面 Mayan EDMS · 3 核心架构·DeepWiki 中文全文译文

3 · 核心架构(Core Architecture)

企业电子文档治理 · 聚焦本章的模块关系、源码依据与实现要点。

项目Mayan EDMS 章节3 状态全文译文 模块文档对象与元数据、工作流与编排、界面与交互、系统架构
源码线索
  • mayan/apps/common/api_views.py
  • mayan/apps/common/apps.py
  • mayan/apps/common/classes.py
  • mayan/apps/common/forms.py
  • mayan/apps/common/links.py
  • mayan/apps/common/literals.py
  • mayan/apps/common/serializers.py
  • mayan/apps/common/settings.py
  • mayan/apps/common/tests/mixins.py
  • mayan/apps/common/tests/test_api.py
模块标签
  • 文档对象与元数据
  • 工作流与编排
  • 界面与交互
  • 系统架构
  • 接口与服务契约

章节正文

核心架构

核心架构

相关源文件

本章引用的主要源码文件:

  • mayan/apps/common/api_views.py
  • mayan/apps/common/apps.py
  • mayan/apps/common/classes.py
  • mayan/apps/common/forms.py
  • mayan/apps/common/links.py
  • mayan/apps/common/literals.py
  • mayan/apps/common/serializers.py
  • mayan/apps/common/settings.py
  • mayan/apps/common/tests/mixins.py
  • mayan/apps/common/tests/test_api.py
  • mayan/apps/common/tests/test_links.py
  • mayan/apps/common/urls.py
  • mayan/apps/common/views.py
  • mayan/apps/django_gpg/serializers.py
  • mayan/apps/document_parsing/serializers.py
  • mayan/apps/documents/apps.py
  • mayan/apps/documents/icons.py
  • mayan/apps/documents/links/document_version_links.py
  • mayan/apps/documents/managers.py
  • mayan/apps/documents/permissions.py
  • mayan/apps/documents/tasks.py
  • mayan/apps/documents/urls.py
  • mayan/apps/documents/views/document_type_views.py
  • mayan/apps/documents/views/document_version_views.py
  • mayan/apps/documents/views/document_views.py
  • mayan/apps/events/api_views.py
  • mayan/apps/events/tests/test_api.py
  • mayan/settings/base.py

目的与范围

本文档概述了 Mayan EDMS 的基础架构,涵盖了构成系统基础的核心框架、设计模式以及组件之间的关系。本文档重点介绍了基于 Django 的应用框架、自定义的 MayanAppConfig 系统,以及主要子系统如何集成在一起。

有关特定子系统的详细信息,请参阅:

系统基础

Mayan EDMS 基于 Django 3.2+ 构建,并进行了大量的自定义和扩展。该系统采用模块化应用架构,每个功能区域都实现为一个 Django 应用,并通过 MayanAppConfig 框架增强了功能。

Django 设置与应用加载

系统的基础在主设置文件中建立,该文件定义了应用栈和核心配置:

Mayan EDMS · Django 设置与应用加载 · 图 1
Mayan EDMS · Django 设置与应用加载 · 图 1

Django 应用栈概览

来源:mayan/settings/base.py:43-133

应用加载遵循特定顺序,以确保正确的初始化依赖关系。核心基础设施应用(如 eventsappearance)首先加载,然后是认证和权限系统,最后是文档特定功能。

MayanAppConfig 框架

MayanAppConfig 类扩展了 Django 的 AppConfig,以提供增强的应用生命周期管理、URL 路由和组件注册功能:

Mayan EDMS · MayanAppConfig 框架 · 图 2
Mayan EDMS · MayanAppConfig 框架 · 图 2

MayanAppConfig 组件注册流程

来源:mayan/apps/common/apps.py:27-121, mayan/apps/documents/apps.py:209-1216

每个应用的 ready() 方法会执行大量的组件注册,包括模型、事件、权限、菜单链接、仪表盘小部件和导航元素。

核心系统组件

智能设置系统

设置系统提供动态配置管理,支持环境变量和命名空间组织:

Mayan EDMS · 智能设置系统 · 图 3
Mayan EDMS · 智能设置系统 · 图 3

配置管理架构

来源:mayan/settings/base.py:18-28, mayan/apps/common/settings.py:15-97

文档管理核心

文档管理系统围绕几个关键模型层级展开:

Mayan EDMS · 文档管理核心 · 图 4
Mayan EDMS · 文档管理核心 · 图 4

核心文档模型关系

来源:mayan/apps/documents/managers.py:20-322, mayan/apps/documents/apps.py:221-252

任务处理与后台作业

系统使用 Celery 进行异步任务处理,后端支持 Redis 或 RabbitMQ:

Mayan EDMS · 任务处理与后台作业 · 图 5
Mayan EDMS · 任务处理与后台作业 · 图 5

异步任务处理架构

来源:mayan/apps/documents/tasks.py:19-333, mayan/settings/base.py:285-301

请求处理流程

系统通过 Django 的 URL 路由(带有自定义扩展)处理 Web 界面和 API 请求:

Mayan EDMS · 请求处理流程 · 图 6
Mayan EDMS · 请求处理流程 · 图 6

请求处理与响应流程

来源:mayan/apps/documents/urls.py:95-689, mayan/apps/documents/views/document_views.py:36-211

导航与菜单系统

用户界面提供了一个动态导航系统,包含上下文感知菜单:

组件用途关键类
菜单系统层级导航结构menu_main, menu_setup, menu_tools
链接注册表基于权限的动态链接生成Link, SourceColumn
AJAX 导航部分页面更新AjaxRedirect 中间件
仪表盘小部件可定制的仪表盘组件DashboardWidget 子类

来源:mayan/apps/common/apps.py:146-153, mayan/apps/documents/apps.py:750-1216

集成模式

模型注册与事件

系统使用集中式注册模式来处理横切关注点:

Mayan EDMS · 模型注册与事件 · 图 7
Mayan EDMS · 模型注册与事件 · 图 7

横切组件注册模式

来源:mayan/apps/documents/apps.py:290-518, mayan/apps/common/classes.py:14-342

数据库与查询优化

系统通过管理器自定义和预取策略实现查询优化:

管理器类型用途关键特性
ValidDocumentManager过滤非回收站文档自动回收站过滤
ModelQueryFields查询优化预取和 select_related 提示
TrashCanManager回收站文档访问已删除项目的独立查询集

来源:mayan/apps/documents/managers.py:189-322, mayan/apps/documents/apps.py:519-554

该架构为文档管理提供了一个可扩展的基础,具有清晰的关注点分离、广泛的定制能力以及强大的集成模式,能够支持企业文档管理所需的复杂工作流。