我有一個使用情況下會出現3種數據類級別設計驗證引擎2個獨立的實體
- Business_Enrollment_Program(讓表示他們BEP_1,BEP_2 ...)
- Validation_Rule(讓我們用R1,R2表示它們)
- Transaction_Type(讓我們用TT_1,TT_2 ...表示它們)。這是一個具有一些屬性的實體類。在這些實體上需要執行Validation_Rule。
TRANSACTION_TYPE實體看起來像
public TT_1 {
private Business_Enrollment_Program;
private COMMON_FIELD_1;
private COMMON_FIELD_2;
private TT_1_SPECIFIC_FIELD;
}
public TT_2 {
private Business_Enrollment_Program;
private COMMON_FIELD_1;
private COMMON_FIELD_2;
private TT_2_SPECIFIC_FIELD;
}
現在我有2個要求,同時執行驗證規則:
集Validation_Rule的需要被執行,取決於TRANSACTION_TYPE和它的Business_Enrollment_Program。 這意味着對於在BEP_1下注冊的TT_1,我們可能需要執行(R1,R2)規則,但對於在BEP_2下注冊的TT_1,我們可能需要執行(R1,R3)規則。
規則的行爲將取決於Transaction_Type和它的Business_Enrollment_Program。這意味着根據規則R1的BEP_1行爲TT_1招收相比TT_1可能不同BEP_2
下報名參加規則,我可以創建一個結構如下圖所示:
,我可以執行規則像下面
public processTransaction(T transactioType) {
private boolean result = true;
if(t instanceof TT_1) {
result = result && R1_For_TT_1.execute(t);
}
else if (t instanceof TT_2) {
result = result && R1_For_TT_1.execute(t);
result = result && R2_For_TT_1.execute(t);
}
if(result) {
// Do something
}
else {
// Do something else
}
}
問題這種方法就是我沒有達到我的地方我想規則的行爲取決於TRANSACTION_TYPE 2號的要求,它的Business_Enrollment_Progr上午。
任何想法如何安排我的課程和實體,使我的兩個要求得到優雅地滿足?
您的2個要求聽起來一樣。你能展示更多的照片嗎?我沒有看到使用這個返回的'boolean'。 – 4castle
@ 4castle在第一個要求中,我想確定應該執行哪些規則。但是在第二個要求中,相同規則的行爲需要改變。爲了支持第二個要求,你可以考慮一個規則validateTotalAmount。現在如果實體TT_1與BEP_1邏輯相關以驗證totalAmount與實體TT_1相比可能有所不同BEP_2 –
是否有可能在任何商業程序上執行任何交易類型? – 4castle