Von Version < 3.5 >
bearbeitet von rth
am 18.04.2019, 14:42
Auf Version < 4.1 >
bearbeitet von rth
am 13.06.2019, 08:33
< >
Änderungskommentar: Es gibt keinen Kommentar für diese Version

Zusammenfassung

Details

Seiteneigenschaften
Inhalt
... ... @@ -22,42 +22,42 @@
22 22  
23 23  Die Schnittstelle bietet folgende Methodesignaturen:
24 24  
25 -* **//public Map<String, IBundleConfigParam> getConfigProperties(IPluginResourceHelper resHelper, Locale currentLocale)//**
26 -
27 -=== Methode: //getConfigProperties// ===
28 -
29 -Dient zur Konfiguration von Eigenschaftswerten, die allen Java-Klassen innerhalb des Plugin-Bundles zur Verfügung stehen sollen.
30 -
31 -==== Übergabewerte: ====
32 -
33 -
34 -; IPluginResourceHelper
35 -: Objekte zum Zugriff auf die im Plugin-Bundle enthaltenen Datei-Ressourcen.
36 -; Locale
37 -: Das für den aktuell angemeldeten Nutzer festgelegte //Locale//-Objekt (enthält Informationen zur Sprache und Region).
25 +{{panel title="{{code language='java'~}~}Map<String, IBundleConfigParam> getConfigProperties(IPluginResourceHelper resHelper, Locale currentLocale){{/code~}~}" triggerable="true" fullwidth="true"}}
26 +(((
27 +Die Methode //getConfigProperties// dient zur Konfiguration von Eigenschaftswerten, die allen Java-Klassen innerhalb des Plugin-Bundles zur Verfügung stehen sollen.
28 +)))
29 +**Übergabewerte:**
30 +(((
31 +* **IPluginResourceHelper**
32 +** Objekte zum Zugriff auf die im Plugin-Bundle enthaltenen Datei-Ressourcen.
33 +* **Locale**
34 +** Das für den aktuell angemeldeten Nutzer festgelegte //Locale//-Objekt (enthält Informationen zur Sprache und Region).
38 38  Dieses kann zum Ermitteln von sprachabhängigen Texten verwendet werden.
36 +)))
39 39  
40 -==== Rückgabewerte: ====
41 -
42 -
38 +**Rückgabewerte:**
39 +(((
43 43  Die Methode muss ein Objekt vom Typ //java.util.Map// mit Value-Objekten vom Typ //IBundleConfigParam// zurückliefern.
44 44  Es existieren zwei mögliche Implementierung von //IBundleConfigParam//:
42 +)))
45 45  
46 -; BundleConfigGroupItem
47 -: Dieses Element kann zur Strukturierung der Listendarstellung in der Oberfläche von {{formcycle case="dat"/}} verwendet werden.
48 -; BundleConfigParam
49 -: Dient zur Definition eines Bundle-Properties. Ein Objekt definiert die folgenden Eigenschaften:
50 -: //name//
51 -:: Der Name oder Zugriffsschlüssel einer Property.
52 -: //description//
53 -:: Beschreibung zu einer Property. Wird per //Mouseover// über den //Property//-Namen in der Oberfläche eingeblendet. Kann verwendet werden, um dem Nutzer des Plugins nähere Information zur Verwendung oder möglicher Wertebereiche des Parameters anzuzeigen.
54 -: //mandatory//
55 -:: Legt fest, ob der Parameter in der Oberfläche als Pflichtparameter dargestellt wird und ein Validierung auf Vorhandensein eines Wertes beim Abspeichern durchgeführt wird.
56 -: //crypticValue//
57 -:: Legt fest, ob der Wert der Property wie bei einem Passwordfeld maskiert werden soll. Standardwert ist {{code}}false{{/code}}.
58 -: //defaultValue//
59 -:: Ermöglicht die Festlegung eines Defaultwertes durch den Entwickler. Standardwert ist {{code}}null{{/code}}.
44 +* **BundleConfigGroupItem**
45 +** Dieses Element kann zur Strukturierung der Listendarstellung in der Oberfläche von {{formcycle case="dat"/}} verwendet werden.
46 +* **BundleConfigParam**
47 +** Dient zur Definition eines Bundle-Properties. Ein Objekt definiert die folgenden Eigenschaften:
48 +**: //name//
49 +**:: Der Name oder Zugriffsschlüssel einer Property.
50 +**: //description//
51 +**:: Beschreibung zu einer Property. Wird per //Mouseover// über den //Property//-Namen in der Oberfläche eingeblendet. Kann verwendet werden, um dem Nutzer des Plugins nähere Information zur Verwendung oder möglicher Wertebereiche des Parameters anzuzeigen.
52 +**: //mandatory//
53 +**:: Legt fest, ob der Parameter in der Oberfläche als Pflichtparameter dargestellt wird und ein Validierung auf Vorhandensein eines Wertes beim Abspeichern durchgeführt wird.
54 +**: //crypticValue//
55 +**:: Legt fest, ob der Wert der Property wie bei einem Passwordfeld maskiert werden soll. Standardwert ist {{code}}false{{/code}}.
56 +**: //defaultValue//
57 +**:: Ermöglicht die Festlegung eines Defaultwertes durch den Entwickler. Standardwert ist {{code}}null{{/code}}.
60 60  
59 +{{/panel}}
60 +
61 61  == Implementierungsbeispiel ==
62 62  
63 63  Das nachfolgende Codebeispiel zeigt eine mögliche Implementierung:
... ... @@ -91,40 +91,71 @@
91 91  == Zugriff auf Bundle-Properties innerhalb der Plugin-Logik ==
92 92  
93 93  Der Zugriff auf die Bundle-Properties innerhalb von einzelnen Plugin-Implementierungen wird über die Schnittstelle //IFCPlugin// und deren bereitgestellte Plugin-Lebenszyklus-Methoden ermöglicht.
94 -Alle [[Plugin-Typen>>doc:Formcycle.PluginDevelopment.Types]] erben von dieser Schnittstelle, sodass damit in allen Plugin-Implementierungen ein Zugriff auf die Bundle-Properties möglich ist.
94 +Alle [[Plugin-Typen>>doc:Formcycle.PluginDevelopment.Types.WebHome]] erben von dieser Schnittstelle, sodass damit in allen Plugin-Implementierungen ein Zugriff auf die Bundle-Properties möglich ist.
95 95  
96 96  == Beispiele zur Auslesen von Bundle-Properties ==
97 97  
98 -Ausschnitt aus der //execute//-Methode einer //IPluginFormPreRender//-Implementierung. Ein PreRender-Plugin wird standardmäßig bei allen Formularaufrufen im Scope des Mandanten, in dem er registriert wurde, ausgeführt.
98 +Das nachfolgende Beispiel zeigt den Zugriff auf die Bundle-Properties innerhalb einer //IPluginFormPreRender//-Implementierung.
99 99  
100 -Wenn man zum Beispiel möchte, dass der //PreRenderer// nur beim Aufruf bestimmter Formulare ausgeführt wird, so kann man dies mittels //Bundle-Properties// konfigurierbar gestalten. Das nachfolgende Codebeispiel liest den Wert der //Bundle-Property// {{code}}activate.form.alias{{/code}} aus, welcher die Namen von Formularen mit Komma getrennt enthält, und
101 -vergleicht diese mit den Namen des aktuellen Formulars, in dessen Anwendungsbereich der //PreRenderer// gerade ausgeführt wird.
102 -
100 +Ein PreRender-Plugin wird standardmäßig bei allen Formularaufrufen im Scope des Mandanten, in dem er registriert wurde, ausgeführt.
101 +Wenn man zum Beispiel möchte, dass der //PreRenderer// nur beim Aufruf bestimmter Formulare ausgeführt wird, so kann man dies mittels //Bundle-Properties// konfigurierbar gestalten.
102 +Das nachfolgende Beispiel liest in der {{code}}execute{{/code}} Methode den Wert der //Bundle-Property// {{code}}activate.form.alias{{/code}} aus, welche die Namen von Formularen (mit Komma getrennt) enthält.
103 +Anschließend werden diese Namen mit dem Namen des aktuellen Formulars, in dessen Anwendungsbereich der //PreRenderer// gerade ausgeführt wird, verglichen. 
103 103  Wenn der Name des aktuellen Formulars nicht mit einen Namen aus der konfigurierten Liste übereinstimmt, wird die weitere Verarbeitung des PreRenderers abgebrochen.
104 104  
105 105  {{code language="java" title=""}}
106 -public class MyPreRenderer extends AFCPlugin implements IPluginFormPreRender {
107 +public class MyPreRenderer implements IPluginFormPreRender {
108 +
109 + private Properties bundleProperties = null;
110 +
111 + /**
112 + * Name, welcher Plugin eindeutig identifizerbar macht.
113 + */
107 107   @Override
108 - public IPluginFormPreRenderRetVal execute(IPluginFormPreRenderParams preRenderParams) throws FCPluginException {
115 + public String getName() {
116 + return "Mein PreRenderer";
117 + }
118 +
119 + /**
120 + * Plugin-Lebenszyklus-Methode, welche beim Erzeugen der Objekt-Instanz aufgerufen wird.
121 + */
122 + @Override
123 + public void initialize(IPluginInitializeData initializeData) throws FCPluginException {
124 + bundleProperties = initializeData.getProperties();
125 + }
126 +
127 + /**
128 + * Methode zum Ausführen von Plugin-Logik.
129 + */
130 + @Override
131 + public IPluginFormPreRenderRetVal execute(IPluginFormPreRenderParams params) throws FCPluginException {
109 109   // Bundle-Property 'activate.form.alias' auslesen
110 110   Set<String> alias = getConfiguredFormAlias("activate.form.alias");
111 111  
112 112   // Ist PreRender-Plugin für aktuelle Formularinstanz freigeschalten?
113 - IExtendedFormRequestContext ctx = (IExtendedFormRequestContext)preRenderParams.getFormRequestContext();
114 - if(!alias.contains(ctx.getProjekt().getName())) return null;
115 -
136 + IExtendedFormRequestContext ctx = (IExtendedFormRequestContext)params.getFormRequestContext();
137 + if (!alias.contains(ctx.getProjekt().getName())) {
138 + // keine Formularfreischaltung gefunden -> Verarbeitung abbrechen
139 + return new PluginFormPreRenderRetVal(Collections.EMPTY_MAP, true);
140 + }
141 +
116 116   // weitere PreRender-Implementierung
117 117   // ....
118 118  
119 - return null;
145 + return new PluginFormPreRenderRetVal(Collections.EMPTY_MAP, true);
120 120   }
121 121  
148 + /**
149 + * Funktion zum Ermitteln eines Bundle-Property-Wertes.
150 + * Der ermittelte Wert wird mittels Komma getrennt
151 + * und als HashSet zurückgeliefert.
152 + * @param propertyName
153 + * @return ein {@link HashSet}
154 + */
122 122   protected Set<String> getConfiguredFormAlias(String propertyName) {
123 - String formAlias = getProperties().getProperty(propertyName, null);
124 - if(StringUtils.isBlank(formAlias)) {
125 - return Collections.emptySet();
126 - }
127 - String[] arr = StringUtils.split(formAlias, ",");
156 + String formAlias = bundleProperties.getProperty(propertyName, null);
157 + if (XStringUtils.isBlank(formAlias)) { return Collections.emptySet(); }
158 + String[] arr = XStringUtils.split(formAlias, ",");
128 128   return new HashSet<String>(Arrays.asList(arr));
129 129   }
130 130  }
Copyright 2000-2025