Files
wwtools/aot/dev-guide/05-defining-primitives.md
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

3.3 KiB
Raw Permalink Blame History

Defining a Reusable Primitive

A reusable primitive is a primitive that is intended to be included into multiple objects. This allows you to share component-level code across objects. The Input and Output primitives that you can add in the Object Designer are good examples of how reusable primitives are beneficial.

Using the ArchestrA Object Toolkit, you can create your own custom reusable primitives and use them in your objects. For more information on how to add a reusable primitive to an object, see Adding a Reusable Primitive.

From a development perspective, creating a reusable primitive is very similar to creating an object. Therefore, this section describes only the procedures that are specific to developing a primitive.

Note

Reusable primitives must be added to an object before you can import them into a Galaxy. You cant import a reusable primitive alone.

Switching between Object/Primitive Mode

When working on an ArchestrA Object Toolkit project, you can switch between ApplicationObject and reusable primitive mode at any time. For example, when you start working on an ApplicationObject but decide that you want to implement its functionality as a reusable primitive instead, you can switch to primitive mode. If you later change your mind and decide that you do want to implement it as an object after all, you can simply switch back to object mode.

Any properties and features that are not relevant to the current mode are blocked from access in the Object Designer and Object Design View. However, they are still preserved in the project code, so when you switch back to the other mode, they are available again.

To switch between object and primitive mode

  1. Open the Object Designer.
  2. In the Shape pane, click the topmost node. The object properties appear in the Configuration pane.
  3. In the Category list, select either Application Object or Reusable Primitive, depending on which mode you want.
  4. Click OK.

Differences Between Editing Objects and Primitives

When developing a reusable primitive, there are certain differences as compared to developing an ApplicationObject:

  • The Object Designer doesnt have any fields for editing the minor version, toolset name or description. These settings are irrelevant for a reusable primitive.
  • The Configuration Event Handlers and IDE Behavior sections are removed from the Object Designer. Both are irrelevant for a reusable primitive. (The standard config time event handlers are still available via the Object Design View.)
  • A reusable primitive does not have its own setting for “Advise Only Active” support. “Advise Only Active” support is determined by the ApplicationObject that the primitive is used in.
  • Reusable primitives dont have their own custom editor. Any required configuration UI must be implemented in the editor of the object that contains it.
  • The Build & Import, Build & Instantiate and Build & Deploy build modes are not available. They are not applicable to a reusable primitive.
  • The Increment Minor Version versioning option is not applicable to reusable primitives.
  • The output file created by the build process is an .aaPRI file, not an .aaPDF file. You must add the reusable primitive to an object before you can import it into a Galaxy. You cant import a reusable primitive alone.