Der Contextual Tab Launcher öffnet ein ausgewähltes Matrix42-Objekt in einer anderen Anwendung – in einem neuen Browser-Tab. Die Extension liefert dafür einen Custom Controller für Pandora Actions sowie eine einsatzbereite Beispielaktion. Mit dieser Beispielaktion lässt sich z. B. eine Workflow-Instanz aus dem Service Desk oder Service Catalog mit einem Klick in der Administration öffnen.
Funktionsweise
Die Extension stellt einen Custom Controller für Pandora Actions bereit. Beim Ausführen der Aktion:
- liest der Controller das ausgewählte Objekt aus der Übersicht,
- ermittelt die Zielanwendung aus den Controller Parameters,
- erstellt einen Deep-Link zur Vorschau des Objekts,
- und öffnet die URL in einem neuen Browser-Tab (
$window.open(url, "_blank")).
Architektur
Das AngularJS-Modul RootITUp.Pandora.OpenInNewApp registriert den Controller RootITUp.Pandora.OpenInNewApp.OpenInNewAppController und meldet sich über window.mx.workspacesConfig.registerModule("RootITUp.Pandora.OpenInNewApp") beim Workspaces-Loader an. Ausgeliefert wird das Modul als Workspace-Bundle (module.js).
Genutzte Matrix42-Services
Der Controller injiziert vier Shell-Services:
| Service | Verwendung |
|---|---|
$window | Öffnet die URL in einem neuen Tab |
mx.shell.Config | Liefert settings.basePath für die URL-Konstruktion |
mx.sb.public.service | Zeigt Fehler- und Warnbenachrichtigungen an |
mx.shell.AppsService | Liefert die Anwendungen (getApplications()) zur Namenssuche |
Deep-Link-Struktur
Der Controller erzeugt eine relative URL nach folgendem Schema (ohne führenden Host, ohne abschließenden Schrägstrich vor ?):
<basePath>app-<appName>?view-options=<URL-kodiertes JSON>
basePath stammt aus mx.shell.Config (settings.basePath, Standard "/"). $window.open löst die relative URL gegen den aktuellen Origin auf. Das view-options-Objekt hat folgende Struktur (Beispielwerte illustrativ; type entspricht dem Konfigurationselement des Objekts):
{
"objectId": "<ObjectId>",
"type": "PLSLWorkflowProcessInstanceType",
"archived": "0",
"viewType": "preview"
}
archived ist die Zeichenkette "1" oder "0"; viewType ist stets "preview".
Installation
Der Contextual Tab Launcher wird über die Matrix42 Extension Gallery installiert (Paket-Id 3d4efc0f-164b-c06b-a406-08ddf9e10915).
- Matrix42 Administration öffnen.
- Die Extension Gallery aufrufen und nach „Contextual Tab Launcher” von RootITUp suchen.
- Auf „Install” klicken und die Installation abschließen.
Voraussetzung: Matrix42 Digital Workspace Platform ab Version 12.0.0 (MinimalRequiredProductVersion). Die Installation legt die Beispielaktion an und stellt das Controller-Bundle bereit; ein Neustart der Dienste ist nicht erforderlich.
Nach der Installation steht die Beispielaktion „In Administration öffnen” zur Verfügung.
Konfiguration: Eigene Aktion einrichten
Um den Custom Controller auf ein anderes Objekt oder eine andere Anwendung anzuwenden, legen Sie eine Pandora Action an (in der Administration oder als Konfigurationspaket) und setzen die folgenden Eigenschaften.
1. Aktion anlegen
In der Administration-Anwendung eine neue Aktion (PDRActionType) anlegen oder eine bestehende auswählen. (Den genauen Menüpfad zu den Actions entnehmen Sie Ihrer Administrationsoberfläche.)
2. Implementierungstyp: Custom Controller
Als Implementierungstyp „Custom Controller” wählen (auf der Wire-Ebene ImplementationType="c"). Im Feld „Controller” die Controller-Klasse eintragen:
RootITUp.Pandora.OpenInNewApp.OpenInNewAppController
3. Zielanwendung definieren
Im Feld „Controller Parameters” den Namen der Ziel-Anwendung eintragen. Der Controller vergleicht diesen Wert case-insensitiv mit dem name der Anwendungen aus getApplications().
| Anwendung | Controller Parameter | Status |
|---|---|---|
| Administration | SolutionBuilder | in der Beispielaktion verwendet |
| andere Anwendungen | app-Name aus der URL | siehe Hinweis unten |
Hinweis: Der zu verwendende Name ist der interne Anwendungsname, nicht zwingend der Anzeigename – die Administration heißt intern
SolutionBuilder. Den korrekten Namen lesen Sie aus der URL der Zielanwendung ab: der Teil nachapp-(z. B.app-SolutionBuilder→SolutionBuilder).
4. Einzelauswahl festlegen
Die Eigenschaft „Ziel” auf „Einzelnes Objekt” setzen (Target=1). Der Controller verarbeitet das erste ausgewählte Objekt.
Bei Mehrfachauswahl zeigt der Controller eine Warnung an und öffnet nur das erste Objekt.
5. Sichtbarkeit und Zielgruppe
- Konfigurationselement(e) festlegen, auf denen die Aktion erscheint (
TypeFilter=1+SchemaTypes). - Sichtbarkeit in Anwendungen konfigurieren – ohne Zuordnung ist die Aktion in allen Anwendungen sichtbar.
- Zielgruppe (Audience) bei Bedarf setzen.
- Speichern und schließen.
Ausgelieferte Beispielaktion: „In Administration öffnen”
Diese Aktion wird mit der Extension installiert und öffnet eine Workflow-Instanz in der Administration:
| Eigenschaft | Wert |
|---|---|
| Name (EN) | Open in Administration |
| Name (DE, LCID 7) | In Administration öffnen |
| Name (FR, LCID 12) | Ouvrir dans l’administration |
| Name (PL, LCID 21) | Otwórz w administracji |
| Interner Name | RootITUp.Pandora.OpenInAdministration |
| Implementierungstyp | Custom Controller |
| Controller | RootITUp.Pandora.OpenInNewApp.OpenInNewAppController |
| Controller Parameters | SolutionBuilder |
| Ziel | Einzelnes Objekt (Target=1) |
| Konfigurationselement | PLSLWorkflowProcessInstanceType (TypeFilter=1) |
| Sichtbar in | Service Desk, Service Catalog |
| Icon | open_in_new |
Fehlerbehandlung
Der Controller zeigt bei fehlender Konfiguration oder Auswahl Benachrichtigungen an:
| Situation | Meldung | Typ |
|---|---|---|
| Kein Objekt ausgewählt | „No object selected. Please select an object to open in the target application.” | Fehler |
| Controller Parameters fehlen | „Action is not configured with the target application name.” | Fehler |
| Zielanwendung nicht gefunden | „Target application “{name}” not found.” | Fehler |
| Mehrfachauswahl | „This action only supports a single object. Opening the first selected item.” | Warnung |
Technische Details
Objektkontext
Der Controller extrahiert aus dem ausgewählten Objekt:
| Eigenschaft | Fallback | Beschreibung |
|---|---|---|
_id | Id | ObjectId des Objekts |
_type | Type | Konfigurationselement des Objekts |
_archived | – | Steuert den Parameter archived ("1"/"0") |
Anwendungssuche
Die Zielanwendung wird über mx.shell.AppsService.getApplications() ermittelt. Der Vergleich mit den Controller Parameters erfolgt über den name der Anwendung und ist case-insensitiv.
Changelog
Version 1.0 – Initial Release (22.09.2025)
- Custom Controller
RootITUp.Pandora.OpenInNewApp.OpenInNewAppControllerfür Pandora Actions - Öffnet ein ausgewähltes Objekt in einer anderen Matrix42-Anwendung in einem neuen Browser-Tab
- Deep-Link zur Objektvorschau (
viewType: "preview") - Zielanwendung über die Controller Parameters konfigurierbar
- Validierung mit Fehler- und Warnbenachrichtigungen
- Beispielaktion „In Administration öffnen” (
RootITUp.Pandora.OpenInAdministration) enthalten, sichtbar in Service Desk und Service Catalog, fürPLSLWorkflowProcessInstanceType - Kompatibel mit der Matrix42 Digital Workspace Platform ab 12.0.0
- Keine DLL erforderlich – Konfiguration plus ein JavaScript-Bundle
Häufig gestellte Fragen
Welche Anwendungen lassen sich als Ziel verwenden?
Alle Anwendungen, die mx.shell.AppsService.getApplications() liefert. In den Controller Parameters tragen Sie den name der Anwendung ein; der Vergleich ist case-insensitiv. In der Beispielaktion ist dies SolutionBuilder (Administration).
Wie finde ich den korrekten Anwendungsnamen?
Prüfen Sie die URL der Zielanwendung im Browser. Der Anwendungsname steht nach app- (z. B. app-SolutionBuilder → SolutionBuilder). Der interne Name kann vom Anzeigenamen abweichen.
Funktioniert die Aktion mit Mehrfachauswahl?
Nein. Der Controller ist für Einzelauswahl konzipiert. Bei Mehrfachauswahl wird eine Warnung angezeigt und nur das erste Objekt geöffnet. Konfigurieren Sie die Aktion mit „Ziel = Einzelnes Objekt”.
Öffnet sich die Vorschau oder das Bearbeitungsformular?
Die Vorschau: Der Controller setzt viewType: "preview".
Werden archivierte Objekte berücksichtigt?
Ja. Der Controller liest _archived aus dem Objekt und setzt den Deep-Link-Parameter archived auf "1" bzw. "0".
Werden zusätzliche Berechtigungen benötigt?
Die Extension nutzt öffentliche Shell-Services der Digital Workspace Platform. Die Zielanwendung muss für die Nutzenden zugänglich sein.