让我们考虑一下3个角色,Manager,Admin,Superadmin。
交易顺序应该像t1-> t2-> t3-> t4。
如果任何员工属于经理角色,他的交易应该发生在t1-> t3-> t2
如果任何员工属于Admin角色,他的交易应该发生在t1-> t2-> t4
如果任何员工属于Supreadmin角色,他的交易应该发生 T1-> T2
在django中如何定义这个动态工作流程?所以根据员工的要求,这个过程应该遵循那里的角色。
提前谢谢。
答案 0 :(得分:2)
通常,该示例与非动态工作流程有关。所有节点实例计数在工作流定义时都是已知的。
如果您考虑流程建模方面的流程,可视化表示和对非技术用户的解释,那么流程将被建模为以下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库的主要价值。要在某些情况下执行此操作,您需要创建自己的流节点。在视图流示例中,如果节点实例计数在设计时未知,您可以找到显示如何的dynamic split node。