The OpenMI standard release is a zipped directory structure, which contains the java and the C# code of the implemented interfaces, the compiled library files, and the standard definition document.

The entry point for the standard definition is the OpenMI.Standard.Definition.htm file, which is also shown below:
OpenMI.Standard.Definition.htm
- There are two variants of OpenMI compliance. Components can be either OpenMI 1.4 .Net compliant or OpenMI 1.4 Java compliant.
- OpenMI .Net compliant components must follow the compliance definition given in the comments in the file ILinkableComponent.cs
- OpenMI Java compliant components must follow the compliance definition given in the comments in the file ILinkableComponent.java
source code comments from the ILinkableComponent.cs file
- An OpenMI compliant component must implement the ILinkableComponent interface according to specifications provided as comments in the OpenMI.Standard interface source code.
- An OpenMI compliant component must, when compiled, reference the OpenMI.Standard.dll, which is released and compiled by the OpenMI Association
- An OpenMI compliant component must be associated with a XML file, which complies to (can be validated with) the LinkableComponent.xsd schema.
- An OpenMI compliant component must be associated with a XML file, which complies to (can be validated with) the OpenMICompliancyInfo.xsd schema. This file must be submitted to the OpenMI Association.
- The OpenMI Association provides two additional interfaces which OpenMI compliant components may or may not implement; the IManageState interface and the IDiscreteTimes interface. However, if these interfaces are implemented, each method and property must implemented according to the comments given in the OpenMI.Standard interface source code.
- The OpenMI Association's downloadable standard zip file provides the only recognized version of source files, xml schemas and assembly file.
The OpenMI Standard consists of 4 enumerations and 24 interfaces which all together defines 96 methods or properties. Each of these methods/properties is unambiguously defined in the source code of the release.
As an example the documentation for one of these 96 methods is given below
Source code for the OpenMI.Standard.ILinkableComponent.GetInputExchangeItem(...) method
/// <summary> /// <para>Returns the InputExchangeItem corresponding to the inputExchangeItemIndex /// provided in the method arguments.</para> /// /// <para>This method must be accessible after the Initialize( ) method has been /// invoked and until the Prepare( ) method has been invoked. If this property /// is accessed before the Initialize( ) method has been invoked or after the /// Prepare( ) method has been invoked and the LinkableComponent cannot handle /// this an exception must be thrown.</para> /// /// <para>This method basically returns a reference to the InputExchangeItem object. /// There is no guarantee that this object is not altered by other components /// after it has been returned. It is the responsibility of the LinkableComponent /// to make sure that such possible alterations does not subsequently corrupt /// the LinkableComponent.</para> /// </summary> /// /// <param name="inputExchangeItemIndex"> /// Identifies the index-number of the requested InputExchangeItem (indexing starts from zero) /// This method must accept values of inputExchangeItemIndex in the interval /// [0, InputExchangeItemCount - 1]. If the inputExchangeItemIndex is outside this /// interval an exception must be thrown.</param> /// /// <returns> /// The InputExchangeItem as identified by inputExchangeItemIndex. /// </returns> IInputExchangeItem GetInputExchangeItem(int inputExchangeItemIndex);
An overview of the OpenMI standard interfaces is shown on the figure below.

View full size diagram (PDF)


