帮助CRUD程序员考虑"批准工作流程"

use*_*478 16 database-design database-schema

我一直在研究一个基本上是CRUD应用程序(创建,读取,更新,删除)的Web应用程序.最近,我开始研究我称之为"批准工作流程".基本上,会为物料生成请求,然后将其发送给经理批准.根据请求的不同,不同的人需要批准请求或者将其发送回请求者进行修改.批准者需要跟踪批准已批准的内容以及请求者需要查看其请求状态的内容.

作为一名"CRUD"开发人员,我正在努力解决如何设计这个问题.我应该拥有哪些数据库表?如何跟踪请求的状态?我应该如何通知用户他们的请求发生的操作?

他们的设计模式可以帮助我吗?我应该在我的代码中绘制状态机吗?

我认为这是一个通用的编程问题,但如果它有所不同,我正在使用Django和MySQL.

S.L*_*ott 5

批准==状态改变

状态更改 == 更新更改的内容 && 创建日志来记录更改的内容。

就是这样。

有趣的规则是“谁被允许进行更新?”、“哪些状态更改是合法更新?”以及“哪些状态是死胡同?”

您正在构建一个有限自动机。状态是对象的属性。您可以通过更新其状态来“通过工作流程”推送某些内容。


Fru*_*ner 4

有这方面的设计模式。也许他们会有所帮助:

http://en.wikipedia.org/wiki/Workflow_patterns

工作流程比简单的 CRUD 应用程序更加受状态驱动,因此,阅读状态机模式也会有所帮助。听起来你走在正确的轨道上。

至于数据建模,您可以拥有一个包含所有“批准”的表,其中一个状态字段是状态表的外键。

至于通知,这是您的应用程序在更改批准状态时必须执行的操作,它必须在其他地方查找以查看特定状态更改需要通知谁/什么(因此您必须跟踪什么)实体会收到状态更改的通知)。