Verbesserung
Top-Thema
Detail
Wichtig
Detail
Wichtig
#25921
Zustandsabhängige Ausführbarkeit von Kommandos
Jeder tl:CommandHandler hat über eine tl:ExecutabilityRule die Möglichkeit, eine Regel für seine Ausführbarkeit anzugeben. Diese Regel kann pro Zielmodell, auf dem das Kommando ausgeführt werden soll, entscheiden, ob das Kommando ausführbar ist oder nicht.
Möchte man aber aufgrund des Zustandes eine Objektes eine Vielzahl von Kommandos abschalten (z.B. alle Write-Kommandos), dann ist das über die tl:ExecutabilityRule nur schwer möglich, weil die Konfiguration aller in Frage kommenden Kommandos modifiziert werden müsste, um eine weitere tl:ExecutabilityRule einzufügen.
Besser wäre es in einem solchen Fall, könnte man eine zentrale Ausführbarkeitsregel einbauen, die nicht speziell für ein Kommando konfiguriert wird, sondern die generisch für alle Kommandoausführungen benutzt wird und aufgrund des Zustandes des Zielmodells und aufgrund der Eigenschaften des auszufürhenden Kommandos die Ausführbarkeit einschränken kann.
Anwendung
Ausführbarkeit kann global durch eine Konfiguration des tl:CommandApprovalService übersteuert werden.
Migration
- Eine eventuell vorhandene Datei webapp/WEB-INF/xml/state/ViewStateConfiguration.xml in entsprechende Regeln des tl:CommandApprovalService übersetzen.
Siehe auch
- com.top_logic.tool.boundsec.BoundHelper.allowInState(TLContext, BoundChecker, BoundCommand, BoundObject)
- com.top_logic.layout.state.ViewStateManager - Nicht in-app konfigurierbar, da für Modellelemente eine bestimmte Ableitungshierarchie vorausgesetzt wird: com.top_logic.tool.state.StatefullElement.
Test
- /com.top_logic.demo/src/test/com/top_logic/demo/scripted/layout/executability/TestCommandApprovalService.script.xml