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

4.4 · 工作流管理(Workflow Management)

企业电子文档治理 · 本章是 Mayan EDMS DeepWiki 中文译文的独立章节页,保留原始链接、源码锚点、模块标签和章节层级。

项目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
模块标签
  • 界面与交互
  • 文档对象与元数据
  • 智能体运行时
  • 测试、发布与运维
  • 工作流与编排

中文译文

工作流管理(中文译文)

原始 DeepWiki 页面:https://deepwiki.com/mayan-edms/Mayan-EDMS/4.4-workflow-management
翻译时间:2026-05-27T08:44:23.768Z
翻译模型:deepseek-chat
原文字符数:11947
项目:Mayan EDMS (mayan-edms)

---

工作流管理

相关源文件

以下文件被用作生成此 Wiki 页面的上下文:

  • 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 应用构建,为文档提供状态机实现。该架构将工作流模板(定义)与工作流实例(运行时执行)分离开来。

graph TB
    subgraph "模板层"
        Workflow["工作流<br/>(模板定义)"]
        WorkflowState["工作流状态<br/>(状态定义)"]
        WorkflowTransition["工作流转换<br/>(转换规则)"]
        WorkflowStateAction["工作流状态动作<br/>(动作定义)"]
    end

    subgraph "运行时层"
        WorkflowInstance["工作流实例<br/>(文档执行)"]
        WorkflowInstanceLogEntry["工作流实例日志条目<br/>(审计追踪)"]
        Document["文档<br/>(目标对象)"]
    end

    subgraph "支持组件"
        WorkflowAction["工作流动作<br/>(动作基类)"]
        DocumentStateHelper["文档状态助手<br/>(文档集成)"]
        WorkflowRuntimeProxy["工作流运行时代理<br/>(监控)"]
    end

    Workflow --> WorkflowState
    Workflow --> WorkflowTransition
    WorkflowState --> WorkflowStateAction
    WorkflowTransition --> WorkflowTransitionField["工作流转换字段"]
    WorkflowTransition --> WorkflowTransitionTriggerEvent["工作流转换触发事件"]

    Workflow --> WorkflowInstance
    WorkflowInstance --> Document
    WorkflowInstance --> WorkflowInstanceLogEntry
    WorkflowInstance --> WorkflowState

    WorkflowStateAction --> WorkflowAction
    Document --> DocumentStateHelper
    Workflow --> WorkflowRuntimeProxy

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

工作流模板与实例

工作流模板

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

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

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

  • 当前状态
  • 通过 WorkflowInstanceLogEntry 记录的转换历史
  • 运行时上下文数据
  • 用户交互和评论
graph LR
    subgraph "模板空间"
        WT["工作流模板<br/>workflow_template_create"]
        WS1["初始状态<br/>workflow_template_state_create"]
        WS2["审核状态"]
        WS3["最终状态"]
        WTR1["提交转换<br/>workflow_template_transition_create"]
        WTR2["批准转换"]
    end

    subgraph "运行时空间"
        DOC["文档"]
        WI["工作流实例<br/>workflow_instance_detail"]
        LOG1["日志条目:已创建"]
        LOG2["日志条目:已转换"]
        CURR["当前状态:审核"]
    end

    WT --> WI
    WS1 --> CURR
    DOC --> WI
    WI --> LOG1
    WI --> LOG2
    WI --> CURR

    WS1 --> WTR1 --> WS2
    WS2 --> WTR2 --> WS3

来源: 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 的基于模板的逻辑
  • 字段:在转换执行期间收集的数据
  • 触发器:自动执行转换的事件
stateDiagram-v2
    [*] --> 草稿: "document_create"
    草稿 --> 审核: "submit_transition<br/>condition: document.label != ''"
    审核 --> 已批准: "approve_transition<br/>trigger: user_action"
    审核 --> 已拒绝: "reject_transition<br/>action: send_notification"
    已批准 --> [*]
    已拒绝 --> 草稿: "revise_transition<br/>field: revision_comment"

    state 草稿 {
        action1: "WorkflowStateAction<br/>document_properties_edit"
    }

    state 审核 {
        escalation1: "WorkflowStateEscalation<br/>auto_approve_after_7days"
    }

来源: 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 请求
动作执行框架
graph TD
    WS["WorkflowState<br/>initial=true"]
    WSA["WorkflowStateAction<br/>when=WORKFLOW_ACTION_ON_ENTRY"]
    WA["WorkflowAction.execute()"]

    subgraph "动作类型"
        DPE["DocumentPropertiesEditAction<br/>render_field()"]
        DWL["DocumentWorkflowLaunchAction<br/>task_launch_workflow_for"]
        HTTP["HTTPAction<br/>requests.request()"]
        TAG["AttachTagAction<br/>tag.attach_to()"]
    end

    WS --> WSA
    WSA --> WA
    WA --> DPE
    WA --> DWL
    WA --> HTTP
    WA --> TAG

    DPE --> CTX["上下文:<br/>document, workflow_instance"]
    DWL --> TASK["Celery 任务"]
    HTTP --> EXT["外部系统"]
    TAG --> PERM["ACL 检查"]

来源: 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