我一直在寻找一个框架来简化Django应用程序中相当复杂的工作流程的开发.我希望能够使用该框架来自动化状态转换,应用权限,像审计日志记录和通知也许有些演员.
我看过一些关于同一主题的旧信息,但在过去的2 - 3年里并没有太多.我听说过的主要选择是GoFlow(自2009年2月起未更新)和django-workflow(似乎更活跃).
有人用这些包吗?它们是否成熟和/或与现代(1.3)Django兼容?还有其他值得考虑的选择可能会得到更好或更好的支持吗?
kmm*_*vnr 83
我在这里给出一些注释,因为我是django-fsm和django-viewflow的作者,这两个项目可以称为"工作流库".
工作流程本身有点被高估了.不同类型的库和软件可以称自己为"工作流程",但具有不同的功能.通用性是工作流将某个过程的步骤连接成一个整体.
如我所见,工作流实施方法可分为以下几类:
其中,前两个可以被认为是渐进的差异,但另外两个是基本的.
这里简要介绍我们现在在工作流部分下的django,djangopackages和awesome-django项目列表中的内容:
这些django状态机库都没有支持并行工作流,这大大限制了它们的应用范围.但有两个做:
django-viewflow - 显式,多用户,并行,静态工作流,支持并行任务执行,复杂拆分和连接语义.提供帮助程序以与django功能和基于类的视图,不同的后台任务执行查询以及各种悲观和乐观锁定策略集成,以防止并发更新.
提到的GoFlow往往是明确的,多用户,并行,动态的工作流程,但多年来它一直被作者所抛弃.
我看到了在django-viewflow之上实现动态工作流构建功能的方法.一旦完成,将关闭django世界中工作流实施的最后和最复杂的案例.
希望,如果有人能够阅读到目前为止,现在更好地理解工作流程术语,并且可以为他们的项目做有意识的工作流程库选择.
还有其他值得考虑的选择可能会得到更好或更好的支持吗?
是.
蟒蛇.
您不需要工作流产品来自动执行状态转换,权限以及审计日志记录和通知等附加功能.
这就是为什么没有很多项目这样做的原因.
该州的设计模式是很容易实现.
授权规则("许可")已经是Django的一流部分.
日志记录已经是Python的一流部分(并已添加到Django中).使用它进行审计日志记录可以是审计表,也可以是其他记录器(或两者).
消息框架("通知")已经是Django的一部分.
你还需要什么?你已经拥有了这一切.
使用State设计模式的类定义,以及用于授权和日志记录的装饰器可以很好地工作,以至于您不需要超出您已有的任何东西.
阅读此相关问题:在Python中实现"规则引擎"
这很有趣,因为我会与S.Lott同意只使用Python作为规则引擎。我现在有一个完全不同的观点。
如果您想要一个完整的规则引擎,它需要很多活动部件。我们构建了完整的Python / Django规则引擎,您将惊讶于需要构建什么才能启动并运行出色的规则引擎。我将进一步解释,但首先该网站是http://nebrios.com。
规则引擎至少应具有:
因此,请试用Nebri或我在下面列出的其他产品,看看它们是否满足您的需求。
这是调试模式

自动生成的表格

工作流程规则示例:
class task_sender(NebriOS):
# send a task to the person it got assigned to
listens_to = ['created_date']
def check(self):
return (self.created_date is not None) and (self.creator_status != "complete") and (self.assigned is not None)
def action(self):
send_email (self.assigned,"""
The ""{{task_title}}"" task was just sent your way!
Once you finish, send this email back to log the following in the system:
i_am_finished := true
It will get assigned back to the task creator to look over.
Thank you!! - The Nebbs
""", subject="""{{task_title}}""")
Run Code Online (Sandbox Code Playgroud)
因此,不,仅在Python中构建基于规则,基于事件的工作流引擎并不简单。我们已经做了一年多了!我建议使用类似的工具
| 归档时间: |
|
| 查看次数: |
22760 次 |
| 最近记录: |