Object Model Quick Reference

Complete reference of all ProView DS objects: what you can create, dependencies, and minimum configuration.

Reference → Platform Modules Reference → Object Model Quick Reference


Overview

Complete reference of all ProView DS objects, aimed to assist programmers and AI LLM tools.

Architecture Concepts

The Triple Mirror Pattern

The ProView DS object model follows a one-to-three mirror system where the same structure reflects across:

Designer UIModule organization and navigation tree
SQLite DatabaseTable structure in .dbSLN solution files
Git/DevOpsJSON export structure for version control


Learning one structure teaches you all three.

Three-Level Hierarchy

All configurable objects follow a consistent hierarchy:

  • Module Container (or RunDBRoot)
    • Collection Table (plural naming, e.g., AlarmsGroups)
      • Object Instance (singular naming, e.g., AlarmGroup)

Naming Conventions

Single objectSingularDatasetDB, DatasetQuery
Table (collection)PluralDatasetsDBs, DatasetsQueries
Runtime pathSingularDataset.Query.Query1

Designer ↔ Object ↔ Database: One-to-one mapping across Designer UI pages, object model classes, and SQLite tables in the solution file (.dbSLN).


Named Objects vs Configuration Rows

Named Objects have unique names within their namespace and appear in the Designer navigation tree where users can create new instances. Internally, named objects are stored as tokens for efficient referencing — the Designer UI displays friendly names, but solution files store tokenized references.

Configuration Rows are objects without unique name identifiers, configured in grid/table editors:

DevicePointDevicesPointsIndividual point mappings within a Node
AlarmItemAlarmsItemsIndividual alarm configurations within a Group
HistorianTagHistorianHistorianTagsTag assignments within a Historian Table
ScriptExpressionScriptsExpressionsExpression-based calculations


Quick Navigation

UNSData FoundationAssetFolder, Tag, UserType, Enumeration, TagProvider
DevicesIndustrial OperationsProtocol, Channel, Node, Point, AccessType
AlarmsIndustrial OperationsAlarmsGroup, AlarmsItem, AlarmsArea
HistorianIndustrial OperationsStorageLocation, HistorianTable, HistorianTag
DatasetsBusinessDatasetDB, DatasetQuery, DatasetTable, DatasetFile
ReportsBusinessReportForm, WebData
ScriptsBusinessScriptTask, ScriptClass, ScriptExpression, ScriptReference
SecurityUISecurityUser, SecurityPermission, SecurityPolicy, SecuritySecret
DisplaysUIDisplay, Layout, Image, Symbol

UNS (Data Foundation)

The Unified Namespace holds all process variables and provides the central data layer for all modules.

Objects

TagUnsTagsTag.{name}Process variable
UserTypeUserTypes—Data structure template
EnumerationUserTypes—Number↔String mapping
TagProvider ServiceUnsTagProviders—External data source connection

Pre-defined Objects

None — user creates all objects.

Tag — Minimum Configuration

NameNo{Type}{N}Recommended to define meaningful name
TypeYes—Basic type (Integer, Double, Text, etc.) or UserType
PathNoRoot (empty)Folder location in hierarchy
DescriptionNo—Recommended for real projects

Tag Path and Access

(empty)Tag.TagName
\Line1\Machine1Tag.Line1.Machine1.TagName

UserType vs Tag

UserTypes and Tags have nearly identical structure:

  • Tag has PATH column (instance in hierarchy)
  • UserType has no PATH (template for creating Tags)

When a Tag uses a UserType, members are accessed as: Tag.Motor1.Speed, Tag.Motor1.Status

TagProvider Services

Enable dynamic external data without pre-defining tags:

  1. Create TagProvider Service with connection credentials
  2. Attach to a node in the Asset Tree
  3. Children are queried directly from external source
  4. Access via Asset("path") syntax only

→ Unified Namespace Reference


Devices (Industrial Operations)

Connects to field devices and maps device data to Tags.

Objects

ProtocolDevicesProtocols— (internal)Built-in communication driver
ChannelDevicesChannelsDevice.Channel.{name}Protocol instance + settings
NodeDevicesNodesDevice.Node.{name}Device address
PointDevicesPoints— (internal)Tag ↔ device address mapping
AccessTypeDevicesAccessTypesDevice.AccessType.{name}Read/write behavior

*Protocol is built-in, query only

Pre-defined Objects

