Files
wwtools/aot/dev-guide/appendix-f-attribute-categories.md
T
Joseph Doherty 32f26272ae Initial commit: Wonderware / System Platform tools and reference
Five tools under one repo, all docs organized per DOCS-GUIDE.md:

- aalogcli: .NET 4.8 / x86 CliFx CLI for reading System Platform binary
  logs (*.aaLGX) for LLM debugging, built on aaOpenSource/aaLog. Commands:
  last, tail, range, unread, fields. Stable JSON envelope under --llm-json.
  Build template under lib/build/ for rebuilding aaLogReader.dll.

- aot: ArchestrA Object Toolkit 2014 v4.0 reference material. Dev guide
  (Markdown converted from CHM), API reference for the ArchestrA.Toolkit
  namespace, and the Monitor / Watchdog VS sample solutions.

- graccesscli: .NET 4.8 / x86 CliFx CLI that automates Galaxy
  configuration via the ArchestrA GRAccess COM interop. Includes session
  daemon, IPC protocol, and llm-json envelope contract.

- grdb: SQL/DDL exploration of the Galaxy Repository database. DDL
  captures, reusable queries, hierarchy / contained-name <-> tag-name
  translation notes.

- histdb: LLM-oriented reference for AVEVA Historian retrieval. INSQL
  linked-server, extension tables, every wwXxx time-domain extension,
  every retrieval mode, alarm/event SQL recipes, REST API. Distilled
  from the 243-page Historian Retrieval Guide.

Root contains:
- CLAUDE.md: thin index pointing into each tool's README.
- DOCS-GUIDE.md: doctrine for organizing docs for LLM consumption.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 18:22:20 -04:00

4.9 KiB
Raw Blame History

ArchestrA Attribute Categories

An attributes category determines which namespaces an attribute appears in, whether the attribute can be written to, and what type of client (users, scripts, etc.) can write to it.

You should only allow as much access to an attribute as necessary. For example:

  • An attribute that is used only by config time logic to add or remove Virtual Primitives should be given a category that prevents it from becoming part of the run time namespace (for example, PackageOnly).
  • An attribute that doesnt make sense to configure in an editor should be given a category (for example, Calculated) that prevents it from becoming part of the config time namespace (and the custom object editor).
  • An attribute that needs to be configured and deployed but is not allowed to be modified at runtime should be given a category that prevents users or other objects from writing to it (for example, Writeable_C_Lockable).

Some attribute categories allow an attribute to be locked. This means that IDE users can lock the attribute in a template to protect its configured value from being changed in derived instances or templates. The value of a locked attribute cannot be modified, not even internally by the objects code.

In general, you should make attributes lockable whenever possible. Lockable attributes allow users to enforce standards and can simplify system maintenance. Locking data also helps minimize the size of a systems configuration database, which improves the speed of configuration tasks.

Note

An exception is raised if an objects logic attempts to modify a locked attribute. Therefore, before modifying a lockable attribute in your code, check whether it is locked.

The following table describes each attribute category.

Category Name Description
PackageOnly Only exists at config time. Not deployed.
PackageOnly_Lockable Only exists at config time. Not deployed. Can be locked.
Calculated Only exists at run time. Not externally writeable by users or other objects. Run time changes are not persisted to disk by the AppEngine.
Calculated_Retentive Only exists at run time. Not externally writeable by users or other objects. Run time changes are persisted to disk by the AppEngine.
Constant Defined by an object developer. Never changes. Exists at config time and run time.
Writeable_U Exists at config time and run time, but only the Security Classification is configurable. Only externally writeable by users at run time.
Writeable_S Only exists at run time. Only externally writeable by other objects at run time.
Writeable_US Exists at config time and run time, but only Security Classification is configurable. Externally writeable by users or other objects at run time.
Writeable_UC Exists at config time and run time. Only externally writeable by users at run time.
Writeable_UC_Lockable Exists at config time and run time. Only externally writeable by users at run time. Can be locked.
Writeable_USC Exists at config time and run time. Externally writeable by users or other objects at run time.
Writeable_USC_Lockable Exists at config time and run time. Externally writeable by users or other objects. Can be locked.
Writeable_C_Lockable Exists at config time and run time. Not writeable at run time, even by the object itself. Can be locked.

An attributes category also determines whether the attribute supports various other options, such as a default value or historization. See the following table for details.

Attribute Category Can set security classification Can have config time set handler Can have run time set handler Can be marked as “Frequently Accessed” Supports “Calculated Quality and Time” Default value can be set Supports alarms and history1 Supports “Advise Only Active”
PackageOnly N Y N N N Y N N
PackageOnly_Locakable N Y N N N Y N N
Constant N N N Y N Y N N
Writeable_C_Lockable N Y N Y N Y N N
Writeable_UC Y Y Y Y Y Y Y Y
Writeable_UC_Lockable Y Y Y Y Y Y Y Y
Writeable_USC Y Y Y Y Y Y Y Y
Writeable_USC_Lockable Y Y Y Y Y Y Y Y
Calculated N N Y Y Y N Y Y
Calculated_Retentive N N Y Y Y N Y Y
Writeable_S N N Y Y Y N Y Y
Writeable_U Y N Y Y Y N Y Y
Writeable_US Y N Y Y Y N Y Y
SystemInternal N N Y N N Y N N
SystemSetsOnly N N Y N N N N N
SystemWriteable N N Y N Y Y Y Y

1 Only non-array Boolean attributes can be alarmed. Only non-array attributes of the following types can be historized: Double, Float, Integer, Boolean, String, Custom Enumeration, and ElapsedTime,