2010-02-22 28 views
0

我正試圖設計一個HR休假應用系統。我需要知道如何最好地在前端實現以下要求,以及如何在數據庫中保存數據以便我可以動態地處理驗證。以下是我們如何確認員工是否有資格休假的一個小例子。根據規則動態地執行驗證

假設他/她正在申請「病假」,這種類型的假期不能在第二天直接進入「休假」。如果他/她申請的前一天標有病假,則不能申請休假。一旦我們驗證了這一點,我們需要對假期餘額進行驗證。假設員工是程序員,他/她每個月最多可以帶病假1次(或工資週期)。一個月內病人的病假數量取決於員工的指定。

以上是一個簡單的例子。規則可能會變得複雜,而且取決於員工的指定。我正在考慮在數據庫中堅持這樣的規則(我需要什麼樣的結構/屬性),還要在前端代碼(C#)中動態地評估規則(我需要什麼設計模式)

回答

1

Rules Engines適用於經常更改的複雜業務規則。這裏的a list for .Net.

我們使用Drools(Java版本)來處理複雜的,不斷變化的財務規則,這對我們來說非常成功。

這裏有一個很好的「入門」教程

Getting Started with Drools.Net

下面是完整的用戶指南

Drools.Net User Guide

+0

需要一些關於如何使用這些引擎的教程。 – deostroll 2010-02-25 13:49:36

+0

@deostroll:已添加 – 2010-02-25 17:53:42

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工作,也許他們是這樣)

1

我最近閱讀了一篇關於馬丁福勒的網站談到了「規範」模式。

這裏是鏈接Specification Pattern

我認爲這可能是適合你的情況。