<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-us" xml:lang="en-us">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<meta name="copyright" content="(C) Copyright 2005" />
<meta name="DC.rights.owner" content="(C) Copyright 2005" />
<meta content="topic" name="DC.Type" />
<meta name="DC.Title" content="openMDM 5 Application Model" />
<meta name="abstract" content="This section presents how the openMDM5 business objects are modeled in the ODS Application Model of openMDM." />
<meta name="description" content="This section presents how the openMDM5 business objects are modeled in the ODS Application Model of openMDM." />
<meta content="XHTML" name="DC.Format" />
<meta content="openMDM5.application_model" name="DC.Identifier" />
<link href="commonltr.css" type="text/css" rel="stylesheet" />
<title>openMDM 5 Application Model</title>
</head>
<body id="openMDM5.application_model"><a name="openMDM5.application_model"><!-- --></a>


  <h1 class="topictitle1">openMDM 5 Application Model</h1>

  
  <div><p>This section presents how the openMDM5 business objects are modeled in the ODS Application Model of openMDM.</p>

    <p>As openMDM is based on ASAM ODS a specific ODS Application Model has to be defined. Unlike the most ODS applications the Application Model is fixed, with a few exceptions. Thus a certain firmness can be guaranteed and using components can rely on a basic feature set.</p>

    <div class="p">The openMDM Application Model  can be extended by Modules as explained below. Modules define new ODS Application Elements, Application Instances, Enumerations and their relation to the Default Application Model. <div class="note"><span class="notetitle">Note:</span> There are no constraints on how the model is extended, as long as it fulfills the rules of ODS, but the existing model must not be modified.</div>
</div>

    <p>The following graphics contain the openMDM Application Model elements and the relations between them. If an Application Attribute is derived from a Base Attribute, it's noted as stereotype of the attribute. The stereotype "none" marks Application Attributes that are not derived from a Base Attribute. The relation name and the cardinality is noted at the end of the link between two Application Elements. If the relation is a Base Relation, than the name is stated as stereotype. If that's not the case, the type is stated as "&lt;&lt;parent&gt;&gt;", "&lt;&lt;children&gt;&gt;" or "&lt;&lt;info&gt;&gt;".</p>

    <div class="section"><h2 class="sectiontitle">Common Attributes</h2>
      
      <p>This section defines Application Attributes that are common to several Application Elements in the Application Model. If an attribute is specifically associated with a single element it is listed in its respective model. </p>

      <div class="p"><br /><ul>
          <li><strong>DateCreated</strong>: Creation date of the instance - Optional</li>

          <li><strong>Description</strong>: Describing text of the instance - Optional </li>

          <li><strong>Id</strong>: Unique ID of the instance - Mandatory<div class="note"><span class="notetitle">Note:</span> The content of this attribute should never be interpreted within the application, because it depends on the persistence layer. </div>
</li>

          <li><strong>MDMLinks</strong>: List of external references of any type - Optional<div class="note"><span class="notetitle">Note:</span> This attribute should be used for references to external resources and not for storing of measurement data.</div>
</li>

          <li><strong>MimeType</strong>: MIME type of the instance - Mandatory. A MIME type should identify a instance definitely. It is possible to indicate an inheritance of types by adding a subtype along with the separator ("."). (e.g. "application/x-asam.aomeasurement.octavespectrum")<div class="note"><span class="notetitle">Note:</span> The base MIME Types are standardized and managed by the openMDM working group. </div>
<div class="note"><span class="notetitle">Note:</span> With MIME Type the Typing of Business Objects are Implemented, as described int the Business Object Model.</div>
</li>

          <li><strong>Name</strong>: Name of the instance - Mandatory.</li>

          <li><strong>Sortindex</strong>: Arrangement order for instance - Mandatory. This attribute is used when a list of same elements should be displayed and the order is defined by the sort index.</li>

          <li><strong>Version:</strong> Version of the instance in a element specific notation - Mandatory.</li>

        </ul>
</div>

    </div>

  </div>

  <div class="nested1" id="openMDM5.business_object_model.model_compositions"><a name="openMDM5.business_object_model.model_compositions"><!-- --></a>
    <h2 class="topictitle2">Model Compositions</h2>

    <div>
      <p>OpenMDM 5 has not one complete model, which is capable of all possible use cases. Not every application covers all features, so it is useful to provide some sort of customization. There are three types of models. Each model is based on another and extend its features. The two basic models are mostly fixed (the exceptions are explained later) and last one is customizable. The fixed models are useful, so different application entities can work on a well-defined basis.</p>

      <div class="p">The models are:<br /><ul>
          <li>
            <strong>Minimum Model</strong>
          </li>

          <li>
            <strong>Default Model</strong>
          </li>

          <li>
            <strong>Custom Model</strong>
          </li>

        </ul>
