Edit on GitHub!

Technology

This page lists the technologies and tools chosen for the project

Current technology choices

Technology Choices

Programming language - Java

Java 17 is chosen as programming language.

Java build environment - Maven

For building the applications we use Maven. Maven is good supported in CI/CD.

Microservice deployment - Docker

Microservices are deployed as Linux based Docker container. Advantages of deployment in Docker container:

Database - BaseX

For the database BaseX](https://basex.org/) is chosen on following arguments:

Pros

Cons

XML Processing

XML Validation

Schematron

SCL XSD is the base schema for the SCL file validation. Even though, with XSD 1.1, it’s somehow possible to define co-occurrence constraints with tags “key”, “keyref” (combined with xpath selector) and restriction rules with “assert” (within a type definition), that is not enough to expressed complex and custom business logics.

Schematron is a rule-based validation language for making assertions about the presence or absence of patterns in XML trees. One doesn’t need heavy environment to use Schematron. Schematron is XML, uses xml technologies (XPATH) and is very straightforward (less than seven basic elements) It has features for XML processing that other schema validators don’t have:

It’s optimally used in combination with XML schema (XSD, RELAX NG).

Java frameworks for XML processing

Pros JAXB

Cons JAXB

Java libraries for schematron

Other supports for Schematron specification

RDF4J for IEC CIM configuration files

Pros RDF4J

Cons RDF4J

MapStruct

MapStruct is a Java framework to do bean mapping. MapStruct is for instance used in the CIM Mapping for mapping data between CIM classes and IEC 61850 classes. More information can be found on https://mapstruct.org/.

Pros

Cons

Java framework - Quarkus

For the framework to be used with Java we choose Quarkus.

Pros

When looking at the memory usage (and response times) of Quarkus, it’s definitely interesting for us. Also take a look at this comparison with Java Spring

Because CoMPAS is an application which also should run locally, memory usage is an important aspect. Together with being a modern microservice framework, backed by RedHat and being a Java framework (which we are having experience with) it’s the best choice for now!

Cons

Source control - GitHub

We choose GitHub for source control. This is good practice for open source development. The CoMPAS repositories can be found at https://github.com/com-pas/

CI/CD - GitHub actions

We choose GitHub Actions as mechanism for CI/CD.

Pros

Cons

Tool advise

This section lists the development tooling that is advised. Of course developers are free to use their own development tooling

SDE - Microsoft Visual Studio Code

Microsoft Visual Studio Code is a versatile development environment supporting many languages.