Description of the method
Description: | ->forAll() method returns true if all the elements in the collection validates the condition. |
Available for: | collections |
Parameters: | condition statement |
Return type: | boolean |
Example
Context: | Message |
OCL: | self.Transaction->forAll(a|a.Amount > 30) |
Description: | The example rule checks every transaction in the message if the amount is greater than 30. First a variable "a" is declared for the individual transaction. The condition statement is separated with a "|"-sign. Then the statement is checked for every transaction in the message. If all of the amounts are greater than 30, true will be returned. |
The XML snippet below would pass this check.
<?xml version="1.0" encoding="UTF-8"?>
<Message xmlns="http://www.XMLdation.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Header>
<Id>a</Id>
<TimeStamp>2018-05-28T12:17:50</TimeStamp>
<ControlSum>2</ControlSum>
<NumberOfTransactions>1</NumberOfTransactions>
</Header>
<Transaction>
<Id>TransactionId1</Id>
<Amount>100</Amount>
<Debtor>
<Name>Debtor1</Name>
</Debtor>
<Creditor>
<Name>Creditor1</Name>
</Creditor>
</Transaction>
<Transaction>
<Id>TransactionId2</Id>
<Amount>35</Amount>
<Debtor>
<Name>Debtor2</Name>
</Debtor>
<Creditor>
<Name>Creditor2</Name>
</Creditor>
</Transaction>
</Message>
The other snippet below however would not pass this check. (The first transaction amount is lower than 30)
<?xml version="1.0" encoding="UTF-8"?>
<Message xmlns="http://www.XMLdation.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Header>
<Id>a</Id>
<TimeStamp>2018-05-28T12:17:50</TimeStamp>
<ControlSum>2</ControlSum>
<NumberOfTransactions>1</NumberOfTransactions>
</Header>
<Transaction>
<Id>TransactionId1</Id>
<Amount>29</Amount>
<Debtor>
<Name>Debtor1</Name>
</Debtor>
<Creditor>
<Name>Creditor1</Name>
</Creditor>
</Transaction>
<Transaction>
<Id>TransactionId2</Id>
<Amount>35</Amount>
<Debtor>
<Name>Debtor2</Name>
</Debtor>
<Creditor>
<Name>Creditor2</Name>
</Creditor>
</Transaction>
</Message>