我正在尝试设计HR休假申请系统。我需要知道如何最好地尝试在前端实现以下要求,以及如何在数据库中持久保存数据以便我可以动态处理验证。以下是我们如何验证员工是否有资格休假的一个小例子。
假设他/她正在申请“病假”这种类型的假期不能在第二天直接到“休假”。如果他/她申请的前一天被标记为病假,则不能申请临时休假。一旦我们验证了这一点,我们就需要验证休假余额。假设员工是程序员;他/她每月最多可以休1次病假(或工资周期)。一个月内可以服用的病假数量取决于员工的名称。
以上是一个简单的例子。规则可能很复杂,而且很多都取决于员工的名称。我期待在数据库中保持这样的规则。(我需要什么样的结构/属性)并且还在前端代码(C#)中动态评估规则(我需要哪些设计模式)
答案 0 :(得分:1)
Rules Engines非常适合经常更改的复杂业务规则。这是a list for .Net.
我们使用Drools(Java版本)来处理复杂,不断变化的财务规则,这对我们来说非常成功。
这是一个很好的“入门”教程
Getting Started with Drools.Net
以下是完整的用户指南
答案 1 :(得分:1)
答案 2 :(得分:0)
我曾经在一个系统上工作过,我们有一套规则让我们说我们定义了10种远程规则。例如,休假余额将是1条规则。然后我们创建了一个非常简单的表达式树并评估每个节点以确定我们的条件是否通过。例如,这里有一个AndRule,可用于将两个操作数绑定在一起。
public Rule
{
public abstract Eval(ContextData data);
}
public AndRule
{
public Rule Left{get;set;}
public Rule Right{get;set;}
public override bool Eval(ContextData data)
{
return Right.Eval(data) && Left.Eval(data);
}
}
我们接下来要做的是将整个图表序列化为Xml。这允许将规则的一部分保存到数据库中。可以通过替换树来动态切换规则。现在是的,你不能动态创建一种新的规则,但我怀疑你的人力资源部门是否正在创造新的方法来限制休假(或者如果你为PHB工作,他们就是这样)