...
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:
- Make is it more easy to build your own distribution
- Make is it more easy to create custom plug-ins
- Less tangled code
- Reusable code
- Faster development speed (once it is ready)
- Plug-ins can be build in any code language and framework (as long as they adhere to the specifications)
...
- Use the standard webAPI as much as possible (developer.mozilla.org)
- It should be easy to write a plug-in
- Clear API's for plug-in authors
- 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".
Drawio | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
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)
...