我正在创建一个制造商检查器功能,制造商创建一个记录并由检查器审查。在检查员批准之前不会创建记录。如果检查器拒绝它,那么它应该被回滚。
我知道的想法是创建一个临时记录表,该表将保存要创建的记录,直到检查员批准为止。但是此方法将创建 2X 数量的表以涵盖所有功能。
实现这一目标的最佳实践是什么?是否可以使用 Windows 工作流程来完成。(世界自然基金会)
只需在您的数据库中添加几列。
或者,如果您有很多这样的表需要制作者/检查者工作流程,您可以添加另一个表并将所有其他记录引用到该表。
Windows 工作流基础也可以为您工作,但我个人觉得很难使用
如果您想要对记录进行修订,您还需要更多列。如修订号和 IsLastRevision。
我不知道您使用什么来访问数据库和修改记录。如果您使用的是 OR/M,您可能会覆盖 Update 并对所有 saves 进行修订。例如
void Update(Entity e )
{
Entity n = new Entity();
// Create a copy of e ( With AutoMapper for example or manually )
e.Current = true;
e.RevisionNumber += 1;
Update(e);
Insert(n);
}
在这种情况下,您将有两个选择:
创建两张相同的表格,一张用于批准的数据,一张用于请求的数据。
或者
您可以使用 TypeID(请求/批准)为用户创建两行。在这种情况下,用户将创建一个 typeID = requested 的请求,当批准者批准该请求时,您只需用新的记录覆盖当前批准的记录,否则只需将请求的行标记为拒绝状态。