OMS uses the Java construct annotations, extended to other languages, to enable interaction of model components with the OMS API and enable interaction among model components. Annotations are metadata for model execution and documentation purposes.
The OMS annotations are shown in the following table, organized by the language elements they describe. Click on an annotation for an explanation of their purpose and function.
Annotations are used to specify resources within a component that interacts with the OMS framework. An annotation can play different roles depending on its context. There are three main annotation categories:
Required for all OMS components (denoted by (M) in table above)
Essential for component execution, they describe method invocation points and data flows among components
Used for auto-documentation
Optional meta data
Additional information about the kind of data flow, physical units, and range constraints that might be used during execution.
Used for documentation, presentation layers, databases, and other content management.
Required meta data for component publication, but optional for execution.
Annotations are a Java specific feature, add-on to the language to allow for custom and domain specific markups of language elements. In Java they do not affect directly class semantics, but they do affect the way classes are treated by tools, such as a modeling framework. Annotations can be seen as extension of the Java Classes with meta information that can be obtained from sources files, compiled classes, or loaded classes at runtime. They also respect languages scopes and are supported by Java IDEs with code completion and syntax highlighting.
Other languages contain counterparts to Java annotations, for example, properties in C++. OMS extends the concept for FORTRAN, in which modelers can insert annotation syntax in comment lines, and OMS will read and act on the annotation comment. This is described further in the FORTRAN Science Components section.