</div>

      <p><img src="images/Business Object Model.png" /></p>

    </div>

  </div>

  <div class="nested1" id="openMDM5.business_object_model.minimum_model"><a name="openMDM5.business_object_model.minimum_model"><!-- --></a>
    <h2 class="topictitle2">Minimum Model</h2>

    <div>
      <p>The Minimum Model contains all objects that are essentially for all openMDM applications. All the associated objects are necessary to read and write measurement data, which is the most basic core target of openMDM. </p>

      <div class="p">Use Cases that are covered with this model:<br /><ul>
          <li>Create Test Data</li>

          <li>Import Test Data</li>

          <li>Modify Test Data</li>

          <li>Read Test Data</li>

        </ul>
</div>

      <div class="p">The model is structured in four logical parts:<br /><ul>
          <li><strong>Management Data</strong>: These objects are used to put measurement data sets in a structural form. With this form it is possible to describe relations between particular records. </li>

          <li>
            <strong>Context Data</strong>
            <br /><ul>
              <li><strong>Measured Data </strong>: If the Context Data is linked to the Measurement Data, these objects are used to describe the basic condition under which the measurement is executed. </li>

              <li><strong>Ordered Data</strong>:If the Context Data is linked to the Management Data, these objects are used to describe the basic condition under which the measurement shall be executed. </li>

            </ul>

          </li>

          <li><strong>Measurement Data</strong>: These objects are used to describe the atomic measurement data records and how they form a measurement data set </li>

          <li><strong>Measurement Dimension Data</strong>: These objects are used to describe in which physical or chemical dimension a measured value is quantified.</li>

        </ul>
</div>

      <p><img src="images/Minimum Model.png" /></p>

    </div>

    <div class="nested2" id="openMDM5.business_object_model.minimum_model.measurement_data"><a name="openMDM5.business_object_model.minimum_model.measurement_data"><!-- --></a>
      <h3 class="topictitle3">Measurement Data</h3>

      <div>
        <div class="section"><h4 class="sectiontitle">MeaResult</h4>
          
          <p>A MeaResult (measurement result) is a set of information about the specimen, that is recorded during the test process. The test process itself is executed under the terms of the Context Data.</p>

          <p>The information content of MeaResults is conformed to the ASAM ODS standard. A MeaResult consists on a series of MeaQuantities.</p>

          <div class="p">MeaResults are characterized by the following properties:<br /><ul>
              <li>Physical Dimensions</li>

              <li>Quantities</li>

              <li>Units</li>

            </ul>
</div>

        </div>

        <div class="section"><h4 class="sectiontitle">ResultParameter</h4>
          
          <p>A ResultParameter is specific piece of context information for a test result.  A MeaResult can contain a set of result parameters.</p>

        </div>

        <div class="section"><h4 class="sectiontitle">SubMatrix </h4>
          
          <p>A SubMatrix is a container of measurement data spanned by a number of measurement rows. </p>

          <p>Up to one of these rows can be marked as the "independent row". Then all of the other measurement rows are considered to depend on this row. A time based row is often used as independent row, but quantities as pressure or amperage are just as possible.</p>

        </div>

        <div class="section"><h4 class="sectiontitle">LocalColumn</h4>
          
          <p>A LocalColumn is a row of measurement values belonging to one specific quantity. </p>

        </div>

        <div class="section"><h4 class="sectiontitle">MeaQuantity</h4>
          
          <p>A MeaQuantity defines the scientific characteristics of a measurement channel. This object is the link to the "Measurement Context Data".</p>

          <p>The MeaQuantity often are associated with sensors, which are described in the Context Data. These sensors can be regarded as "source" of the measured  values, but they have no direct relation.</p>

        </div>

      </div>

    </div>

    <div class="nested2" id="openMDM5.business_object_model.minimum_model.measurement_context_data"><a name="openMDM5.business_object_model.minimum_model.measurement_context_data"><!-- --></a>
      <h3 class="topictitle3">Measurement Context Data</h3>

      <div>
        <div class="section"><h4 class="sectiontitle">Unit</h4>
          
          <p>An Unit is a specific magnitude that is used as a standard of measurement. Basically what is defined by a "unit of measurement", e.g. gram, metre, second, litre, pascal, etc. </p>

        </div>

        <div class="section"><h4 class="sectiontitle">PhysDimension</h4>
          
          <p>A PhysDimension is a property which is associated with physical quantities for purposes of classification. Basically what is defined by a "physical dimension", e.g. mass, length, time, volume, pressure, etc. </p>

        </div>

        <div class="section"><h4 class="sectiontitle">Quantity</h4>
          
          <p>A Quantity is a property that is measured. It separates the same Unit from different use cases, e.g. air pressure, hydraulic pressure and sound pressure all have  different meanings.</p>

        </div>

      </div>

    </div>

  </div>

  <div class="nested1" id="openMDM5.application_model.minimum_model"><a name="openMDM5.application_model.minimum_model"><!-- --></a>
    <h2 class="topictitle2">Minimum Application Model</h2>

    <div class="nested2" id="openMDM5.application_model.minimum_model.attribute_listing"><a name="openMDM5.application_model.minimum_model.attribute_listing"><!-- --></a>
      <h3 class="topictitle3">Attribute Listing</h3>

      <div>
        <div class="section"><h4 class="sectiontitle">ExternalComponent</h4>
          
          <div class="p"><br /><ul>
              <li><strong>Blocksize</strong>: Block size - Mandatory<div class="note"><span class="notetitle">Note:</span> The size is unspecified for types "DT_STRING", "DT_STRING_FLAGS_BEO","DT_STRING_UTF8","DT_STRING_UTF8_FLAGS_BEO", "DT_BYTESTR","DT_BYTESTR_BEO" and "DT_BLOB". The value must be specified in all other cases.</div>
