.max()

Method compares the given value to the value of the parameter and returns the greater one.

Description of the method

Description: .max() method compares the given value to the value of the parameter and returns the greater one.
Available for: integer, real
Parameters: integer, real
Return type: integer, real

 Example

Context: Message
OCL: self.Transaction->asSequence().Amount->at(0).max(self.Transaction->asSequence().Amount->at(1)) = 100
Description: The example rule compares the larger amount from the first and second transaction amounts to the right side operand. It's assumed that there is at least two transactions. The 'at' method doesn't work with the Bag type so it has to be changed to Sequence.

 

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 larger amount, 35, is not equal to 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>