J'ai une exigence qui prend beaucoup de règles validées par rapport aux objets de valeur java et produit des résultats. (Nous ne pouvons pas utiliser les applications de moteur de règles dans notre société, beaucoup de formalités et beaucoup de questions à répondre). Donc, plutôt que d'implémenter les règles comme si dans le code java, j'ai suggéré d'implémenter un petit moteur de règles, simple et extensible. Quel modèle de design suivre?Un modèle de conception simple pour développer un petit moteur de règles
J'ai ajouté ci-dessous une structure grossière xml des règles définies.
<rule-set>
<name>Example1</name>
<description>Example rules defined</description>
<beans>
<bean class="com.example.Customer" alias="cust"/>
<bean class="com.example.Account" alias="acnt"/>
<bean class="com.example.Transaction" alias="trans"/>
</beans>
<rule name="CustomerInfo" description="This rule validates if all the customer values are present">
<if lhs="cust.getFirstName" rhs="null" operator="!="/>
<if lhs="cust.getLastName" rhs="null" operator="!=" logicaloperator="&&"/>
<if lhs="cust.getCountry" rhs="null" operator="!=" logicaloperator="||"/>
<if lhs="cust.getCity" rhs="null" operator="!=" logicaloperator="&&"/>
<if lhs="cust.getPhone" rhs="null" operator="!=" logicaloperator="&&"/>
<if lhs="cust.getEmail" rhs="null" operator="!=" logicaloperator="&&"/>
<then do="cust.completeFlag" arg1="true"/>
</rule>
<rule name="Transaction" description="Transfer the money from one ac to another">
<if lhs="trans.fromAccount" operator="!=" rhs="null"/>
<if lhs="trans.toAccount" operator="!=" rhs="null"/>
<if lhs="trans.fromAccount.balance" operator=">" rhs="trans.getTransaferAmount"/>
<then do="trans.fromAccount.debit" arg1="trans.getTransaferAmount"/>
<then do="trans.toAccount.credit" arg1="trans.getTransaferAmount"/>
</rule>
</rule-set>
Cette URL ne vous amène à cet article. –
@DonRoby - corrigé, merci. –