Giter Club home page Giter Club logo

soa-dashboard's Introduction

SOA-Dashboard

FOSSA Status

FOSSA-Report

Überblick

Das Projekt besteht aus zwei Teilen:

  • einem React Frontend
  • einem kleinem Server Backend für die Authentifizierung
  • und optional einem kleinen Server Backend für Housekeeping-Jobs in der SOA (z.B. Resend von Nachrichten)

Das Frontend liegt im Verzeichnis ./frontend. Hierbei handelt es sich um ein gewöhnliches CRA-Projekt, welches eine Single Page App realisiert.

Die Backends sind KOA-Server:

  • ./server.js bietet eine REST-Schnittstelle zur LDAP-Authentifizierung
  • ./backend-jobs/server.js liefert eine API für's Housekeeping

Working Demo: hier User = Password = testuser

Warum überhaupt ein Backend?

Die Authentifizierung findet gegen ActiveDirectory/LDAP statt. Ich habe kein NPM-Modul gefunden, welches nicht von dem Net-Modul aus node abhängig wäre. Das steht offensichtlich im Browser nicht zur Verfügung.

Eine Eigenimplementierung kam für mich nicht in Frage. Daher brauchte ich einen Node.js Prozess, der die Authentifizierung abhandelt.

Die API für's Housekeeping bietet einen Zugriff auf lokale Verzeichnisse: zum einen für die Definition und Logs der Housekeeping.Jobs, zum anderen um darüber für das Housekeeping benötigte Modell-Informationen bereit zu stellen.

High-Level Architektur

Für das ESB-Dashboard spielen verschiedene Komponenten zusammen:

Komponenten

Basis für die Daten des Dashboards sind die Logpunkte aus der SOA, die für die verschiedenen Laufzeitumgebungen der SOA über eine REST-Schnittstelle angebunden werden (siehe blauen Kasten). Die Authentifizierung des Nutzers erfolgt über einen REST-Call gegen den roten Kasten, der selbst wiederum das LDAP/ActiveDirectory anspricht.

Installation und Customising

1: Hole Sourcen:

git clone https://github.com/h9h/soa-dashboard.git

2: Lege Customising-Dateien in den Ordnern

./customisation

und

./frontend/src/customisation

entsprechend der dort liegenden README.md an:

3: Lege im Ordner

./frontend

eine .env gemäß dem Beispiel .env.example an.

4: yarn install einmal auf Ebene des Projektes und einmal im Ordner frontend.

Skripte

In der ./package.json sind verschiedene Skripte definiert:

Für die Entwicklung

yarn start

startet sowohl einen Hot-Loading Server für das Frontend, welches dann unter http://localhost:3000 verfügbar ist. Des Weiteren werden die Backends für Authentication und Housekeeping gestartet. Diese laufen standardmäßig unter Port 4166 bzw. 4000.

Alternativ können die drei Komponenten einzeln gestartet werden - dies ist sinnvoll, wenn man in der Entwicklung ein Backend durchstarten möchte, ohne immer das Frontend mit zu starten:

yarn ncc:server:auth
yarn ncc:server:file
yarn start:frontend

Für das Erzeugen der Artefakte mit Node-Backend

yarn build

baut die Frontend-SPA unter ./frontend/build. Ein Aufruf der index.html aus dem Build-Verzeichnis im Browser ergibt folgenden Zustand nach erfolgreichem Bau: Login ohne Authentifizierungsbackend

Auf der linken Seite ist ein Stop-Symbol und individueller Text zu sehen. Dies zeigt an, dass das Authentifizierungs- Backend nicht ereichbar ist.

yarn ncc:build

erzeugt unter ./dist zwei Verzeichnisse - "auth" und "file" - die jeweils eine index.js enthalten. Dieses sind fertig gebundelte JavaScript-Sourcen für die Backends.

Das Authentifizierungsbackend kann dann mittels node ./dist/auth gestartet werden. Danach verschwindet das Stop-Symbol: Login mit Authentifizierungsbackend

Für das Erzeugen der Artefakte mit Binary-Backend

Das Frontend wird wieder mit yarn build gebaut. Die Backends werden mittels

yarn pkg:server:dashboard
yarn pkg:server:file

als Windows-EXEs bereit gestellt.

Ein potentieller Betriebsmodus wäre dann, lokal esb-dashboard.exe zu starten, da diese sowohl das Frontend, als auch das Authentifizierungs-Backend bereit stellt. Das Dashboard steht dann unter http:/localhost:4166 zur Verfügung.

Alles zusammen

Mittels

yarn build:all

werden

  1. das Frontend gebundelt
  2. die esb-dashboard.exe und esb-jobs.exe erzeugt
  3. die Javascripte für Auth- und Jobs-Backend gebundelt
  4. und das gebundelte Auth-Javascript mit in das frontend/build-Verzeichnis kopiert.

Damit reicht es dann, das frontend/build Verzeichnis an den gewünschten Ort auf dem Server zu deployen und den Start von node ./auth.js in den Start des Servers einzubinden. Für den Stopp des Authentifizierungs-Backends reicht ein kill auf den Prozess. Es wird kein Zustand gehalten.

Hinweise

zeit/pkg

Hinter einem Proxy funktioniert das Herunterladen der Binaries für die Packages nicht. Dies äußert sich dadurch, dass der Bauschritt pkg:server:dashboard abbricht. Die Fehlermeldung ist in der Log-Datei output-dashboard-win-pkg.log zu finden. Dort ist auch der Name der Datei zu finden, die im folgenden Workaround dann manuell herunterzuladen ist.

