package Filtering {
private import ScalarValues::*;
package Annotations {
metaclass ApprovalAnnotation {
approved : Boolean;
approver : String;
level : Natural;
}
}
package DesignModel {
private import Annotations::*;
struct System {
@ApprovalAnnotation {
approved = true;
approver = "John Smith";
level = 2;
}
}
composite feature system : System;
}
package UpperLevelApprovals {
private import DesignModel::**;
filter Annotations::ApprovalAnnotation::approved and
Annotations::ApprovalAnnotation::level > 1;
struct Test :> System;
}
package UpperLevelApprovals1 {
private import Annotations::**;
private import DesignModel::**[@Structure][approved and level > 1];
struct Test :> System;
}
private import KerML::*;
package Meta {
private import DesignModel::*;
filter (Element::name == "System" and not Type::isAbstract) or
Feature::isComposite;
struct Test :> System;
feature :> system;
}
}