You need to enable JavaScript to run this app. Material前端可正常交互工作流,如何通过Python代码设置View关联模型字段并推进流程?
优惠活动
大模型
产品
解决方案
定价
更多

Material前端可正常交互工作流,如何通过Python代码设置View关联模型字段并推进流程?

编程式推进Flow View节点流程的操作指南

流程卡壳的核心原因

Material前端的正常流转逻辑是:用户提交绑定的Model表单 → 框架自动持久化表单关联的模型字段 → 校验权限后触发任务完成方法 → 按节点定义的Next规则跳转后续流程。
纯代码操作时仅完成了任务激活、分配的操作,缺失了 绑定模型字段持久化、触发任务完成流转 两个关键环节,因此流程无法推进。

两个关联字段的设置规则

两个字段是View节点绑定的业务模型上的自定义属性,不存在框架特殊要求,按业务规则赋值即可:

  • operator_report:长度限制为150字符,直接传入对应业务场景的文本内容即可,比如上报说明、操作记录等字符串值。
  • operator_accept:结合后续check_operator_accept节点的命名,该字段是流程分支判断的核心依据,按业务判断逻辑传入对应布尔值即可,比如确认接收设为True、驳回设为False。

完整的代码实现流程

在你已有的任务分配逻辑基础上,补充模型赋值、流程触发的相关代码:

  1. 获取当前操作的任务对象,完成激活与分配
    # 替换原列表查询的写法,直接获取单条任务对象即可
    current_task = Task.objects.get(id=self.kwargs['task_id'])
    current_task.activate().assign(self.request.user)
    
  2. 定位View节点绑定的流程模型实例,完成字段赋值与持久化
    # 通过当前任务关联的流程实例,获取reporting节点绑定的业务模型对象
    reporting_instance = current_task.process.reporting
    # 为两个自定义字段赋值
    reporting_instance.operator_report = "填入符合长度要求的上报内容文本"
    reporting_instance.operator_accept = True  # 按业务逻辑设置布尔值
    reporting_instance.save()
    
  3. 触发任务完成操作,推进后续流程
    # 调用任务的complete方法,框架会自动按Next规则跳转到check_operator_accept节点
    current_task.complete()
    

常见操作注意事项

  • 不要将两个自定义字段的值存在Task对象上,Flow框架默认将View节点的表单字段存储在流程关联的业务模型表中,直接修改Task表字段不会被流程逻辑识别。
  • 任务必须处于激活状态下调用complete()方法才能正常流转,未激活、未分配权限的任务触发完成操作会触发框架内置的状态校验异常。
  • 若后续的check_operator_accept是条件分支节点,需确保operator_accept的取值和分支判断的逻辑完全匹配,避免流程跳转到不符合预期的分支路径。

内容的提问来源于stack exchange,提问作者Fabio Vitello

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.09 23:36:10