->forAll()

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>