1

假设我们有 3 个角色,经理、管理员、超级管理员。

事务的顺序应该像 t1->t2->t3->t4 那样发生。

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

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

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

在 django 中如何定义这个动态工作流?因此,应员工的要求,此过程应根据角色进行。

先感谢您。

4

1 回答 1

2

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

如果您从流程建模方面考虑流程,可视化表示和解释给非技术用户,流程将被建模为与文本规范相距不远的 BPMN 图:

viewflow 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 库的主要价值。在某些情况下,您需要创建自己的流节点。在视图流示例中,如果节点实例计数在设计时未知,您可以找到一个动态拆分节点,该节点显示如何存在。

于 2017-05-31T02:50:35.163 回答