The following is a specification of a set of classes in IDL (CORBA's Interface Definition Language) that is (roughly) equivalent to the representation described above. A slightly restricted modified version of this specification was adopted in the database schema of the JFACC Jumpstart program. Note that date is unspecified; we assume that most IDL schemas will have date specification classes that we can reuse.
// forward declarations
interface PlanEntity;
interface MeasureOfEffect;
interface Quantification;
interface PercentageChange;
interface TimeChange;
interface ChangeFromPreConflictLevels;
interface ChangeFromInitialValue;
interface ValueRestriction;
interface TimeValue;
// enumerations
enum ChangeVerb {
ChangeVerb_Degraded,
ChangeVerb_Reduced,
};
enum TimeChangeVerb {
TimeChangeVerb_Delayed
};
enum Restriction {
Restriction_AtMost,
Restriction_AtLeast
};
// class definitions
interface PlanEntity {};
interface MeasureOfEffect : PlanEntity {
attribute MeasurableElement measurableElement;
attribute Quantification quantification;
attribute string textSpecification;
};
interface Quantification : PlanEntity {
};
interface PercentageChange : quantification {
attribute ChangeVerb changeVerb;
attribute float percentage;
};
interface TimeChange : quantification {
attribute TimeChangeVerb changeVerb;
attribute float percentage;
};
interface ChangeFromReferenceValue : PlanEntity {
attribute ChangeVerb changeVerb;
attribute float changePercentage;
attribute ReferenceValue referenceValue;
};
interface ChangeFromInitialValue : PlanEntity {
attribute ChangeVerb changeVerb;
attribute float changePercentage;
attribute float initialValue;
};
interface ValueRestriction : PlanEntity {
attribute Restriction restriction;
attribute short value;
};
interface ReferenceValue : PlanEntity {
};
interface PreConflictLevels : ReferenceValue {
};
interface KnownAtDate : PlanEntity {
attribute date knownAt;
};
interface TimeValue : PlanEntity {
attribute TimeUnits unit;
attribute short value;
};
interface MeasurableElement : PlanEntity {
attribute string text-specification;
};
interface Event : MeasurableElement {
};
interface Object : MeasurableElement {
};
interface Aspect : MeasurableElement {
};
interface Capability : MeasurableElement {
};