gpt4 book ai didi

python - 如何跟踪线性工作流程中的步骤

转载 作者:行者123 更新时间:2023-12-01 07:19:55 25 4
gpt4 key购买 nike

我有一个工作流程中任务的模型。该任务有一个 ManyToMany 字段,允许用户添加可以批准任务中每个步骤的批准者。

class Task(models.Model):
approvers = models.ManyToManyField(
get_user_model(),
through='TaskStep'
)

我正在使用 OrderedModel作为中间模型来跟踪每个批准的顺序,目的是在签署任务时将任务从一个批准者线性传递到下一个批准者:

class TaskStep(OrderedModel):

approver = models.ForeignKey(
get_user_model(), null=True, on_delete=models.SET_NULL
)
task = models.ForeignKey(Task, null=True, on_delete=models.SET_NULL)
order_with_respect_to = 'task'
status = models.BooleanField()

假设每个步骤只是来自 approvers 字段中每个审批者的 True/False 确认,那么跟踪任务审批所在的 TaskStep 的最简单方法是什么?

例如我是否向 Task 添加一个字段(如 Step),并尝试通过 __init__approvers ManyToMany 字段转换为列表?

用例示例:

  • 用户定义了一个任务,其中“ManyToMany”字段中列出了 4 个审批者
  • 这些审批者的顺序是通过 OrderedModel 设置的。
    • 例如审批人 1 --> 审批人 2 --> 审批人 3 --> 审批人 4
  • 工作流程然后按照定义的顺序将任务依次传递给每个审批者。每个审批者的 TaskStep 状态为 False,直到他们确认并将其设置为 True

我需要一种方法来跟踪任务正在进行的步骤,以便我可以将其定向给适当的审批者(用户)。

编辑:

具体来说,我需要一个解决方案,以便我可以为给定用户创建一个查询,该查询返回分配给他们作为当前(事件)步骤的所有任务。我认为最好的方法可能是在任务模型中创建一个字段并更新它以返回与该步骤关联的用户,但我不确定如何执行此操作。

最佳答案

我们可以获得 status=False第一个任务与:

next_step = TaskStep.objects.filter(<b>task=<i>my_task</i>, status=False</b>).first()

或通过 my_task 本身:

<i>my_task</i>.taskstep_set.filter(<b>status=False</b>).first()

OrderedModel有一个 order字段,并按该字段排序,因此 .first()将返回顺序中的第一个。它将返回 None如果没有的话 TaskStep存在。

这个TaskStep因此可以引用下一个需要批准的批准者。

关于python - 如何跟踪线性工作流程中的步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57756698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com