===== Conceptualization ===== {{section>Vocabulary&firstseconly&nofooter}} ==== Original Rules ==== {{page>Rules&nofooter}} ==== Observations ==== Sometimes, a value of some attribute depends on a relation between two attributes. In case of cashpoint system such situation can also be identified: \\ The system requires a comparison between the PIN number that has been entered by the user and the PIN number that is stored on the card in order to check if the user has entered a correct PIN. Having three attributes: //enteredPIN//, //correctPIN// and //authorized// we can simply compare the first two and depending on a result, we can set a value of the third one: * **if** //enteredPIN// = //correctPIN// **then** //authorized// := **true**; * **if** //enteredPIN// ≠ //correctPIN// **then** //authorized// := **false**; The XTT method does not allow to direct comparison between two attributes within conditional part of a rule. So, you cannot create the rules presented above. If you want to compare the values of two attributes you have to introduce a third, supplementary attribute that will hold the value, which corresponds to the result of the comparison. Then, depending on the value of this (supplementary) attribute, the further decisions can be taken. \\ **I.E.** According to rules presented above, we can introduce a new attribute //pidDifference//, which will hold the value of subtraction of the attributes //enteredPIN// and //correctPIN//. So, those two rules can replaced with: * **if** //enteredPIN// ≠ **null and** //correctPIN// ≠ **null then** //pidDifference// := //enteredPIN// - //correctPIN//; * **if** //pidDifference// = 0 **then** //authorized// := **true**; * **if** //pidDifference// ≠ 0 **then** //authorized// := **false**;