Material前端可正常交互工作流,如何通过Python代码设置View关联模型字段并推进流程?
编程式推进Flow View节点流程的操作指南
流程卡壳的核心原因
Material前端的正常流转逻辑是:用户提交绑定的Model表单 → 框架自动持久化表单关联的模型字段 → 校验权限后触发任务完成方法 → 按节点定义的Next规则跳转后续流程。
纯代码操作时仅完成了任务激活、分配的操作,缺失了 绑定模型字段持久化、触发任务完成流转 两个关键环节,因此流程无法推进。
两个关联字段的设置规则
两个字段是View节点绑定的业务模型上的自定义属性,不存在框架特殊要求,按业务规则赋值即可:
operator_report:长度限制为150字符,直接传入对应业务场景的文本内容即可,比如上报说明、操作记录等字符串值。operator_accept:结合后续check_operator_accept节点的命名,该字段是流程分支判断的核心依据,按业务判断逻辑传入对应布尔值即可,比如确认接收设为True、驳回设为False。
完整的代码实现流程
在你已有的任务分配逻辑基础上,补充模型赋值、流程触发的相关代码:
- 获取当前操作的任务对象,完成激活与分配
# 替换原列表查询的写法,直接获取单条任务对象即可 current_task = Task.objects.get(id=self.kwargs['task_id']) current_task.activate().assign(self.request.user) - 定位View节点绑定的流程模型实例,完成字段赋值与持久化
# 通过当前任务关联的流程实例,获取reporting节点绑定的业务模型对象 reporting_instance = current_task.process.reporting # 为两个自定义字段赋值 reporting_instance.operator_report = "填入符合长度要求的上报内容文本" reporting_instance.operator_accept = True # 按业务逻辑设置布尔值 reporting_instance.save() - 触发任务完成操作,推进后续流程
# 调用任务的complete方法,框架会自动按Next规则跳转到check_operator_accept节点 current_task.complete()
常见操作注意事项
- 不要将两个自定义字段的值存在Task对象上,Flow框架默认将View节点的表单字段存储在流程关联的业务模型表中,直接修改Task表字段不会被流程逻辑识别。
- 任务必须处于激活状态下调用
complete()方法才能正常流转,未激活、未分配权限的任务触发完成操作会触发框架内置的状态校验异常。 - 若后续的
check_operator_accept是条件分支节点,需确保operator_accept的取值和分支判断的逻辑完全匹配,避免流程跳转到不符合预期的分支路径。
内容的提问来源于stack exchange,提问作者Fabio Vitello
相关产品推荐
相关产品推荐

