Python 如何跟踪线性工作流中的步骤
我有一个工作流中任务的模型。该任务有一个Python 如何跟踪线性工作流中的步骤,python,django,django-models,Python,Django,Django Models,我有一个工作流中任务的模型。该任务有一个ManyToMany字段,允许用户添加可以批准任务中每个步骤的批准者 class Task(models.Model): approvers = models.ManyToManyField( get_user_model(), through='TaskStep' ) 我使用了一个作为中介的模型来跟踪每个批准的顺序,目的是在一个批准者签署任务时,将任务线性地从一个批准者传递到下一个批准者: class T
ManyToMany
字段,允许用户添加可以批准任务中每个步骤的批准者
class Task(models.Model):
approvers = models.ManyToManyField(
get_user_model(),
through='TaskStep'
)
我使用了一个作为中介的模型来跟踪每个批准的顺序,目的是在一个批准者签署任务时,将任务线性地从一个批准者传递到下一个批准者:
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
字段中的一个对/错确认,那么跟踪任务审批的任务步骤最简单的方法是什么
例如,我是否向任务
添加一个字段,如步骤
,并尝试通过\uu初始化
将审批人
多个字段转换为列表
用例示例:
- 用户定义了一个任务,在ManyToMany字段中列出了4个审批人
- 这些审批人的顺序通过OrderedModel设置。
- 例如,批准人1-->批准人2-->批准人3-->批准人4
- 然后,工作流按照定义的顺序依次将任务传递给每个审批人。每个审批人的
状态为TaskStep
,直到他们确认并将其设置为False
True
status=False
:
next_step = TaskStep.objects.filter(task=my_task, status=False).first()
OrderedModel
有一个order
字段,并按该字段排序,因此.first()
将返回订单中的第一个字段。如果不存在这样的TaskStep
,它将返回None
因此,此
任务步骤
引用了需要批准的下一个审批人。由于它是M2M型号,一个任务
可以有零个、一个或多个任务步骤
。对于任务
,状态
为假
,是否总是(最多)有一个任务步骤
,可以有零个、一个或多个审批人(任务步骤)。所有步骤都是错误的,直到它们被批准,然后任务完成。请参见编辑用例示例。谢谢。有没有办法针对模型记录本身保存此值?例如,我想为有活动任务的用户创建一个收件箱,因此需要反向查找他们在当前步骤中的位置。例如,我在想,如何对用户运行查询以显示他们在当前步骤中的所有任务(审批者)?@alias51:hmm。。。这是一个更难的问题。这可能需要一个子查询。是否最好在Task
中为步骤创建IntegerField
,然后在init上设置当前步骤/用户?
my_task.taskstep_set.filter(status=False).first()