从Django应用程序中分离业务工作流程

时间:2018-02-12 05:19:09

标签: python django django-viewflow

我有一个Django应用程序,我需要针对不同的输入遵循不同的工作流程。

我通过POST端点收到数据有效负载的输入参数。根据输入,我需要触发不同的函数,相应地处理数据,最后将其保存在数据存储中。

一种选择是编写if-else,但是随着代码的增长,编写if-else很难维护。

例如: -

If input1, then function1(), process1(), save1()

elif input2, then function2(), process2(), save2()

我已查看过Intellectdjango-viewflow和许多其他商业规则库,但不确定推荐的做法。

如果有人能为我提供一个虚拟示例或一个开源项目,通过它我可以理解它的实现,它将会有所帮助。

1 个答案:

答案 0 :(得分:1)

我认为你没有构建庞大的应用程序,对吧?

因此,要关注不同输入的不同进程的根要求,您可以创建从Base对象Processor扩展的多个对象,例如AppleProcessorOrangeProcessor。所有这些都共享相同的接口。

然后在您的后勤部分,您可以创建一个字典,如下所示:

processors = {"Apple": AppleProcessor, "Orange": OrangeProcessor}

然后很容易将其使用:

processor = processors.get(input)
processor.process(*some_needed_args, **some_needed_kwargs)
result = processor.get_result()

这只是一个简单的解决方案,如果你有更多限制,它可能会变得更加复杂。