</li>

              <li><strong>FlagsFilenameURL</strong>: URL of the file name containing the flags of the corresponding local column - Optional</li>

              <li><strong>FlagsStartOffset</strong>: Offset where the Flags begin - Optional</li>

              <li><strong>FilenameURL</strong>: URL of the file name containing the values of the corresponding local column - Mandatory</li>

              <li><strong>Length</strong>:Length of this component - Mandatory. <div class="note"><span class="notetitle">Note:</span> For all numeric data types it is given as number of values and for all exceptions mentioned in the attribute "Blocksize" it is given as number of bytes.</div>
</li>

              <li><strong>OrdinalNumber</strong>: Specifies the segment number of this external component - Optional. It must be unique within the context of its father. The first segment will have a value of 1. No gaps may exist in the ordinal number of the external components of one local column. If this base attribute is not contained in an application model, each local column that saves its values in external components may only use one external component per local column. If an external component instance does not specify a value for ordinal_number the default value of 1 shall be assumed.</li>

              <li><strong>StartOffset</strong>: Starting offset within the file - Mandatory.<div class="note"><span class="notetitle">Note:</span> It is unspecified for the DataType "DT_BLOB" and must be specified in all other cases.</div>
</li>

              <li><strong>TypeSpecification</strong>: DataType of the values (see enumeration "datatype_enum") - Mandatory</li>

              <li><strong>ValuesPerBlock</strong>: Values per block - Mandatory<div class="note"><span class="notetitle">Note:</span> It is unspecified for the DataType "DT_BLOB" and must be specified in all other cases.</div>
</li>

              <li><strong>ValueOffset</strong>: Value offset - Mandatory<div class="note"><span class="notetitle">Note:</span> The offset is unspecified for types "DT_STRING", "DT_STRING_FLAGS_BEO","DT_STRING_UTF8","DT_STRING_UTF8_FLAGS_BEO", "DT_BYTESTR","DT_BYTESTR_BEO" and "DT_BLOB". The value must be specified in all other cases.</div>
</li>

            </ul>
</div>

        </div>

        <div class="section"><h4 class="sectiontitle">LocalColumn</h4>
          
          <div class="p"><br /><ul>
              <li><strong>AxisType</strong>: Type of the mathematical reference axis (see enumeration "axistype" ) - Optional</li>

              <li><strong>GenerationParameters</strong>: List of parameters necessary to calculate the values for raw local columns - Optional. Omitted for local columns of types explicit, implicit, and external_component.</li>

              <li><strong>GlobalFlag</strong>: 2-Byte validation flag (see ODS specification for allocation) - Optional<div class="note"><span class="notetitle">Note:</span> Either this attribute or the "Flags" attribute must be set:</div>
</li>

              <li><strong>Flags</strong>: Sequence of 2-Byte validation flags (see ODS specification for allocation) - Optional<div class="note"><span class="notetitle">Note:</span> Either this attribute or the "GlobalFlag" attribute must be set:</div>
</li>

              <li><strong>IndepedentFlag</strong>: Wether this channel is measured independent from other channels - Mandatory. 0 - dependent, 1 - independent. <div class="note"><span class="notetitle">Note:</span> Not more than one local column per SubMatrix may be independent. </div>
</li>

              <li><strong>RawDatatype</strong>: Datatype of the raw data (see enumeration "datatype_enum") - Optional</li>

              <li><strong>SequenceRepresentation</strong>: Data storage type (see ODS seq_rep enumeration for values and description) - Mandatory</li>

              <li><strong>Values</strong>: Sequence of measurement values - Optional. This attribute is used when the values are stored implicitly. </li>

            </ul>
</div>

        </div>

        <div class="section"><h4 class="sectiontitle">MeaQuantity</h4>
          
          <div class="p"><br /><ul>
              <li><strong>Average</strong>: The average of all contained values - Optional</li>

              <li><strong>DataType</strong>: DataType of the result values with this quantity - Mandatory</li>

              <li><strong>Deviation</strong>: The standard deviation of all contained values - Optional</li>

              <li><strong>Dimension</strong>: Number of values for each rank - Optional</li>

              <li><strong>Interpolation</strong>: Which type is used when needed, during interpolation - Optional</li>

              <li><strong>Maximum</strong>: The maximum value of all contained values - Optional</li>

              <li><strong>Minimum</strong>: The minimum value of all contained values - Optional</li>

              <li><strong>Rank</strong>: Rank of a tensor, number of value dimensions - Optional</li>

              <li><strong>TypeSize</strong>: Length limit of a value, for example the maximum length of a string - Optional </li>

            </ul>
