English 中文(简体)
A. 模拟工作执行流动的设计模式
原标题:Design pattern for modeling job execution flow

在我的申请中,我有一套工作要做。 每个工作都通过“不开始”、“启动”、“完成”、“失败”等州进行。 每个工作都有一套先决条件和先决条件。 工作不能在前提条件得到满足之前开始,如果工作不符合员额条件,就应当标明工作失败。

例如,请将工作输入数据库的一个文本档案。 先决条件是检查是否存在来文方档案,员额状况是检查数据库中是否有数据。

在这些先决条件和职位条件之外,有时工作还取决于其他工作。 很容易设立一个就业表,并有一个就业依赖表,但能否实际做到这些资格预审和员额验证核对工作在数据库中具有可比性(因此,如果这些条件发生变化或添加新的条件,就不需要做出任何法律改动)。 即便有可能,这样做还是好的想法?

要求使这一模式具有通用性,以便其他应用也能够加以利用,即使拟进行的核实与其他申请完全不同。

最佳回答

我认为,你冒着太多的尝试。 通过尝试表扬所有验证前和验证后的条件,你正在危险地接近于试图在数据中书写代码。

我建立了一些相当复杂的工作时间安排申请。 一个特别可能感兴趣的是,一个日常的电子设备处理程序,在固定文件库上装上了数十张卡片。

现行制度采用一条线性程序,方案管理员必须手工操作,以特定顺序操作表负荷。 问题在于,如果任何进程失败,其他工作就不得不坐下来,直到问题得到解决。

我建立了一个新的系统,以表格驱动元数据,指出现存的机构间系统。 换言之,表A有表B和表C的FKs,而不是手工地追踪相互依存关系的all,只是追踪了直接的相互依存关系。 然后,订货人只得检查哪些装载已经完成,哪些装货已经上岸。 任何未完全依赖的待装货都是科索沃要开始的。

我认为,你同样应当建立你的制度。 关注事项分开处理。 Don t tablemotwhat the Dependencies are, 相反,你应当坐在的桌上,该座标有。 你可以跟踪一下这些受扶养人中已经过去和失败的时间安排表。 数据库没有必要知道如何进行这些测试。 让我们对依赖性究竟是什么以及如何检验这些依赖性是否通过或失败感到担忧。 这是你们的所有工作时间表都需要知道的。 避免在你的数据库中设置一种描述性语言的诱惑。

问题回答

考虑将你的应用与规则发动机相结合(也称为商业规则)。 这一概念在法典之外界定,并储存在表格或档案中。 规则发动机读作规则并作解释。

这些软件可迅速复杂。 其中大多数是商业一揽子计划,但有一些自由和开放源框架。 我没有使用任何免费包裹。 总的来说,我建议研究从零开始的退出代码,而不是建立规则发动机。

Nice intro by Martin Fowler: http://martinfowler.com/bliki/RulesEngine.html

An article with a little more substance: http://www.infoq.com/articles/Rule-Engines

To find actual code, Google on "rules engine" or "workflow engine" and add in the name of your programming language ("Java", "C#", or what-not).





相关问题
SQL Server - How many users do I *really* need?

I m setting up an application, and I m looking into purchasing a license for SQL Server. My question is pretty simple (though may have a complicated answer...) How many users accounts do I really ...

Object Graph / Persistence Question

I m currently working with an online application that requires multiple screens/steps in order to complete. The application domain is modeled using an object graph. Persistence to and from a database ...

Why does stack get truncated in Exception.StackTrace?

Why does the high part of the stack (in Exception.StackTrace) gets truncated? Let s see a simple example: public void ExternalMethod() { InternalMethod(); } public void InternalMethod() { try ...

ASP.NET MVC and Service Oriented Architecture

I would like to know how do i incorporate a feature like wcf within and MVC application. My current idea of the architecture is as follows: EntityFramework -> ASP.NET MVC (Views) ...

热门标签