如何确定一组模型的动态工作流程?

时间:2017-05-30 10:05:49

标签: django django-viewflow

让我们考虑一下3个角色,Manager,Admin,Superadmin。

交易顺序应该像t1-> t2-> t3-> t4。

如果任何员工属于经理角色,他的交易应该发生在t1-> t3-> t2

如果任何员工属于Admin角色,他的交易应该发生在t1-> t2-> t4

如果任何员工属于Supreadmin角色,他的交易应该发生 T1-> T2

在django中如何定义这个动态工作流程?所以根据员工的要求,这个过程应该遵循那里的角色。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

通常,该示例与非动态工作流程有关。所有节点实例计数在工作流定义时都是已知的。

如果您考虑流程建模方面的流程,可视化表示和对非技术用户的解释,那么流程将被建模为以下BPMN图表,而不是远离文本规范:

viewflow BPMN diargam

所以这可以直接转换为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库的主要价值。要在某些情况下执行此操作,您需要创建自己的流节点。在视图流示例中,如果节点实例计数在设计时未知,您可以找到显示如何的dynamic split node