Un simple modèle de conception à développer une petite Règle-Moteur

J'ai une exigence qui prennent beaucoup de règles validées par rapport à la java des objets de valeur et produit des résultats. (nous ne pouvons pas utiliser tout moteur de règles d'applications dans notre société, beaucoup de formalités et beaucoup de questions à poser).
Donc, plutôt que de mettre en œuvre les règles de fi dans du code java, j'ai suggéré de mettre en œuvre un petit moteur de règle, Simple et Extensible.
Conception de modèle à suivre?

J'ai ajouté ci-dessous un accidenté de la structure 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="&amp;&amp;"/>
        <if lhs="cust.getCountry" rhs="null" operator="!=" logicaloperator="||"/>
        <if lhs="cust.getCity" rhs="null" operator="!=" logicaloperator="&amp;&amp;"/>
        <if lhs="cust.getPhone" rhs="null" operator="!=" logicaloperator="&amp;&amp;"/>
        <if lhs="cust.getEmail" rhs="null" operator="!=" logicaloperator="&amp;&amp;"/>
        <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>

OriginalL'auteur Vijay Veeraraghavan | 2010-11-25