operatorfabric-core
operatorfabric-core copied to clipboard
Main operatorfabric program
// Copyright (c) 2018-2022 RTE (http://www.rte-france.com) // See AUTHORS.txt // This document is subject to the terms of the Creative Commons Attribution 4.0 International license. // If a copy of the license was not distributed with this // file, You can obtain one at https://creativecommons.org/licenses/by/4.0/. // SPDX-License-Identifier: CC-BY-4.0
:imagesdir: src/docs/asciidoc/images
:sectnums: :icons: font :hide-uri-scheme:
= OperatorFabric README
image:https://img.shields.io/badge/license-MPL_2.0-blue.svg[MPL-2.0 License,link=https://www.mozilla.org/en-US/MPL/2.0/] image:https://img.shields.io/github/workflow/status/opfab/operatorfabric-core/CI/develop[Build Status,link=https://github.com/opfab/operatorfabric-core/actions] image:https://sonarcloud.io/api/project_badges/measure?project=org.lfenergy.operatorfabric%3Aoperatorfabric-core&metric=alert_status[Quality Gate,link=https://sonarcloud.io/dashboard?id=org.lfenergy.operatorfabric%3Aoperatorfabric-core] image:https://sonarcloud.io/api/project_badges/measure?project=org.lfenergy.operatorfabric%3Aoperatorfabric-core&metric=coverage[Coverage,link=https://sonarcloud.io/component_measures?id=org.lfenergy.operatorfabric%3Aoperatorfabric-core&metric=Coverage] image:https://sonarcloud.io/api/project_badges/measure?project=org.lfenergy.operatorfabric%3Aoperatorfabric-core&metric=code_smells[Code Smells,link=https://sonarcloud.io/component_measures?id=org.lfenergy.operatorfabric%3Aoperatorfabric-core&metric=Maintainability] image:https://bestpractices.coreinfrastructure.org/projects/4806/badge[CII Best Practices,link=https://bestpractices.coreinfrastructure.org/projects/4806] image:https://img.shields.io/badge/Join_us_on-Slack-blueviolet[OperatorFabric Slack Channel,link=https://lfenergy.slack.com/archives/C025ZGJPXM4]
See our website link:http://opfab.github.io/[opfab.github.io] for the complete documentation.
== Introduction
//tag::short_description[] OperatorFabric is a modular, extensible, industrial-strength platform for use in electricity, water, and other utility operations.
It aims to facilitate operational activities for utilities in two ways :
-
Centralize real time business events in a single place to avoid having multiple screens/software. To do so, OperatorFabric provides ** event notifications named "cards" with filtering features (severity , date , process ... ) ** event dispatching rules on a per user basis (based on groups, organizational entities, processes... ) ** event-sending endpoints for business applications ** a mechanism of templating to customize events rendering (using HTML5 ) ** a view of the events on a timeline or a calendar ** storage of all the events (archive feature) ** notifications via sounds ** possibilities to integrate screen form other applications
-
Facilitate interactions between operational control centers: ** Share information in real time, as pre-formatted cards that can be sent either manually by operators or automatically by external solutions. ** Introduce pre-formatted question/response exchanges between control centers. This can be used to implement operational processes (with the notion of "last time to respond").
** Share events in calendar (also allowing repeating events)
In addition, the following features are available: internationalization, light/dark mode for the UI, realtime connected users supervision, authorization mechanism.
Integration with existing IT systems is an overarching concern: support of Firefox and Chromium-based browsers, docker deployment, communication with business applications via REST API or Kafka, integration with external authentication systems (via OAuth2), monitoring via Prometheus endpoints.
OperatorFabric is part of the https://www.lfenergy.org/[LF Energy] coalition, a project of The Linux Foundation that supports open source innovation projects within the energy and electricity sectors.
OpFab is an open source platform licensed under https://www.mozilla.org/en-US/MPL/2.0/[Mozilla Public License V2]. The source code is hosted on GitHub in this repository : https://github.com/opfab/operatorfabric-core[operatorfabric-core].
Documentation is available at https://opfab.github.io/
//end::short_description[]
image::feed_screenshot.png[UI screenshot]
== Try it!
If you want to try OperatorFabric (see what the UI looks like with some test cards) in a few minutes, follow the steps below.
. Clone this repository +
git clone https://github.com/opfab/operatorfabric-core.git cd operatorfabric-core
. Launch our demo docker-compose file +
cd ./config/docker ./startOpfab.sh
. Once script is finished, log into the application UI at localhost:2002/ using operator1_fr/test as credentials.
. Push basic configuration and cards using the following test scripts + [source,shell]
./src/test/resources/loadTestConf.sh ./src/test/resources/send6TestCards.sh
TIP: If you want to experiment in more depth and have more details on how it works (as well as some troubleshooting), check out our link:https://opfab.github.io/documentation/current/getting_started/[Getting Started guide]!
== Technology stack
=== Development
OperatorFabric is mostly written in Java and based on the Spring framework. This makes writing and integrating software for a simplified and better coordination very easy.
image:https://img.shields.io/badge/Using-Java-%237473C0.svg?style=for-the-badge[Using Java,link=https://www.java.com] image:https://img.shields.io/badge/Using-Spring-%236db33f.svg?style=for-the-badge[Using Spring,link=https://spring.io/] image:https://img.shields.io/badge/Using-Angular-%237473C0.svg?style=for-the-badge[Using Angular,link=https://angular.io/] image:https://img.shields.io/badge/Using-MongoDB-%236db33f.svg?style=for-the-badge[Using Swagger,link=https://www.mongodb.com/community/] image:https://img.shields.io/badge/Using-Swagger-%237473C0.svg?style=for-the-badge[Using Swagger,link=https://swagger.io/] image:https://img.shields.io/badge/Using-RabbitMQ-%236db33f.svg?style=for-the-badge[Using Swagger,link=https://www.rabbitmq.com/]
=== Continuous Integration / Continuous Delivery
OperatorFabric is built and integrated using battle-tested tools and (open) platforms.
image:https://img.shields.io/badge/Built%20with-Gradle-%23410099.svg?style=for-the-badge[Built with Gradle,link=https://gradle.org/] image:https://img.shields.io/badge/Using-Github%20Actions-%23FF647D.svg?style=for-the-badge[Using Github Actions,link=https://github.com/opfab/operatorfabric-core/actions] image:https://img.shields.io/badge/Using-SonarCloud-%23FF647D.svg?style=for-the-badge[Using SonarCloud,link=https://sonarcloud.io/dashboard?id=org.lfenergy.operatorfabric%3Aoperatorfabric-core]
== Licensing
This project and all its sub-projects are licensed under https://www.mozilla.org/en-US/MPL/2.0/[Mozilla Public License V2.0]. See link:LICENSE.txt[LICENSE.txt]
== Contributing
Read our link:https://opfab.github.io/documentation/current/community/[Community Documentation] for more information on how to contribute to the project.