Angular Umstellung
Nachdem die Browser-Unterstützung für den Adobe Flash Player Ende 2020 ausgelaufen ist, wurde das CCM übergangsweise als Adobe-AIR-Standalone-Client (.exe) betrieben. Als dauerhafte Lösung wird die CCM-Oberfläche nun Modul für Modul auf eine moderne HTML5-/Angular-Oberfläche umgestellt. Diese läuft direkt im aktuellen Browser – ohne Adobe Flash, ohne Adobe AIR und ohne lokalen Desktop-Client.
Überblick
Die neue UI ist eine Angular-Web-Component-Anwendung, die als einzelnes Bundle ausgeliefert und in die B2B-Oberfläche eingebettet wird. Sie benötigt keine lokale Laufzeitumgebung und keinerlei Installation auf dem Rechner des Anwenders – es genügt ein aktueller Browser.
Vorbereitung
- B2B-25-Version mit neuer UI installieren bzw. verwenden
- Knoten für die neue UI über Keycloak authentifizieren (die bisherigen Basic-Auth-Knoten für Adobe AIR sind für die neue UI nicht geeignet)
- Benötigte Keycloak-Rollen den Anwendern zuweisen:
B2B-MessageMonitor-Read– Lesen/Suchen im Process-MonitorB2B-MessageMonitor-Write– Statusänderung (Clearing), Einplanen, Job löschenCCM_ADMIN_WRITE– Arbeitsvorräte hinzufügen/entfernen
Aufruf
Die neue Oberfläche wird über die URL des B2B-Knotens im Browser aufgerufen und nach dem Keycloak-Login direkt angezeigt. Ein Download bzw. Entpacken von Client-Dateien entfällt vollständig.
Installation / Deployment (Docker)
Die neue Angular-UI wird als eigener Container b2b-ccm-ui betrieben und über Traefik in die B2B-Umgebung eingebunden. Eine Installation auf dem Rechner des Anwenders entfällt – ausgeliefert wird das statische Angular-Bundle über nginx.
Beispielhafte docker-compose-Konfiguration:
b2b-ccm-ui:
image: ${AZURECR_B2B}/b2b-ccm-ui:${VER_CCM_UI}
restart: always
volumes:
- ${PROJECT:-.}/ccm-ui/keycloak.json:/usr/share/nginx/html/B2B-CCM-UI/assets/config/keycloak.json
- ${PROJECT:-.}/system.json:/usr/share/nginx/html/B2B-CCM-UI/assets/config/system.json
- ${PROJECT:-.}/portal-ui/portal-config.json:/usr/share/nginx/html/B2B-CCM-UI/assets/config/portal-config.json
environment:
TZ: ${TIME_ZONE}
labels:
- "traefik.enable=true"
- "traefik.http.routers.ccm-ui.rule=Host(`xxx-xxxxxxx`) && PathPrefix(`/B2B-CCM-UI`)"
Portal- einrichten (portal-config.json)
Damit die CCM-UI als eigene Kachel im B2B-Portal erscheint, wird sie in der zentralen portal-config.json registriert. Diese Datei wird allen UIs als Volume bereitgestellt (z. B. unter …/assets/config/portal-config.json).
Ablage (Beispiel Umgebung):
B2B\conf\portal-ui\portal-config.json
Eintrag in die Liste der UIs ergänzen:
{
"uiUrl": "http://xxx-xxxxxx:81/B2B-CCM-UI/",
"uiRequiredRole": "CCM-Read",
"uiName": "CCM Manager",
"picturePath": "/B2B-Portal-UI/assets/config/images/p-systemmessage.jpg",
"iconName": "http://xxx-xxxxxx:81/B2B-Portal-UI/assets/config/icons/systemmessage.svg",
"description": "CCM Manager"
}
Keycloak-Anbindung (keycloak.json)
Die CCM-UI authentifiziert sich als public OIDC-Client gegen Keycloak. Die Konfiguration wird als Volume in den Container gemountet (…/assets/config/keycloak.json).
Ablage (Beispiel Umgebung):
…/ccm-ui/keycloak.json
Beispiel:
{
"realm": "B2BLocal",
"auth-server-url": "http://xxx-xxxxxxxx:81/auth",
"ssl-required": "none",
"resource": "b2b-ccm-ui",
"public-client": true,
"confidential-port": 0
}
Arbeitsvorräte (Work Queues)
Die zur Verfügung stehenden Arbeitsvorräte werden benutzerabhängig aus der Datenbank ermittelt. Grundlage sind die CCM-Rollen des Anwenders, die über den Keycloak-Claim ccm_roles im Access-Token transportiert werden.
- Keycloak-User erhält ein Attribut
ccm_roles(z. B.ccm_11,admins) - Ein Protocol-Mapper („CCM Roles Mapper”, Typ User Attribute, Add to access token = ON) stellt den Claim im Token bereit
- Ohne gesetzten
ccm_roles-Claim ist die Arbeitsvorrat-Liste leer (kein DB-Fallback)
Neue Arbeitsvorräte lassen sich über die Arbeitsvorrat-Einstellungen anlegen (Rollen-/Gruppen-ID + Definition); dafür wird die Rolle CCM_ADMIN_WRITE benötigt. Der Start-Arbeitsvorrat je Benutzer sowie ein-/ausgeblendete Einträge werden lokal im Browser gespeichert.
Funktionen des Process-Monitors
Der Process-Monitor der neuen UI bildet den bisherigen Funktionsumfang nach:
- Dynamische Suchfilter und Ergebnis-Spalten je Variante (vom Server geladen)
- Suche gegen das CCM-Backend inkl. Status-Filter (grün/gelb/grau/rot) und Ergebnis-Zähler
- Aufklappbarer Prozessbaum mit korrelierten Nachrichten, Zeilen-/Status-Färbung und Zell-Renderern
- Spalten vergrößern (Resize) und Tabelle konfigurieren (Spalten ein-/ausblenden, Reihenfolge) – je Variante personalisiert
- Statusänderung / Clearing (Rolle
B2B-MessageMonitor-Write) - Export nach Excel (CSV)
- Einplanen von Suchen als Hintergrund-Job sowie Laden vorab berechneter Ergebnisse und Job löschen (Rolle
B2B-MessageMonitor-Write)
CCM Server / Reporting
Für Suche-Umlenkung auf bestimmte Knoten (http://b2bbp.next-level-help.org/ccm_cust_index_umlenkung_ccm_server.html) sowie für die Reporting-Knoten (http://b2bbp.next-level-help.org/ccm_cust_reporting_einrichtung.html) gelten die bekannten Einstellungen. Anders als beim Adobe-AIR-Client werden die über die neue UI genutzten Knoten über Keycloak authentifiziert.
Problembehandlung
Meldung: „Es konnten keine Daten geladen werden.”
Ursache: Der Zugriff auf das Backend ist fehlgeschlagen oder die Sitzung ist abgelaufen – erneut über Keycloak anmelden.
Meldung: „Keine Arbeitsvorräte vorhanden.” / Arbeitsvorrat-Liste ist leer.
Ursache: Im Access-Token fehlt der Claim ccm_roles oder die enthaltenen Rollen besitzen keine passenden InboxViewDefinition-Attribute. Keycloak-Attribut und Protocol-Mapper prüfen.
Meldung: „Variante konnte nicht geladen werden.” / „Variante nicht gefunden.”
Ursache: Zur ausgewählten Variante existiert keine (Custom-)Extension im Backend (FLEXIBLE_INDEX_UI / _CUSTOM).
Meldung: Funktion „Statusänderung / Einplanen / Job löschen” ist deaktiviert.
Ursache: Dem angemeldeten Benutzer fehlt die Rolle B2B-MessageMonitor-Write.
Meldung: „Hinzufügen/Entfernen von Arbeitsvorräten nicht möglich.”
Ursache: Dem angemeldeten Benutzer fehlt die Rolle CCM_ADMIN_WRITE.
Hinweis: Fehlende bzw. als Rohtext (z. B. layout.title) angezeigte Übersetzungen deuten auf ein Caching-/Auslieferungsproblem der i18n-Dateien hin (kein Query-Cache-Buster verwenden).