Last modified 21 Oct 2021 11:23 +02:00

Statement

Example

Equivalent (without using statement)

Mixin

Allows model designer to reuse common group of item definitions when definining types.

mixin Documented {
  item summary {
    type string;
  }
  item documentation {
    type string;
  }
}

type ObjectDefinition {
  supertype AxiomTypeDefinition;
  include  Documented;
}

type PolicyDefinition {
  supertype AxiomTypeDefinition;
  include  Documented;
}
type ObjectDefinition {
  supertype AxiomTypeDefinition;
  // include  Documented;
  item summary {
    type string;
  }
  item documentation {
    type string;
  }
}

type PolicyDefinition {
  supertype AxiomTypeDefinition;
  // include  Documented;
  item summary {
    type string;
  }
  item documentation {
    type string;
  }
}

Extension

Allows model designer to add items to already defined type.

type ObjectDefinition {
  supertype AxiomTypeDefinition;
}

type PolicyDefinition {
  supertype AxiomTypeDefinition;
}

augmentation Documented {
  target ObjectDefinition;
  target PolicyDefinition;
  item summary {
    type string;
  }
  item documentation {
    type string;
  }
}
type ObjectDefinition {
  supertype AxiomTypeDefinition;
  // added via Extension;
  item summary {
    type string;
  }
  item documentation {
    type string;
  }
}

type PolicyDefinition {
  supertype AxiomTypeDefinition;
  // added via Extension;
  item summary {
    type string;
  }
  item documentation {
    type string;
  }
}

Value Metadata

type ValueMetadata {
  documentation "Common holder type for all possible value metadata"
}

valueMetadata Storage {
  item storage {
    type StorageMetadata;
  }
}
type ValueMetadata {
  documentation "Common holder type for all possible value metadata"
}

extension Storage {
  target StorageMetadata;
  item storage {
    type StorageMetadata;
  }
}

Object Definition

type AnyObjectList {

}

root objects {
  type AnyObjectList;
}

object User {
  itemName user;
  item name { type string;}
}
type AnyObjectList;
root objects {type AnyObjectList;}

type User {
  identifier oid {
    scope global;
    space User;
  }
  itemName user;
}

extension User {
  target AnyObjectList;
  item user {
    type User;
  }
}