Von Version < 3.4 >
bearbeitet von rth
am 18.04.2019, 14:33
Auf Version < 3.6 >
bearbeitet von rth
am 18.04.2019, 15:29
< >
Änderungskommentar: Es gibt keinen Kommentar für diese Version

Zusammenfassung

Details

Seiteneigenschaften
Inhalt
... ... @@ -90,42 +90,72 @@
90 90  
91 91  == Zugriff auf Bundle-Properties innerhalb der Plugin-Logik ==
92 92  
93 -Der Zugriff auf die Bundle-Properties innerhalb von einzelnen Plugin-Implementierungen wird über die Schnittstelle //IFCPlugin// und deren bereitgestellte Plugin-Lebenszyklus-Methoden gewährleistet.
94 -Alle [[Plugin-Typen>>Plugin-Typen||target="_self"]] erben von dieser Schnittstelle, sodass damit in allen Plugin-Implementierungen ein Zugriff auf die Bundle-Properties möglich ist.
95 -Diese Klasse liefert mit der Methode //getProperties()// ein //java.util.Properties//-Objekt zurück, was den Zugriff auf die Properties ermöglicht.
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.WebHome]] erben von dieser Schnittstelle, sodass damit in allen Plugin-Implementierungen ein Zugriff auf die Bundle-Properties möglich ist.
96 96  
97 -== Beispiele zur Nutzung von Bundle-Properties ==
96 +== Beispiele zur Auslesen von Bundle-Properties ==
98 98  
99 -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.
100 100  
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. 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
102 -vergleicht diese mit den Namen des aktuellen Formulars, in dessen Anwendungsbereich der //PreRenderer// gerade ausgeführt wird.
103 -
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. 
104 104  Wenn der Name des aktuellen Formulars nicht mit einen Namen aus der konfigurierten Liste übereinstimmt, wird die weitere Verarbeitung des PreRenderers abgebrochen.
105 105  
106 106  {{code language="java" title=""}}
107 -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 + */
108 108   @Override
109 - 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 {
110 110   // Bundle-Property 'activate.form.alias' auslesen
111 111   Set<String> alias = getConfiguredFormAlias("activate.form.alias");
112 112  
113 113   // Ist PreRender-Plugin für aktuelle Formularinstanz freigeschalten?
114 - IExtendedFormRequestContext ctx = (IExtendedFormRequestContext)preRenderParams.getFormRequestContext();
115 - if(!alias.contains(ctx.getProjekt().getName())) return null;
116 -
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 +
117 117   // weitere PreRender-Implementierung
118 118   // ....
119 119  
120 - return null;
145 + return new PluginFormPreRenderRetVal(Collections.EMPTY_MAP, true);
121 121   }
122 122  
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 + */
123 123   protected Set<String> getConfiguredFormAlias(String propertyName) {
124 - String formAlias = getProperties().getProperty(propertyName, null);
125 - if(StringUtils.isBlank(formAlias)) {
126 - return Collections.emptySet();
127 - }
128 - 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, ",");
129 129   return new HashSet<String>(Arrays.asList(arr));
130 130   }
131 131  }
Copyright 2000-2025