operatorfabric-core icon indicating copy to clipboard operation
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.