Wiki-Quellcode von Platzhalterersetzung (System)
Verstecke letzte Bearbeiter
author | version | line-number | content |
---|---|---|---|
1.1 | 1 | {{content/}} | |
2 | |||
3 | == Schnittstelle IPluginSystemReplacer == | ||
4 | |||
5 | === Verwendungsmöglichkeiten === | ||
6 | |||
7 | {{figure image="plugin_platzhalterersetzung_system.png" width="400" clear="h3"}} | ||
8 | Einordnung des Platzhalterersetzungs-Plugins für Systemwerte in die Prozesskette von {{formcycle case="dat"/}} | ||
9 | {{/figure}} | ||
10 | |||
11 | Eine Implementierung der //IPluginSystemReplacer//-Schnittstelle ermöglicht es, eigene Ersetzungslogik für den Platzhalter-Ersetzungsprozess von Systemwerten zu integrieren. | ||
12 | Die Eigenimplementierungen werden dabei **vor** dem internen Platzhaltersetzungsprozess von {{formcycle case="dat"/}} durchgeführt. | ||
13 | Dadurch ist es beispielsweise möglich Link-Verweis-Ziele, welche durch System-Variablen vorgegeben sind, zu überschreiben und damit auf andere Zieladressen umzuleiten. | ||
14 | |||
15 | Bei der [[Platzhalterersetzung>>doc:Formcycle.UserInterface.Variables]] wird nach folgendem Muster gesucht und durch den entsprechenden Systemwert ersetzt: | ||
16 | |||
17 | {{code language="none"}} | ||
18 | [%$<Eigener Platzhaltername oder Name eines Systemwertes>%] | ||
19 | {{/code}} | ||
20 | |||
21 | {{warning}} | ||
22 | Bei Verwendung mehrerer //IPluginSystemReplacer//-Implementierungen ist deren Ausführungs-Reihenfolge nicht fest hinterlegt. Dadurch kann es bei mehrfacher Ausführung zu unterschiedlichen Ergebnissen kommen. | ||
23 | {{/warning}} | ||
24 | |||
25 | {{warning}} | ||
26 | Die //IPluginSystemReplacer//-Implementierungen werden grundsätzlich bei jeder Formularverarbeitung im jeweiligen Anwendungsbereich (als System- oder Mandant-Plugin) ausgeführt, in dem sie installiert wurden. Es wird deshalb empfohlen, in der Implementierungslogik als erstes zu prüfen, ob der //IPluginSystemReplacer// für die jeweilige Formularverarbeitung ausgeführt werden soll. Dies lässt sich beispielsweise mittels Einsatz von Plugin-Properties konfigurierbar gestalten. | ||
27 | {{/warning}} | ||
28 | |||
29 | === Methodensignaturen === | ||
30 | |||
31 | Die Plugin-Schnittstelle //IPluginSystemReplacer// referenziert alle durch die [[Basis-Schnittstelle IFCPlugin>>doc:IFCPlugin]] bereitgestellten Methoden | ||
32 | und zusätzlich noch folgende Plugin-spezifische Methodensignaturen: | ||
33 | |||
34 | {{panel title="{{code language='java'~}~}IPluginSystemReplacerRetVal replace(IPluginSystemReplacerParams params) throws FCPluginException{{/code~}~}" triggerable="true" fullwidth="true"}} | ||
35 | ((( | ||
36 | **Übergabewert:** | ||
37 | ))) | ||
38 | Der Typ //IPluginSystemReplacerParams// stellt den Zugriff auf folgende Eigenschaften bereit: | ||
39 | * **getPlaceholder()** kompletten String des Platzhalters (dies schließt den Markup des Platzhalters mit ein) | ||
40 | * **getPlaceholderContent()** Inhalt des Platzhalters (ohne typ-spezifischen Markup) | ||
41 | * **getEntityContext()** aktueller Nutzerkontext, um beispielsweise Datenbankoperationen ausführen zu können | ||
42 | * **getWorkflowProcessingContext()** Zugriff auf den Workflow-Verarbeitungskontext (IWorkflowProcessingContext) und damit auf zentrale Objekt wie: | ||
43 | ** aktueller Vorgang | ||
44 | ** Formulardaten | ||
45 | ** Sessionparameter | ||
46 | ** temporäres Verzeichnis zum Ablegen von Dateien aus dem aktuellen Kontext | ||
47 | |||
48 | **Rückgabewerte:** | ||
49 | Der Rückgabewert muss vom Typ //IPluginSystemReplacerRetVal// sein. Eine Referenzimplementierung wird durch die Klasse //PluginGenericReplacerRetVal// zur Verfügung gestellt, welche mit dem erzeugten Ersetzungswert zu initialisieren ist. | ||
50 | {{/panel}} |