</div>

        </div>

        <div class="section"><h4 class="sectiontitle">MeaResult</h4>
          
          <div class="p"><br /><ul>
              <li><strong>MeasurementBegin</strong>: Date, as to when the measurement process has been started - Optional</li>

              <li><strong>MeasurementEnd</strong>: Date, as to when the measurement process has been ended - Optional</li>

            </ul>
</div>

        </div>

        <div class="section"><h4 class="sectiontitle">PhysDimesion</h4>
          
          <div class="p"><br /><ul>
              <li><strong>Current</strong>: Numerator of exponent for light - Mandatory</li>

              <li><strong>Length</strong>: Numerator of exponent for length - Mandatory</li>

              <li><strong>LuminousIntensity</strong>: Numerator of exponent for light - Mandatory</li>

              <li><strong>Mass</strong>: Numerator of exponent for mass - Mandatory</li>

              <li><strong>MolarAmount</strong>:Numerator of exponent for molar amount - Mandatory</li>

              <li><strong>Temperature</strong>: Numerator of exponent for temperature - Mandatory</li>

              <li><strong>Time</strong>: Numerator of exponent for time - Mandatory</li>

            </ul>
</div>

        </div>

        <div class="section"><h4 class="sectiontitle">ResultParameter</h4>
          
          <div class="p"><br /><ul>
              <li><strong>DataType</strong>: DataType of the ResultParameter - Mandatory</li>

              <li><strong>Value</strong>: Value of the ResultParameter as String representation - Mandatory</li>

            </ul>
</div>

        </div>

        <div class="section"><h4 class="sectiontitle">Submatrix</h4>
          
          <div class="p"><br /><ul>
              <li><strong>SubMatrixNoRows</strong>: The number of rows within this SubMatrix - Mandatory. This indicates the number of measurement channels.</li>

            </ul>
</div>

        </div>

        <div class="section"><h4 class="sectiontitle">Test</h4>
          
          <div class="p"><br /><ul>
              <li><strong>DateClosed</strong>: Locking Date of the Test - Optional. After this date no more data has added to the Test.</li>

            </ul>
</div>

        </div>

        <div class="section"><h4 class="sectiontitle">Unit</h4>
          
          <div class="p"><br /><ul>
              <li><strong>dB</strong>: Determines if the unit is a Decibel ratio - Optional</li>

              <li><strong>dB_reference_factor</strong>: Decibel reference factor for Decibel ratios - Optional</li>

              <li><strong>Factor</strong>: Factor to get the SI unit - Mandatory</li>

              <li><strong>Offset</strong>: Offset to get the SI unit - Mandatory</li>

            </ul>
