我有一个使用情况下会出现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