agentic_huge_data_base / wiki
页面 Mayan EDMS · 4.4 工作流管理·DeepWiki 中文全文译文

4.4 · 工作流管理(Workflow Management)

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

项目Mayan EDMS 章节4.4 状态全文译文 模块界面与交互、文档对象与元数据、智能体运行时、测试、发布与运维
源码线索
  • mayan/apps/document_states/__init__.py
  • mayan/apps/document_states/apps.py
  • mayan/apps/document_states/classes.py
  • mayan/apps/document_states/forms.py
  • mayan/apps/document_states/icons.py
  • mayan/apps/document_states/links.py
  • mayan/apps/document_states/tests/literals.py
  • mayan/apps/document_states/tests/test_workflow_actions.py
  • mayan/apps/document_states/tests/test_workflow_views.py
  • mayan/apps/document_states/urls.py
模块标签
  • 界面与交互
  • 文档对象与元数据
  • 智能体运行时
  • 测试、发布与运维
  • 工作流与编排

章节正文

工作流管理

工作流管理

相关源文件

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

  • mayan/apps/document_states/__init__.py
  • mayan/apps/document_states/apps.py
  • mayan/apps/document_states/classes.py
  • mayan/apps/document_states/forms.py
  • mayan/apps/document_states/icons.py
  • mayan/apps/document_states/links.py
  • mayan/apps/document_states/tests/literals.py
  • mayan/apps/document_states/tests/test_workflow_actions.py
  • mayan/apps/document_states/tests/test_workflow_views.py
  • mayan/apps/document_states/urls.py
  • mayan/apps/document_states/views/__init__.py
  • mayan/apps/document_states/views/workflow_template_state_views.py
  • mayan/apps/document_states/views/workflow_template_transition_views.py
  • mayan/apps/document_states/views/workflow_template_views.py
  • mayan/apps/document_states/workflow_actions.py
  • mayan/apps/mailer/mailers.py
  • mayan/apps/tags/workflow_actions.py

Mayan EDMS 的工作流管理系统为文档提供了自动化业务流程管理。它支持创建工作流模板,用于定义状态、转换以及文档可以流转的自动化操作。该系统涵盖了从模板定义到运行时执行和监控的完整生命周期。

关于通过元数据和索引进行文档组织的信息,请参阅文档组织。有关 REST API 实现的详细信息,请参阅 REST API 架构

核心架构

工作流系统围绕 document_states 应用构建,为文档提供状态机实现。该架构将工作流模板(定义)与工作流实例(运行时执行)分离开来。

Mayan EDMS · 核心架构 · 图 1
Mayan EDMS · 核心架构 · 图 1

来源: mayan/apps/document_states/apps.py:89-115mayan/apps/document_states/classes.py:17-26

工作流模板与实例

工作流模板

