假设我们有 3 个角色,经理、管理员、超级管理员。
事务的顺序应该像 t1->t2->t3->t4 那样发生。
如果任何员工属于经理角色,他的交易应该发生在 t1->t3->t2
如果任何员工属于管理员角色,他的交易应该发生在 t1->t2->t4
如果任何员工属于 Supreadmin 角色,他的交易应该发生在 t1->t2
在 django 中如何定义这个动态工作流?因此,应员工的要求,此过程应根据角色进行。
先感谢您。
假设我们有 3 个角色,经理、管理员、超级管理员。
事务的顺序应该像 t1->t2->t3->t4 那样发生。
如果任何员工属于经理角色,他的交易应该发生在 t1->t3->t2
如果任何员工属于管理员角色,他的交易应该发生在 t1->t2->t4
如果任何员工属于 Supreadmin 角色,他的交易应该发生在 t1->t2
在 django 中如何定义这个动态工作流?因此,应员工的要求,此过程应根据角色进行。
先感谢您。
通常,该示例是关于非动态工作流的。所有节点实例计数在工作流定义时都是已知的。
如果您从流程建模方面考虑流程,可视化表示和解释给非技术用户,流程将被建模为与文本规范相距不远的 BPMN 图:
所以这可以直接翻译成 viewflow 类定义,其中相同任务的 django 视图可以在不同的流节点上重用,例如:
class MyFlow(Flow):
start = flow.Start(ViewT1).Next(check_role)
check_role = (
flow.Switch()
.Case(this.user_t2, cond=lambda act: act.process.created_by.role=='USER')
.Case(this.admin_t2, cond=lambda act: act.process.created_by.role=='ADMIN')
...
)
user_t2 = flow.View(ViewT2).Next(this.user_t3)
admin_t2 = flow.View(ViewT2).Next(this.admin_t4)
...
能够让代码看起来与文本和视觉规范非常相似,这是 viewflow 库的主要价值。在某些情况下,您需要创建自己的流节点。在视图流示例中,如果节点实例计数在设计时未知,您可以找到一个动态拆分节点,该节点显示如何存在。