自动将用户分配给任务(Viewflow、Django)
Assign user to tasks automatically (Viewflow, Django)
我正在使用 Viewflow/Django 并尝试分配由动态节点创建的任务。
我在 customnode 中使用相同的 nodes.py
。
但是,我需要根据MOCTask model
(受让人)中的信息自动分配每个新任务。
但是任务不允许使用除特定用户对象以外的任何对象进行分配,而且我无权访问 MOCTask
对象(它们通过外键与 MOC 相关,通过MOCProcess
的外键,流本身)。
我正在尝试的代码 (flows.py):
...
split_on_task_assignment = (
DynamicSplit(lambda p: MOCTask.objects.filter(MOC=p.MOC).count())
.IfNone(this.end)
.Next(this.task_completion)
)
task_completion = (
flow.View(views.TaskCompletion)
.Permission('MOC.is_MOC_actor')
.Assign(this.assign_actors)
.Next(this.join_on_task_completion)
)
...
def assign_actors(self, activation):
task = MOCTask.objects.filter(MOC=activation.process.MOC, assigned=False).first()
task.assigned = True
task.save()
return User.objects.filter(email=task.assignee).first()
但是,我无法在分配块中放置 this
引用,所以我不确定如何进行。
有什么想法吗?
创建后续任务时可以在DynamicSplitActivation
内部分配用户
def activate_next(self):
if self._split_count:
token_source = Token.split_token_source(
self.task.token, self.task.pk)
for _ in range(self._split_count):
activation = self.flow_task._next.activate(
prev_activation=self, token=next(token_source))
activation.activate(..a user..)
我正在使用 Viewflow/Django 并尝试分配由动态节点创建的任务。
我在 customnode 中使用相同的 nodes.py
。
但是,我需要根据MOCTask model
(受让人)中的信息自动分配每个新任务。
但是任务不允许使用除特定用户对象以外的任何对象进行分配,而且我无权访问 MOCTask
对象(它们通过外键与 MOC 相关,通过MOCProcess
的外键,流本身)。
我正在尝试的代码 (flows.py):
...
split_on_task_assignment = (
DynamicSplit(lambda p: MOCTask.objects.filter(MOC=p.MOC).count())
.IfNone(this.end)
.Next(this.task_completion)
)
task_completion = (
flow.View(views.TaskCompletion)
.Permission('MOC.is_MOC_actor')
.Assign(this.assign_actors)
.Next(this.join_on_task_completion)
)
...
def assign_actors(self, activation):
task = MOCTask.objects.filter(MOC=activation.process.MOC, assigned=False).first()
task.assigned = True
task.save()
return User.objects.filter(email=task.assignee).first()
但是,我无法在分配块中放置 this
引用,所以我不确定如何进行。
有什么想法吗?
创建后续任务时可以在DynamicSplitActivation
内部分配用户
def activate_next(self):
if self._split_count:
token_source = Token.split_token_source(
self.task.token, self.task.pk)
for _ in range(self._split_count):
activation = self.flow_task._next.activate(
prev_activation=self, token=next(token_source))
activation.activate(..a user..)