Page last modified 14:35, 28 May 2018 by villes

->exists()

    Table of contents

    Description of the method

     

    Description: ->exists() method returns true if one of the elements in the collection validates the condition.
    Available for: collections
    Parameters: condition statement
    Return type: boolean

     

    Example

    Context: Message
    OCL: self.Transaction->exists(a|a.Amount > 100)
    Description: The example rule checks every transaction in the message and if one of the amounts is greater than 100, true will be returned. 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 one of the amounts is greater than 100, 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>101</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. (Neither of the transaction amounts is higher than 100)

    <?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>30</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>
    Menu