工作流模板定义了业务流程的蓝图。每个模板(Workflow 模型)包含:

  • 状态:流程中定义的阶段(WorkflowState
  • 转换:在状态之间移动的规则(WorkflowTransition
  • 动作:由状态变更触发的自动化行为(WorkflowStateAction
  • 文档类型关联:哪些文档类型可以使用此工作流
工作流实例

当文档进入工作流时,会创建一个 WorkflowInstance 来跟踪文档在模板中的进度。每个实例维护:

  • 当前状态
  • 通过 WorkflowInstanceLogEntry 记录的转换历史
  • 运行时上下文数据
  • 用户交互和评论
Mayan EDMS · 工作流实例 · 图 2
Mayan EDMS · 工作流实例 · 图 2

来源: mayan/apps/document_states/apps.py:102-106mayan/apps/document_states/urls.py:74-95

状态与转换

工作流状态

状态代表业务流程中的离散阶段。每个 WorkflowState 具有:

属性描述代码引用
label人类可读的名称mayan/apps/document_states/forms.py:121
initial是否为起始状态mayan/apps/document_states/forms.py:121
completion完成百分比(0-100)mayan/apps/document_states/forms.py:121
转换

转换(WorkflowTransition)定义了文档如何在状态之间移动,并包括:

  • 源状态和目标状态:正在定义的状态变更
  • 条件:必须评估为 true 的基于模板的逻辑
  • 字段:在转换执行期间收集的数据
  • 触发器:自动执行转换的事件
Mayan EDMS · 转换 · 图 3
Mayan EDMS · 转换 · 图 3

来源: mayan/apps/document_states/forms.py:125-149mayan/apps/document_states/views/workflow_template_transition_views.py:40-81

工作流动作

工作流动作是在文档进入或离开状态时执行的自动化行为。该系统通过 WorkflowAction 基类提供可插拔的架构。

内置动作
动作类用途关键方法
DocumentPropertiesEditAction修改文档元数据execute() 带模板渲染
DocumentWorkflowLaunchAction启动额外的工作流异步任务启动
HTTPAction外部系统集成带认证的 HTTP 请求
动作执行框架
Mayan EDMS · 动作执行框架 · 图 4
Mayan EDMS · 动作执行框架 · 图 4

来源: mayan/apps/document_states/workflow_actions.py:22-308mayan/apps/document_states/classes.py:27-135mayan/apps/tags/workflow_actions.py:15-74

事件系统与触发器

工作流系统与 Mayan 的事件系统集成,以提供自动转换触发和审计追踪。

触发事件

当特定事件发生时,转换可以自动执行:

  • 文档创建(signal_post_document_type_change
  • 用户操作(handler_trigger_transition
  • 基于时间的升级(WorkflowStateEscalation
  • 外部 API 调用
事件处理器
处理器函数触发器用途
handler_launch_workflow_on_create文档创建自动启动工作流
handler_launch_workflow_on_type_change文档类型变更重新评估工作流
handler_trigger_transition动作事件执行自动转换

来源: mayan/apps/document_states/apps.py:675-692mayan/apps/document_states/views/workflow_template_transition_views.py:327-402

管理界面

工作流系统为模板管理和运行时监控提供了全面的 Web 和 API 接口。

模板管理 URL
URL 模式视图类用途
workflow_templates/WorkflowTemplateListView列出所有模板
workflow_templates/create/WorkflowTemplateCreateView创建新模板
workflow_templates/{id}/states/WorkflowTemplateStateListView管理状态
workflow_templates/{id}/transitions/WorkflowTemplateTransitionListView管理转换
运行时监控

系统提供运行时代理用于监控活跃的工作流:

  • WorkflowRuntimeProxy:工作流执行的聚合视图
  • WorkflowStateRuntimeProxy:特定状态的文档计数
  • WorkflowInstanceLogEntry:详细的审计追踪

来源: mayan/apps/document_states/urls.py:194-249mayan/apps/document_states/views/workflow_proxy_views.py:38-117

集成点

文档集成

文档通过 DocumentStateHelper 类与工作流集成,该类提供:

# 通过 apps.py 添加到 Document 模型
Document.add_to_class(name='workflow', value=DocumentStateHelper.constructor)

这启用了如下访问模式:

  • document.workflow.<workflow_internal_name>.get_current_state
  • document.workflows.all() - 文档的所有工作流实例
API 端点
端点模式用途
/api/workflow_templates/模板 CRUD 操作
/api/documents/{id}/workflow_instances/实例管理
/api/workflow_templates/{id}/states/状态配置
/api/workflow_templates/{id}/transitions/转换管理
权限系统

工作流通过以下方式与 Mayan 的 ACL 系统集成:

  • permission_workflow_template_view - 查看模板
  • permission_workflow_template_edit - 修改模板
  • permission_workflow_tools - 执行工作流
  • permission_workflow_instance_transition - 执行转换

来源: mayan/apps/document_states/apps.py:116-118mayan/apps/document_states/urls.py:320-439mayan/apps/document_states/permissions.py