</div>

        </div>

      </div>

    </div>

    <div class="nested2" id="openMDM5.application_model.minimum_model.overview"><a name="openMDM5.application_model.minimum_model.overview"><!-- --></a>
      <h3 class="topictitle3">Overview</h3>

      <div>
        <p><img src="images/Minimal Application Model.png" /></p>

      </div>

    </div>

    <div class="nested2" id="openMDM5.application_model.minimum_model.generic"><a name="openMDM5.application_model.minimum_model.generic"><!-- --></a>
      <h3 class="topictitle3">Generic Part </h3>

      <div>
        <p>It was mentioned, that that the Minimum Application Model is mostly fixed. This section describes the generic parts of the model.</p>

        <div class="section"><h4 class="sectiontitle">Context Data</h4>
          
          <p>The largest share is located beneath the Context Data. As displayed above  each TestStep has a relation to each Component Type (UnitUnderTest, TestSequence, TestEquipment). From this point the generic part begins. </p>

          <p>For each part of a component a own Application Element with the type specific Base Element ("AoUnitUnderTestPart", "AoTestSequencePart", "AoTestEquipmentPart" has to be created. For example if an engine should be described, there would be an Application Element "Engine" with the Base Element "AoUnitUnderTestPart".</p>

          <p>All attributes, that are required for describing a part, are modeled as Application Attributes of the particular Application Element. Besides this attributes there has to be the common attributes "Id", "Name" and "MimeType". </p>

          <p>The Sensor business object is a special part of TestEquipment. It is modeled as a own Application Element with the Base Element "AoTestEquipmentPart" and its attributes like it has been explained above. But the Sensor's Application Element always has a father-child-relation to another TestEquipment part with the Sensor's one being a child. So the all "second level" TestEquipment parts are regarded as Sensor objects. </p>

        </div>

        <div class="section"><h4 class="sectiontitle">Generic Attributes</h4>
          
          <p>Each Application Element in a openMDM Application Model can be provided with additional Application Attributes, that are required to store  data, that can't be stored in the existing model. For example could the Application Element "TestStep" get the attribute "DesiredMeasurementDate" to store the planned measurement date.</p>

          <div class="note"><span class="notetitle">Note:</span> This feature should be treated with caution. It should not be used for information that belong to the Context Data. If the requirement for the attribute is desired by several sources, then it should be taken into account that the attribute should be included in the Minimum Application Model. If the additional information is spread between a number of attributes, then it is better to create a Module and extend the model with it.</div>

        </div>

      </div>

    </div>

  </div>

  <div class="nested1" id="openMDM5.business_object_model.default_model"><a name="openMDM5.business_object_model.default_model"><!-- --></a>
    <h2 class="topictitle2">Default Model</h2>

    <div>
      <p>The Default Model extends the Minimum Model to provide some use cases  that are required in nearly every openMDM application. This is mainly covered by the measurement template feature and the classification feature.</p>

      <div class="p">Use Cases that are covered with this model:<br /><ul>
          <li>Administrate Catalog Components</li>

          <li>Administrate Component Templates</li>

          <li>Administrate TestStep Templates</li>

          <li>Administrate Test Templates</li>

          <li>Represent a Workflow for Test Data</li>

          <li>Structure Test Data</li>

        </ul>
</div>

    </div>

    <div class="nested2" id="openMDM5.business_object_model.default_model.measurement_templatesl"><a name="openMDM5.business_object_model.default_model.measurement_templatesl"><!-- --></a>
      <h3 class="topictitle3">Measurement Templates</h3>

      <div>
        <p>openMDM Templates are a form of descriptive pattern, by means of which a structure of Tests, TestSteps and Context Data can be defined and standardized. They are used for test planning and the verification of the conformity of test specifications and test results. </p>

        <div class="p">Every template is developed out of a catalog. The catalog consists of components (Catalog Components) that are related to one Context Data object (UnitUnderTest, TestSequence, TestEquipment). A Catalog Component again consists of a set of context data attributes (Catalog Attributes). A attributes is basically defined by a name and a data type. In addition for each attribute a package of properties can be defined, which influence their handling within the workflow:<br /><ul>
            <li>optional - defines, whether the attribute is required for a completely specification of the Context Data. This is valid for attributes, whose values are known after the execution of a test (e.g. weather conditions) or attributes, whose values are not known in every case. </li>

            <li>copyable - defines, whether the content of the attribute should be inherited if the Context Data is copied. Note: identifying attributes should not be copyable.</li>

            <li>sortindex - index for displaying purposes </li>

          </ul>
A Catalog Sensor is a special form of a Catalog Component to describe a sensor, which was mentioned in the Minimum Model.  </div>

        <p>The templates themselves are organized a hierarchic form. The lowest layer is formed by Component Templates, which describing the characteristics of the  Context Data triple. (UnitUnderTest, TestSequence, TestEquipment). Every Component Templates consists on a set of Catalog Components, which can be modfied with limitations. So the Component Template  and its attributes (Template Attributes) are always associated with a catalog counterpart. Structurally a Component Template is formed as tree with a root object (Template Component Root). Template Components can be nested under the root or other Template Components. In addition to normal template attributes a Template Test Equipment can be associated with a set of Template Sensors. A Template Sensor has attributes as a Template Component, but has always a relation to a MeaQuanity and thereby to an Unit, a PhysDimension and a Quantity.</p>

        <p><img src="images/Measurement Templates.png" /></p>

        <p>A Template TestStep is build of exactly one Component Template for each Context Data type. A Template Test is build of a set of Template TestSteps, which can be defined as optional.  </p>

        <p>For structuring purposes the Template Group object can be used. It can be associated with a Test, TestStep or a Component template. Moreover it's possible, to nest a Template Group under another to represent a tree structure.</p>

        <p>A Template MeaResult define rules for creating measurement data, e.g. for creating threshold values, extreme values or target value graphs. This includes the Template Submatrix, wich defines a value range for the number of rows for the Submatrices that will be associate with  the appropriate MeaResult. In equivalent to Template Sensors a Template ParameterSet can be defined for Template MeaResults. In addition a Template ParameterSet can be defined for the Template Sensor. With Template ParameterSet it is possible to define default values for ResultParameters.  </p>

      </div>

    </div>

    <div class="nested2" id="openMDM5.business_object_model.default_model.management_structure"><a name="openMDM5.business_object_model.default_model.management_structure"><!-- --></a>
      <h3 class="topictitle3">Management Structure</h3>

      <div>
        <p>The default model provides additional business objects for structuring purposes within the Management Data section. They conduce to simplify the administration and preparation of data. They contain information about usage, organizational correlation and the history of the data, but no functional content.  An other field of application is using these objects as appliance for access authority.</p>

        <div class="note"><span class="notetitle">Note:</span> It's important to keep the Management Structure entirely clean of functional content, which refer to the tests themselves. On the one hand Tests should contain all for them relevant information. On the other hand there is a risk of complicating the maintenance of the data or creating inconsistences, because the information is stored redundantly.</div>

        <p><img src="images/Management Structure.png" /></p>

        <div class="section"><h4 class="sectiontitle">Project</h4>
          
          <p>Projects serve as reference of tests to a specific subject, series, scope, ect.</p>

          <p>The form and content are not prescribed but can influence the options of access rights. Possible assignments are product development projects, practical approaches (e.g "Oil Analysis") or organizational criterias (e.g. "Testbench GLaDOS")</p>

        </div>

        <div class="section"><h4 class="sectiontitle">StructureLevel</h4>
          
          <p>A StructureLevel is an optional grouping for a Test within a Project.</p>

        </div>

      </div>

    </div>

    <div class="nested2" id="openMDM5.business_object_model.default_model.status"><a name="openMDM5.business_object_model.default_model.status"><!-- --></a>
      <h3 class="topictitle3">Status</h3>

      <div>
        <div class="p">A test process is normally be executed according to a specific workflow. So a stateful model is necessary to fulfill a momentary traceability. The Status business object describes the current workflow state  of another business object. The stateful business objects are:<br /><ul>
            <li>
              <strong>Project</strong>
            </li>

            <li>
              <strong>StructureLevel</strong>
            </li>

            <li>
              <strong>Test</strong>
            </li>

            <li>
              <strong>TestStep</strong>
            </li>

            <li>
              <strong>MeaResult</strong>
            </li>

          </ul>
</div>

        <p><img src="images/Status Model.png" /></p>

        <div class="p">The following values of Status are possible:<br /><ul>
            <li><strong>Active</strong>: The business object is being modified</li>

            <li><strong>Canceled</strong>: The request for this business object has been canceled</li>

            <li><strong>Checked</strong>: Business object was imported to openMDM and the data has been reviewed and validated</li>

            <li><strong>Closed</strong>: Locked, no data can be added to this business object</li>

            <li><strong>Defining</strong>: The Context Data of this business object is being defined.</li>

            <li><strong>Done</strong>: The process for business object has been completed and it's ready to be import in the openMDM system</li>

            <li><strong>Frozen:</strong> No further result data can be added to this business object.</li>

            <li><strong>Imported</strong>: The business object has been completely imported to the openMDM system</li>

            <li><strong>Importing:</strong> The business object is being currently imported to the openMDM system</li>

            <li><strong>Published:</strong> All contents of this business object have been reviewed and it is available to evaluation and reporting.</li>

            <li><strong>Rejected</strong>: The business object has been rejected by the responsible person due to any conflict.</li>

            <li><strong>Released:</strong> The business object has been completely described and is ready for the test process. </li>

          </ul>
</div>

        <div class="note"><span class="notetitle">Note:</span> Not every Status value must be valid for every business object. Custom rules can be defined by a system planer to map a corporate workflow.</div>

      </div>

    </div>

  </div>

  <div class="nested1" id="openMDM5.application_model.default_model"><a name="openMDM5.application_model.default_model"><!-- --></a>
    <h2 class="topictitle2">Default Model</h2>

    <div class="nested2" id="openMDM5.application_model.minimum_model.measurement_templates"><a name="openMDM5.application_model.minimum_model.measurement_templates"><!-- --></a>
      <h3 class="topictitle3">Measurement Templates</h3>

      <div class="nested3" id="openMDM5.application_model.minimum_model.measurement_templates.attribute_listing"><a name="openMDM5.application_model.minimum_model.measurement_templates.attribute_listing"><!-- --></a>
        <h4 class="topictitle4">Attribute Listing</h4>

        <div>
          <div class="section"><h5 class="sectiontitle">Cat[Type]Attr</h5>
            
            <div class="p"><br /><ul>
                <li><strong>ValueCopyable</strong>: Determines if this attribute value is copied if Context Data should be copied - Optional</li>

              </ul>
</div>

          </div>

          <div class="section"><h5 class="sectiontitle">Cat[Type]Comp</h5>
            
            <div class="p"><br /><ul>
                <li><strong>ValidFlag</strong>: Current state of the Catalog Component - Mandatory. The values are defined in the enumeration "valid_enum"and mean: <br /><ul>
                    <li><strong>editing</strong> (0): The Catalog Component is currently being edited and must not being processed. This is the initial state.</li>

                    <li><strong>valid</strong> (1): The Catalog Component is valid and can be used to create templates. Existing attributes can not be modified, but new attributes can be added.</li>

                    <li><strong>archive</strong> (2): The Catalog Component has been valid previously, but now has been replaced by a newer one. It cannot be modified anymore and should not be used for creating new templates.</li>

                  </ul>
</li>

              </ul>
</div>

          </div>

          <div class="section"><h5 class="sectiontitle">TplMeaResult</h5>
            
            <div class="p"><br /><ul>
                <li><strong>DefaultMimeType</strong>: The DataType that is set for a MeaResult, which is created with this template - Optional. </li>

                <li><strong>DefaultMimeType</strong> - The Name that is set for a MeaResult, which is created with this template - Optional.</li>

                <li><strong>ValidFlag</strong>: Current state of the Template MeaResult - Mandatory. The values are defined in the enumeration "valid_enum"and mean: <br /><ul>
                    <li><strong>editing</strong> (0): The Template MeaResult is currently being edited and must not being processed. This is the initial state.</li>

                    <li><strong>valid</strong> (1): The Template MeaResult is valid and can be used to create TestStep templates. None of its contents can be modified.</li>

                    <li><strong>archive</strong> (2): The Template MeaResult has been valid previously, but now has been replaced by a newer one. It cannot be modified anymore and should not be used for creating new TestStep templates.</li>

                  </ul>
</li>

              </ul>
</div>

          </div>

          <div class="section"><h5 class="sectiontitle">TplParameter</h5>
            
            <div class="p"><br /><ul>
                <li><strong>DefaultDataType</strong>: DataType that is set for the parameter after creating a MeaResult with the related MeaResult template - Optional. </li>

                <li><strong>DefaultValue</strong>: Initial value that is set for the parameter after creating a MeaResult with the related MeaResult template - Optional.<div class="note"><span class="notetitle">Note:</span> As the attribute's type is "DT_STRING" it has to be validated before setting it within the Context Data. (e.g. if the target attribute is of type "DT_LONG" and the default value contains alphanumeric values) </div>
</li>

              </ul>
</div>

          </div>

          <div class="section"><h5 class="sectiontitle">Tpl[Type]Attr</h5>
            
            <div class="p"><br /><ul>
                <li><strong>DefaultValue</strong>: Initial value that is set for the attribute after creating a TestStep with this template - Optional.<div class="note"><span class="notetitle">Note:</span> As the attribute's type is "DT_STRING" it has to be validated before setting it within the Context Data. (e.g. if the target attribute is of type "DT_LONG" and the default value contains alphanumeric values) </div>
</li>

                <li><strong>ValueReadOnly</strong>: Determines if this attribute can be modified during the test process - Optional <div class="note"><span class="notetitle">Note:</span> A default value should be set, if this is the case</div>
</li>

                <li><strong>Obligatory</strong>: Determines if the setting of this value is mandatory during the planing process - Optional</li>

              </ul>
</div>

          </div>

          <div class="section"><h5 class="sectiontitle">Tpl[Type]Comp</h5>
            
            <div class="p"><br /><ul>
                <li><strong>DefaultActive</strong>: Determines if the related Context Data component is created by default during the test planning process - Optional.</li>

                <li><strong>Optional</strong>: Determines if the specification of this Context Data component is obligatory for every TestStep with this template - Optional. </li>

                <li><strong>TestStepSeriesVariable</strong>: Determines if the content of this Context Data component is alterable within TestSteps that belong to a single Test - Optional. </li>

              </ul>
</div>

          </div>

          <div class="section"><h5 class="sectiontitle">Tpl[Type]Root</h5>
            
            <div class="p"><br /><ul>
                <li><strong>ValidFlag</strong>: Current state of the Template Component - Mandatory. The values are defined in the enumeration "valid_enum"and mean: <br /><ul>
                    <li><strong>editing</strong> (0): The Template Component is currently being edited and must not being processed. This is the initial state.</li>

                    <li><strong>valid</strong> (1): The Template Component is valid and can be used to create TestStep templates. None of its contents can be modified.</li>

                    <li><strong>archive</strong> (2): The Template Component has been valid previously, but now has been replaced by a newer one. It cannot be modified anymore and should not be used for creating new TestStep templates.</li>

                  </ul>
</li>

              </ul>
</div>

          </div>

          <div class="section"><h5 class="sectiontitle">TplSensorAttr</h5>
            
            <p>See Tpl[Type]Attr</p>

          </div>

          <div class="section"><h5 class="sectiontitle">TplSensor</h5>
            
            <div class="p"><br /><ul>
                <li><strong>DefaultActive</strong>: Determines if the related sensor is created by default during the test planning process - Optional.</li>

                <li><strong>Optional</strong>: Determines if the specification of this sensor is obligatory for every TestStep with this template - Optional.</li>

              </ul>
</div>

          </div>

          <div class="section"><h5 class="sectiontitle">TplSubMatrix</h5>
            
            <div class="p"><br /><ul>
                <li><strong>MinNoRows</strong>: Minimum number of rows that have to be present in SubMatrices that are created with this template - Optional </li>

                <li><strong>MaxNoRows</strong>: Maximum number of rows that have to be present in SubMatrices that are created with this template - Optional</li>

              </ul>
</div>

          </div>

          <div class="section"><h5 class="sectiontitle">TplTestStep</h5>
            
            <div class="p"><br /><ul>
                <li><strong>ValidFlag</strong>: Current state of the Template TestStep - Mandatory. The values are defined in the enumeration "valid_enum"and mean: <br /><ul>
                    <li><strong>editing</strong> (0): The Template TestStep is currently being edited and must not being processed. This is the initial state.</li>

                    <li><strong>valid</strong> (1): The Template TestStep is valid and can be used to create Test templates. None of its contents can be modified.</li>

                    <li><strong>archive</strong> (2): The Template TestStep has been valid previously, but now has been replaced by a newer one. It cannot be modified anymore and should not be used for creating new Test templates.</li>

                  </ul>
</li>

              </ul>
</div>

          </div>

          <div class="section"><h5 class="sectiontitle">TplTestStepUsage</h5>
            
            <div class="p"><br /><ul>
                <li><strong>DefaultActive</strong>: Determines if the related TestStep is created by default during the test planning process - Optional.</li>

                <li><strong>Optional</strong>: Determines if the related TestStep specification is obligatory for every Test with this template. - Optional </li>

              </ul>
</div>

          </div>

          <div class="section"><h5 class="sectiontitle">TplTest</h5>
            
            <div class="p"><br /><ul>
                <li><strong>ValidFlag</strong>: Current state of the Template Test - Mandatory. The values are defined in the enumeration "valid_enum"and mean: <br /><ul>
                    <li><strong>editing</strong> (0): The Template Test is currently being edited and must not being processed. This is the initial state.</li>

                    <li><strong>valid</strong> (1): The Template Test is valid and can be used to create new Tests. None of its contents can be modified.</li>

                    <li><strong>archive</strong> (2): The Template Test has been valid previously, but now has been replaced by a newer one. It cannot be modified anymore and should not be used for the specification of new Tests.</li>

                  </ul>
</li>

              </ul>
</div>

          </div>

        </div>

      </div>

      <div class="nested3" id="openMDM5.application_model.minimum_model.measurement_templates.overview"><a name="openMDM5.application_model.minimum_model.measurement_templates.overview"><!-- --></a>
        <h4 class="topictitle4">Overview</h4>

        <div>
          <p><img src="images/Template Application Model.png" /></p>

        </div>

      </div>

      <div class="nested3" id="openMDM5.application_model.minimum_model.measurement_templates.relations"><a name="openMDM5.application_model.minimum_model.measurement_templates.relations"><!-- --></a>
        <h4 class="topictitle4">Relations to the Minimum Model</h4>

        <div>
          <p><img src="images/Template To Minimum Application Model.png" /></p>

        </div>

      </div>

    </div>

    <div class="nested2" id="openMDM5.application_model.minimum_model.management_structure"><a name="openMDM5.application_model.minimum_model.management_structure"><!-- --></a>
      <h3 class="topictitle3">Management Structure</h3>

      <div class="nested3" id="openMDM5.application_model.minimum_model.management_structure.overview"><a name="openMDM5.application_model.minimum_model.management_structure.overview"><!-- --></a>
        <h4 class="topictitle4">Overview</h4>

        <div>
          <p><img src="images/Managment Structure Application Model.png" /></p>

        </div>

      </div>

    </div>

    <div class="nested2" id="openMDM5.application_model.minimum_model.status_model"><a name="openMDM5.application_model.minimum_model.status_model"><!-- --></a>
      <h3 class="topictitle3">Status</h3>

      <div class="nested3" id="openMDM5.application_model.minimum_model.status_model.overview"><a name="openMDM5.application_model.minimum_model.status_model.overview"><!-- --></a>
        <h4 class="topictitle4">Overview</h4>

        <div>
          <img src="images/Status Application Model.png" />
        </div>

      </div>

    </div>

  </div>

  <div class="nested1" id="openMDM5.business_object_model.custom_model"><a name="openMDM5.business_object_model.custom_model"><!-- --></a>
    <h2 class="topictitle2">Custom Model</h2>

    <div>
      <p>A openMDM bussiness object model isn't fixed in its scope. Since openMDM is based on ASAM ODS it is extendible, taking into account the rules that ODS defines. The Default Model can therefore be extended by a custom set of modules.</p>

      <div class="section"><h3 class="sectiontitle">Module</h3>
        
        <div class="p">A Module is package of features, which belong together and being self-sufficient. It is always associated with thematically similar use cases. If a system planer is interested in a Module, he can adopt it in a running system and start to using its interface in the corporate application. Every Module has to contain the following parts:<br /><ul>
            <li>complete description of its associated use cases </li>

            <li>business object model</li>

            <li>application model (documentation and ATFX-file) and its links to the openMDM Default Model</li>

            <li>set of interfaces granting access to the features </li>

            <li>at least one default implementation for every interface (additonal alternative implementations can be added in the future)</li>

          </ul>
   </div>

        <p><img src="images/Module Scope.png" /></p>

      </div>

      <div class="section"><h3 class="sectiontitle">Existing Modules</h3>
        
        <div class="p">As part of openMDM 4 there are the following Modules, which may be migrated in the future:<br /><ul>
            <li><strong>Security</strong>: Contains business objects used to define the status, the classification and the domain of MDM tests. </li>

            <li><strong>Tags</strong>: A business object, to mark Tests, TestSteps or MeaResult with a specific context information.</li>

            <li><strong>ExtSystem</strong>: Contains business objects for mappings between attributes in external system and MDM attributes.</li>

            <li><strong>FavouriteList</strong>: Contains business objects to create a collection of other business objects and relate them to a specific user.</li>

            <li><strong>I18n</strong>: Contains business objects for the internationalization of a openMDM model.</li>

            <li><strong>ValueList</strong>: Contains business objects to create String value lists to relate them with Catalog Attributes.</li>

            <li><strong>NVH</strong>: Contains only the official NVH physical dimension and unit instances. A full documentation of NVH is available in the ODS 5.3.0 specification. </li>

            <li><strong>MDM Log</strong>: Contains a business objects to persisting log messages.</li>

            <li><strong>Workflow</strong>: Contains business objects to represent the workflow of test processes.</li>

          </ul>
 </div>

      </div>

    </div>

  </div>


</body>
</html>