Skip to main content
Version: 2.8

Generic Information Model Nodes

The information model describes the "blueprints" that are factored by the runtime into its node space.

Overview

The information model is a comprehensive set of nodes and structures applicable to the HumanOS® Runtime.

Schema

A schema is a description of the information model, like a blueprint. It can be applied to the node space once or many times.

This can be realized through:

  • Loading JSON file from the Config\DataModel\ folder
  • Loading devices, that are detected by some device detectors.
  • Injecting schema using REST API or other dedicated service interface
  • Dynamically instantiation of schema nodes through rules

The Schema header describes the schema and its usage:

AttributeDescriptionData Type
IdUnique id of the schema nodeSystem.Guid
NameName of the schemaSystem.String
ControlLevelControl level of the nodes. Default = 0System.Int32
PersistanceModeDefines if the nodes of the schema can be persisted. (Default = 0; Volatile = 1)EPersistance

Example in JSON notation:

{
"Id": "BC793870-2DB5-4B45-81CC-A9BFAB2E610E",
"Name": "MySchema",
"PersistanceMode": "Volatile",

}

Static Schema Loading

HumanOS® Runtime can load a static data model at start-up. The information model manager loads the previously created schema from the Config\DataModel\ folder.

The manager distinguishes between three types:

  • Objects: object schema files are loaded directly to the node space
  • Rules: rule schema files that are loaded directly to the node space
  • Schema: schema that are put to the node space as "schema". This allows to create the objects later through rules.
NamePath
Schema.\DataModel\Schema\
Objects.\DataModel\Objects\
Rules.\DataModel\Rules\

Dynamic Loading

A schema can be instantiated by instantiation rules according to some happening (events).

Loading through Plugin

A schema can be also instantiated by plugins using the kernel API. This allows to inject schema from external systems.

  • See "Kernel API Documentation".

Loading Device Information Schema

The device information schema is a dedicated information model for devices and systems attached by the UHAL.

Node Terminology

All constructs in HumanOS® are derived from the "Node". Following table gives a short overview on the most important basic constructs:

NameShort.Description
Node SpaceSpaceThe node space is the space where all nodes live and exist.
Control LevelLThe node space is divided into several control levels. Each control level is able to have its own processing network structure, data nodes and rules.
SchemaSSchema nodes contain an information model of a complex node structure. Schema can be instantiated in the node space brining their nodes to life.
DataNodeDData nodes contain data and are responsible for historization and access control. Typically, these nodes are visible from the outside through services like OPC-UA or MT-Connect.
ConstantNodeDcConstant data node. Value is static and readonly.
Command NodeCCommand nodes are used to perform actions.
EntityTypesETEntity types specifying an entity and its fields
EntityCollectionNodeECollection of entities.
RuleRRule define the behavior, activities and transformation of processing networks. They are triggered by events and executed autonomously.
TimerTnTimer firing timing events after n-seconds
Binary RelationBA relation between two nodes. It describes also the roles of the two nodes attending the relation.
AgentAAgent are active nodes able to perform activities in a system.
SkillsSkDefines a skill of an agent
WorkflowWDefines a workflow of activities and control nodes
Group RelationGSeveral data nodes, processors etc. can be organized in groups. Groups help to structure the node space. In many cases, groups are also visible from the outside through services like OPC-UA or MT-Connect.
  • See SDK Manual for insights about the different node types.

Node Types

The schema can contain following node type:

Example of a schema structure:

{
"Name": "MySchema",
"Id": "29FC1CDB-9734-43E8-B35A-756F36B649AA",
"Agents": [],
"AlarmEventPools": [],
"Commands": [],
"ConstantNodes": [],
"CustomNodes": [],
"DataNodes": [],
"EntityTypes": [],
"EntityCollections": [],
"ProcessingNetworks": [],
"Skills": [],
"Rules": [],
"Workflows": [],
"Timers": [],
"Groups": [
{
"Name": "Group",
"Id": "{0511EA04-2310-48DE-9705-DF65A60F6608}",
"Agents": [],
"AlarmEventPools": []
}
]
}