Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

To solve some limitation with the OpenSCD monolith architecture; and improved architecture is created. The Motivation for creating a new generation of OpenSCD-next architecture:

  1. Make is it more easy to build your own distribution
  2. Make is it more easy to create custom plug-ins
  3. Less tangled code
  4. Reusable code
  5. Faster development speed (once it is ready)
  6. Plug-ins can be build in any code language and framework (as long as they adhere to the specifications)

...

  1. Use the standard webAPI as much as possible (developer.mozilla.org)
  2. It should be easy to write a plug-in
  3. Clear API's for plug-in authors 
  4. Plug-in author authors can use components to speedup the development and give a consist consistent look and feel (optional)


OpenSCD-core architecture overview

The OpenSCD-next architecture consist of 4 major software components:

  • OpenSCD-core
  • Plug-ins
  • Components
  • addAdd-ons



Overview of the global architecture

Components and their interaction. OpenSCD-core loads alle all the "components/plugins etc".

draw.io Diagram
bordertrue
diagramNameOpenSCD Core Overview
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth911
revision7


A plugin plug-in can use EditEvent to make modifications in OpenSCD-core.

...

OpenSCD-Core

OpenSCD-core is the main application of OpenSCD-next. OpenSCD-core will be loaded once people open the application. OpenSCD-core sets the requirements for the plug-ins.

OpenSCD Core -core consists of the open-scd  WebComponent, which is responsible for loading plugins and addons.

...

Editing of a (SCL) Document should be handled by OpenSCD Core-core. OpenSCD Core -core provides an API for Document document editing by listening to CustomEvents. These CustomEvents can be dispatched b Pluginsby plug-ins.


Based on a configuration file OpenSCD-core load Core loads the different Plugplug-ins/addins addons etc.


Functionalitiy of OpenSCD-core:

...

The SCL doc editing is reponsible for manipulating the SCL. It takes care of the right sequincesequence/order of SCL edits. For more information see see OpenSCD-core handling SCL Edits.


OpenSCD

...

Plug-ins

An OpenSCD plug-in is an addition to OpenSCD-core Core to add functionality. This could be generic 61850 functionality or vendor/utility specific functionalitiy. Examples: datatemplate Datatemplate editor, substationsection substation-section editor, GOOSE editing etc.

OpenSCD-core Core supports 2 types of pluginsplug-ins: menu pluginsplug-ins and editor pluginsplug-ins. These plugins plug-ins have a different behavior/requirements

For more information see: OpenSCD-core plug-in

...

OpenSCD Components are reusable WebComponents. Components can be used by plug-ins to build functionality faster, plug-in authors can also decide to build everything themselves.

Examples: filterdlistst filtered-lists are used in many plug-ins. In order to re-use the code, and filteredlist a filtered-list component is build and published on NPM.


OpenSCD

...

Addons

OpenSCD addons are an extension of OpenSCD-core Core to split functionality. This functionality can be pure technical and requires no custom UI. Example Examples for some OpenSCD addons are Wizarding, Validating, Waiting, etc.

OpenSCD addons will be a replacement for current mixins, so there is no or /less need to fork  OpenSCD-core Core and to build mixins on top of the fork. Addons allow experiments with (potential) new core functionality. Succesful addons can be merged into OpenSCD-core.

...

Example: Wizarding API is hard to make pefect in the first run. If started with an addon for wizarding, we can experiment/use it. If it turns out that the addon is missing crucial functionality. We can introduce a new add-on next to the old addon (with its limitations).


What are For more information about mixins: TypeScript: Documentation - Mixins (typescriptlang.org)

...