Daher dieser Workaround:

(hier für v2.6, ansonsten entsprechende Version jeweils anpassen - siehe tag in der Logdatei)

  1. gehe zu https://github.com/vercel/pkg-fetch/releases/
  2. such die passende Version gemäß der Fehlermeldung in der Logdatei output-...-pkg.log
  3. Download die gewünschte Version gemäß Log-Datei
  4. Gehe zum ./pkg-cache Verzeichnis (bei mir: C:\Users\{userid}\.pkg-cache\v3.2)
  5. Kopiere das heruntergeladene Bin
  6. Benenne den Anfang der Datei um zu "fetched-..." (z.B. "fetched-v10.24.1-win-x64")
  7. Versuche pkg Skript noch einmal, sollte dann funktionieren

soa-dashboard's People

Contributors

dependabot[bot] avatar h9h avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

fossabot

soa-dashboard's Issues

Farben der Logpunkte

Hallo,

aktuell sind die Farben der Logpunkte Orange für SEP, Blau für ESB und ROT für Faults.

Die orangenen Logpunkte sind visuell schlecht von roten Logpunkten zu unterscheiden.

Vorschlag:
SEP Logpunkte in Schwarz
ESB Logpunkte in Blau belassen
Faults in Rot belassen.

Was meinst du?

Danke und beste Grüße,
Carsten

[BUG]

Describe the bug
Neue Funktion Löschen von Sätzen in der Undelivered Deadletter Queue zur Verfügung stellen. Das Bisherige Dashboard sieht nicht die Möglichkeit vor Sätze zu löschen. Es kann allerdings vorkommen das Sätze bis in die Undeliverd Queue gelangen die nicht validiert wurden und erst beim versenden an das Zielsystem auffallen. Stichwort JMS Queue von ICIS. Das Löschen soll nur von Personen möglich sein die auch Rechte für die Resend Funktion haben.

To Reproduce

  1. Go to neues Dashboard und starte die Resend Funktion.
  2. Auswahlmenü sieht heute nur SImu und Resend vor . Erweitern um nur Löschen.

[BUG] Reihenfolge der Logpunkte ändert sich in der Untertabelle

Description
Die Reihenfolge der Logpunkte ändert sich in der Untertabelle, wenn man darauf klickt, um die zugehörige Message anzuschauen.

To Reproduce

  • Klappe eine Message in der Dashboard-Ansicht auf
  • Klicke einen Logpunkt mit Message an
  • Zugleich mit dem Öffnen des modalen Fensters ändert sich die Reihenfolge der Logpunkte

Expected behavior
Keine Änderung der Reihenfolge der Logpunkte

Desktop (please complete the following information):

  • Browser Edge
  • Version 1.2.86

Anzeige der ProcessInstanceId

  1. Ich hätte gerne eine visuelle Darstellung der processInstanceID in der Tabelle der Hauptansicht.

  2. Am Besten so, dass man danach die zugehörigen Service-Calls gruppieren kann.

Danke,
Carsten

Link zum original Nachrichtenaustausch von undelivered Messages Seite

Hallo Michael,

es wäre für den Betriebssupport enorm hilfreich, wenn wir neben der üblichen Tabelle im SOA Dashboard im undelivered Bereich (Rejected, expird oder undelivered) auch den Link je Nachricht im Dashboard zum eigentlichen Nachrichtenaustausch hätten. So kann man effizienter nachvollziehen, was hier passiert ist.

Zusätzlich wäre es noch gut, sofern man referenceExpressions definiert hat, diese nach der Auswertung (also den Wert) sich vielleicht in der tabellarischen Übersicht im undelivered Bereich einblenden zu lassen.

Danke und beste Grüße,
Carsten

Letzte Auswahl der Umgebung wird sich lokal gemerkt

Hallo Michael,

es wäre wünschenswert, wenn die letzte ausgewählte Umgebung immer automatisch zum default wird.

Aktuell kann ich eine default Einstellung vornehmen, aber wenn ich gerade in einer anderen Umgebung unterwegs bin, so wäre es schön, wenn diese andere Umgebung direkt zum default wird.

Danke.

Beste Grüße,
Carsten

[FEATURE] Antworzeit Warnung

Is your feature request related to a problem? Please describe.
Auf dem Dashboard ist es nicht möglich, auf einen Blick eine Warnung zu sehen, wenn die Antwortzeit zu hoch ist oder einen bestimmten Schwellenwert überschreitet.

Describe the solution you'd like
Eine Ampel auf dem Antwortzeitdiagramm könnte helfen, auf einen Blick zu erkennen, wenn die Werte höher als normal sind. Als Idee wird eine gelbe Linie vorgeschlagen, die anzeigt, wenn der erste Schwellenwert überschritten wird (z. B. über 100 ms), und eine rote Linie, die einen zweiten höheren Schwellenwert anzeigt (z. B. über 120 ms).

[FEATURE] Nachgelagertes Laden von Queue Messages

Is your feature request related to a problem? Please describe.
Das Holen von undelivered oder rejected Messages schon beim Anzeigen der Sätze in den jeweiligen Queues verzögert die Anzeige der Liste unnötig.

Describe the solution you'd like
Die Messages selbst sollen nicht mehr geliefert werden, sondern nur noch deren Größe.
Die Messages werden bei Bedarf nachgeladen.

Die API ist zuunächst um MessageSize erweitert. Sobald Umsetzung erfolgt und getestet wird die eigentliche Message entferrnt.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.