ProtocolAll built-in (Modbus, ControlLogix, MQTT, OPC UA, etc.)
AccessTypeRead, Write, ReadWrite

Hierarchy

Protocol (built-in, select only)
  • Channel (protocol + settings)
    • Node (channel + device address)
      • Point (tag + address)

Dependencies

ChannelProtocol selection
NodeExisting Channel
PointExisting Node + Tag (auto-creates if omitted) + Address
AccessTypeNothing (standalone)


Point — Minimum Configuration

NodeYesParent node
TagYesAuto-created if not specified
AddressYesProtocol-specific syntax
AccessTypeNoDefaults to Read

→ Devices Module Reference


Alarms (Industrial Operations)

Monitors Tags for alarm conditions and manages alarm events.

Objects

AlarmsGroupAlarmsGroupsAlarm.Group.{name}Behavior settings
AlarmsItemAlarmsItemsAlarm.Item.{name}Alarm definition
AlarmsAreaAlarmsAreasAlarm.Area.{name}Hierarchy organization

Pre-defined Objects

AlarmsGroupCritical, Warning, AuditTrail

Dependencies

AlarmsGroupNothing (standalone)
AlarmsItemExisting Tag + Existing Group
AlarmsAreaNothing (standalone tree)

AlarmsItem — Minimum Configuration

TagYesTag to monitor
ConditionYesTrigger expression
MessageYesAlarm message text
GroupYesCan use pre-defined (Critical, Warning, AuditTrail)
AreaNoOptional hierarchy placement

→ Alarms Module Reference


Historian (Industrial Operations)

Records Tag values over time for historical analysis.

Objects

StorageLocationHistorianStorageLocationsHistorian.StorageLocation.{name}Where data is saved
HistorianTableHistorianHistorianTablesHistorian.Table.{name}Storage conditions
HistorianTagHistorianHistorianTagsHistorian.Tag.{name}Tag to historize

Pre-defined Objects


StorageLocationDataset.DB.TagHistorian (default to SQLite database)
HistorianTableTable1 (basic settings)

Hierarchy


Hierarchy


  • StorageLocation (database connection)
    • HistorianTable (storage rules)
      • HistorianTag (which tags)

Dependencies

StorageLocationNothing (standalone)
HistorianTableExisting StorageLocation
HistorianTagExisting Tag + Existing HistorianTable


HistorianTag — Minimum Configuration

TagYesTag to historize
HistorianTableYesCan use pre-defined Table1

→ Historian Module Reference


Datasets (Business)

Connects to SQL databases for queries, table operations, and file I/O.

Objects

DatasetDBDatasetsDBsDataset.DB.{name}Database connection
DatasetQueryDatasetsQueriesDataset.Query.{name}SQL statement
DatasetTableDatasetsTablesDataset.Table.{name}Direct table mapping
DatasetFileDatasetsFilesDataset.File.{name}File I/O

Pre-defined Objects

DatasetDBTagHistorian, AlarmHistorian, RuntimeUsers, Retentive (all SQLite by default)

Dependencies

DatasetDBNothing (standalone)
DatasetQueryExisting DatasetDB
DatasetTableExisting DatasetDB
DatasetFileNothing (standalone, unrelated to DBs)

DatasetQuery — Minimum Configuration

DatasetDBYesCan use pre-defined
QueryYesSQL statement, supports {TagName} for runtime substitution

→ Datasets Module Reference


Reports (Business)

Generates documents and handles web data interchange.

Objects

ReportFormReportsFormsReport.Form.{name}Document template
WebDataReportsWebDataReport.WebData.{name}JSON/XML/Text data object

Pre-defined Objects

None.

Dependencies

ReportFormNothing (references Tags in template)
WebDataNothing (standalone)

→ Reports Module Reference


Scripts (Business)

Custom code execution in C#, VB.NET, or Python.

Objects

ScriptTaskScriptsTasksScript.Task.{name}Event/time triggered code
ScriptClassScriptsClassesScript.Class.{name}Reusable function library
ScriptExpressionScriptsExpressionsScript.Expression.{name}One-line auto-executing expression
ScriptReferenceScriptsReferencesScript.Reference.{name}External DLL reference

Pre-defined Objects

None.

Dependencies


ScriptTaskNothing (can use Classes and References)
ScriptClassNothing (can use References)
ScriptExpressionNothing (references Tags in expression)
ScriptReferenceNothing (standalone)

ScriptExpression Note

ScriptExpressions can auto-trigger when referenced Tags change value.

