This is in DRAFT. Feedback or improvements are welcome using the comment feature in confluence.
Motivation for creating a new generation of OpenSCD:
- Make is more easy to build your own distribution
- Make is 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)
Practical example for CoMPAS. CoMPAS currently relies on fork of OpenSCD in order to add the needed functionality:
The goal for CoMPAS would be to add the CoMPAS specific code as add-on to OpenSCD-next in form of plug-ins. The current "fork" will no longer be needed. CoMPAS will just make a distribution of OpenSCD including the CoMPAS plugins/extensions.
OpenSCD-core architecture overview
The OpenSCD next architecture consist of 5 major software components:
- OpenSCD-core
- Plug-ins
- Components
- add-ons
Overview of the global architecture
Components and their interaction. OpenSCD-core loads alle the "components/plugins etc".
OpenSCD-Core
OpenSCD-core is 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 consists of the open-scd
WebComponent, which is responsible for loading plugins and addons.
The open-scd
WebComponent is the outer shell of OpenSCD, containing limited functionality in order to make it flexible.
Editing of a (SCL) Document should
be handled by OpenSCD Core. OpenSCD Core provides an API for Document editing by listening to CustomEvents. These CustomEvents can be dispatched b Plugins.
Based on a configuration file OpenSCD-core load the different Plug-ins/addins etc.
Functionalitiy of OpenSCD-core:
Loading addons/plug-ins
Display the selected plug-in
Handling SCL edits
Host the SCL doc editing
SCL doc editing
The SCL doc editing is reponsible for manipulating the SCL. It takes care of the right sequince/order of SCL edits. For more information see OpenSCD-core handling SCL Edits.
OpenSCDPlugins
OpenSCD plug-in is a extension of OpenSCD-core to add functionality. This could be generic 61850 functionality or vendor/utility specific functionalitiy. Examples: datatemplate editor, substationsection editor, GOOSE editing etc.
OpenSCD-core supports 2 types of plugins: menu plugins
and editor plugins
. These plugins have a different behavior.
For more information see: OpenSCD-core plug-in
OpenSCD Components
OpenSCD Components are reusable WebComponents