Skip to content

Multi Plugin

Kevalkumar edited this page Jan 23, 2026 · 1 revision

Purpose

In many scenarios, you may want to split data across multiple plugins (for example one for sensor data, one for maintenance, one for configuration).

Multi-Plugin support allows DataEngine to:

  • Call more than one Plugin for the same request.
  • Merge their responses.
  • Resolve conflicts deterministically.

Configuration is done via PluginConfig.Plugins and MultiPluginConflictOption in the DataEngine configuration.

For initial setups and proofs of concept, it is recommended to start with a single Plugin configuration.

How Multiple Plugins Work Together

  1. Configured plugins

    • In configuration you define multiple plugin entries, each with:
      • PluginName
      • PluginUrl
  2. Request fan-out

    • When DataEngine needs values for a submodel / semantic IDs, it can:
      • Call one specific plugin, or
      • Fan out the same request to multiple plugins.
  3. Aggregation

    • DataEngine collects all responses and builds a combined data set, keyed by semantic IDs or element identifiers.

Orchestration & Conflict Resolution

When multiple plugins return values for the same semantic ID or submodel element, DataEngine uses the configured conflict strategy (from MultiPluginConflictOption.HandlingMode):

  • TakeFirst

    • Take the value from the first plugin that provided a value.
    • Remaining values for the same ID are ignored.
  • SkipConflictingIds

    • If more than one plugin returns a value for the same ID, drop that ID entirely from the combined result.
    • Non-conflicting IDs are still used.
  • ThrowError

    • If multiple plugins provide a value for the same ID, DataEngine returns an error.
    • The client can then decide how to handle or reconfigure plugins.

Typical Patterns

  • Functional separation

    • One plugin for master data (nameplate, contact information).
    • Another plugin for operational data (temperatures, usage hours).
  • Organizational separation

    • Different business units own different plugins but the same DataEngine.

In all cases, DataEngine keeps a single, AAS-compliant interface for clients, hiding the complexity of multiple underlying plugins.


Clone this wiki locally