→ Scripts Module Reference


Security (UI)

Users, permissions, and access control.

Objects

SecurityUserSecurityUsersSecurity.User.{name}User account
SecurityPermissionSecurityPermissionsSecurity.Permission.{name}Permission flags
SecurityPolicySecurityPoliciesSecurity.Policy.{name}Login/session rules
SecuritySecretSecuritySecretsSecurity.Secret.{name}Protected credentials

Pre-defined Objects

SecurityUserAdministrator, Guest, User
SecurityPermissionAdministrator, Guest, Maintenance, Engineering, Supervisor, Operator, User, Group8–Group24
SecurityPolicyDefault policy

Dependencies

SecurityUserExisting Permission(s) + Existing Policy
SecurityPermissionNothing (standalone)
SecurityPolicyNothing (standalone)
SecuritySecretNothing (standalone)

SecuritySecret

Encrypted storage for passwords used in Datasets (DB connections) and Devices (device connections).

→ Security Module Reference


Displays (UI)

Operator interface screens and layouts.

Objects

DisplayDisplaysDisplay.{name}UI screen
LayoutLayoutsLayout.{name}Frame organization
ImageImagesImage.{name}Imported graphic
SymbolSymbolsSymbol.{name}Reusable component

Pre-defined Objects

Symbol~2000 in Product Library

Dependencies

DisplayNothing (standalone)
LayoutExisting Displays to place in frames
ImageExternal file to import
SymbolNothing (standalone)

Display Types

CanvasProcess synoptics, fixed positioningAll elements + graphic primitives
DashboardResponsive grid layoutAll elements (no primitives)

→ Displays Module Reference

→ Display Controls Reference


Configuration Dialogs

These are built-in settings dialogs to the solution or specific modules, not objects to be created. 

Solution SettingsSolutionGlobal solution configuration
Alarm Global SettingsAlarmsAlarm module defaults
Display Client SettingsDisplaysClient behavior defaults

Solution Categories

Solution categories are metadata information labels, created by the user, that be can applied to any object in the system. 



All Objects Summary


UNSTag, UserType, Enumeration, TagProvider Service
DevicesProtocol*, Channel, Node, Point, AccessType
AlarmsAlarmsGroup, AlarmsItem, AlarmsArea
HistorianStorageLocation, HistorianTable, HistorianTag
DatasetsDatasetDB, DatasetQuery, DatasetTable, DatasetFile
ReportsReportForm, WebData
ScriptsScriptTask, ScriptClass, ScriptExpression, ScriptReference
SecuritySecurityUser, SecurityPermission, SecurityPolicy, SecuritySecret
DisplaysDisplay, Layout, Image, Symbol

Runtime Namespace Reference

Syntax by Context

Scripts / CodeBehind@ prefix required@Tag.Temperature.Value
Expressions / GridsDirect accessTag.Temperature.Value
Display BindingFiltered by typeTemperature (tags only)

Domain Separation

ServerGlobal, synchronized across all clients@Server.Date, Tag.*, Alarm.*, Device.*
ClientLocal to each client process@Client.Username, @Client.DisplayName

Even on a single computer, separate processes maintain this separation for security and performance.

→ Built-in Namespaces

→ Built-in Namespaces Reference


Objects with Custom Editors

The following objects have dedicated visual editors. Content is stored in hidden *Contents tables managed internally by the system:

DisplayCanvas Editor (XAML)
SymbolCanvas Editor (XAML)
ScriptTaskCode Editor
ScriptClassCode Editor
ReportFormReport Designer
WebDataWebData Editor
DatasetQuerySQL Query Editor



Tag Types Reference

Built-in Types

Digital151Int320 or 1
Integer152Int32±2,147,483,647
Double153Double±1.79×10³??
Text154StringUnicode, 2GB max
DateTime155DateTimeOffsetYear 0001-9999
Long156Int64±9.2×10¹?
Decimal157Decimal28-29 significant digits
TimeSpan158TimeSpanDays to milliseconds
Timer162Int32Multiple timer modes
Counter163Int32Up/down counting
DataTable164DataTableIn-memory table
Image165Byte[]Binary content
Guid166Guid128-bit unique ID
Json167StringJSON with built-in parsing
Reference170DynamicTag reference

UserType References

UserTypes are assigned IDs starting at 201:

  • First UserType created: ID 201
  • Second UserType: ID 202
  • And so on...

In JSON, reference a UserType with: "Type": 201


See Also