Skip to content

collect select RoyalandLoyal

inv invariant_ProgramPartner1 :
	self.programs->collect( i_LoyaltyProgram : LoyaltyProgram | i_LoyaltyProgram.partners )->select( p : ProgramPartner | p <> self )->isEmpty()

  <details key="invariant_ProgramPartner1" value="self.programs->collect( i_LoyaltyProgram : LoyaltyProgram | i_LoyaltyProgram.partners )->select( p : ProgramPartner | p &lt;> self )->size() = 0"/>

genera

 576 
 577 invariant10 = context _ProgramPartner [invariant_ProgramPartner1]
 578 invariant_ProgramPartner1 self = ((((ocl self |.| programs |->| collect(\i_LoyaltyProgram -> ocl i_LoyaltyProgram |.| partners)) |->| select(\p -> (ocl p) |<>| (ocl self))) |->| size)) |==| (oclInt       0)
 579 
 580 
ACCELEO.hs:577:40: error:
    • Couldn't match type ‘(ProgramPartner, ModelElement_)’
                     with ‘Collection ProgramPartner_’
      Expected type: Val ProgramPartner_ -> OCL Model (Val Bool)
        Actual type: Val (Collection ProgramPartner_)
                     -> OCL Model (Val Bool)
    • In the expression: invariant_ProgramPartner1
      In the second argument of ‘context’, namely
        ‘[invariant_ProgramPartner1]’
      In the expression:
        context _ProgramPartner [invariant_ProgramPartner1]

Para este modelo

 example = Model [
       (ModelElement 0 (RootCh (Root [1] [2] [3] [4, 5] [6, 7] [8, 9] [10, 11] [12, 13] [14, 15]  )))
     , (ModelElement 1 (LoyaltyProgramCh (LoyaltyProgram "Programa1" [3] [6, 7] [10, 11]  )))
     , (ModelElement 2 (CustomerCh (Customer "Edward" "Mr." True 20 [6, 7] [4, 5]  )))
     , (ModelElement 3 (ProgramPartnerCh (ProgramPartner 1 "Partner1" [1] [8, 9]  )))
     , (ModelElement 4 (CustomerCardCh (CustomerCard True "Tarjeta1Cliente1" 2 6 [14]  )))
     , (ModelElement 5 (CustomerCardCh (CustomerCard True "Tarejeta2Cliete1" 2 7 [15]  )))
     , (ModelElement 6 (MembershipCh (Membership 11 4 [12] 1 2  )))
     , (ModelElement 7 (MembershipCh (Membership 10 5 [13] 1 2  )))
     , (ModelElement 8 (ServiceCh (Service True 1000 1000 "Service1 cliente1" 9000 3 11 [15]  )))
     , (ModelElement 9 (ServiceCh (Service True 0 0 "servicio2Cliente1" 0 3 10 [14]  )))
     , (ModelElement 10 (ServiceLevelCh (ServiceLevel "Silver" 1 [7] [9]  )))
     , (ModelElement 11 (ServiceLevelCh (ServiceLevel "Gold" 1 [6] [8]  )))
     , (ModelElement 12 (LoyaltyAccountCh (LoyaltyAccount 0 2 [14] 6  )))
     , (ModelElement 13 (LoyaltyAccountCh (LoyaltyAccount 1000 1 [15] 7  )))
     , (ModelElement 14 (TransactionCh (Transaction 1000 1000.0  4 12 9  (Just (EarningCh (Earning  ))))))
     , (ModelElement 15 (TransactionCh (Transaction 2000 0.0  5 13 8  (Just (EarningCh (Earning  ))))))
     ]