Here is an overview of PowSyBl’s microservice architecture and corresponding repositories:
This service is responsible for raw network data storage. It relies on a file system to store its data and allows uploading and fetching networks in any format supported by PowSyBl (CGMES, UCTE, XIIDM, etc).
Almost all the features developed in PowSyBl rely on the IIDM API for accessing network data. The idea of this service is to re-implement the IIDM API to be better integrated in a typical microservice architecture. Instead of an in-memory implementation like in the PowSyBl core repository, this implementation is backed by a Cassandra database. The network model is stored in the database in a structured way (one table per equipment type and with indexes), so that we can query only the needed data and ensure good performance for common operations. Examples of common operations are a simple switch position change (only a few values), a single line diagram rendering (substation wide data) or a loadflow run (network wide data). The REST interface exposed by this service is very low-level for performance reasons. In particular, the write operations do not prevent inconsistent modifications. Therefore, network data should usually be accessed from this service using the provided Java client (the one which implements the IIDM API) and not directly from the REST interface because the java client is safe and prevents inconsistent modifications.
Substations and line paths positions can be stored and queried using this geographical data server. A Cassandra database is used to store the data. Data can be indexed by countries and nominal voltages. This service is typically used to display a network on a map. This service abstracts away the different sources of geographical data.
This service can convert a network stored in a case server to an IIDM network stored in the network store server.
The CGMES-GL profile contains substations and lines geographical positions. This service can take a CGMES network containing a GL profile from a case server and upload its content to the geographical data server.
This service can generate a voltage level single line diagram (in SVG) for a given voltage level in an IIDM network from a network store server.
This service is used to extract network data from a network store server and reshape the data to feed a UI network map component.
This is a high level network modification service. It can apply a list of predefined network modifications (switch position, setpoint, tap position, etc) or execute a Groovy script when a more generic and powerful way to modify the network is needed.
The load flow server is able to run a load flow on a network from a network store server and update the state variables.
This is the unique entry point for the front end. This service is responsible for study management (creation, opening, removal) and also exposes all operations from other services needed for the front end.
Study tool front end developped in React.js.