Änderungen von Dokument Plugin-Entwicklung


Von Version 5.8
bearbeitet von awa
am 25.02.2022, 13:25
Änderungskommentar: Es gibt keinen Kommentar für diese Version
Auf Version 3.4
bearbeitet von awa
am 25.02.2022, 11:40
Änderungskommentar: Es gibt keinen Kommentar für diese Version

Zusammenfassung

Details

Seiteneigenschaften
Inhalt
... ... @@ -1,5 +1,6 @@
1 1  {{content/}}
2 2  
3 +== Plugins für zusätzliche Funktionalitäten ==
3 3  
4 4  {{formcycle/}} bietet ein Vielzahl von Einstiegspunkten für die Erweiterung der Standard-Funktionalitäten durch Plugins. Basierend auf den einzelnen [[Plugin-Typen>>doc:Formcycle.PluginDevelopment.Types.WebHome]] werden diese zu gewissen Zeitpunkten automatisch oder manuell angesprochen und erlauben es somit von der Ersetzung eigener Platzhalter bis hin zur Implementierung eigener Verarbeitungslogik {{formcycle/}} anzupassen. Als fundamentaler erster Schritt für die Entwicklung eigener Plugins ist hierbei das Erstellen eines entsprechenden Java-Projekts anzusehen.
5 5  
... ... @@ -7,15 +7,15 @@
7 7  
8 8  Die API-Dokumentation für {{formcycle/}} findet sich hier auf unserer Seite: [[Javadocs>>https://docs.formcycle.eu/]]
9 9  
10 -== Maven-Setup ==
11 +== Projekt-Setup ==
11 11  
12 12  Zu Beginn der Entwicklung eines Plugins ist es nötig das entsprechende Entwicklungsprojekt aufzusetzten und zu konfigurieren.
13 13  
14 14  Für letzteres empfehlen wir hierbei das Build-Management-Tool [[Apache Maven>>url:https://maven.apache.org/||rel="__blank"]] zum Einsatz. Andere Build-Tools können prinzipiell benutzt werden, hier können wir aber keine Hilfe bereitstellen.
15 15  
16 -Um die entsprechenden Abhängigkeiten zu {{formcycle case="dat"/}} bereitzustellen, ist das Repository unter der URL [[https:~~/~~/artifactory.xima-services.de/artifactory/fc-plugin-dev>>url:https://artifactory.xima-services.de/artifactory/fc-plugin-dev]] zu benutzen. Dieses enthält alle öffentlich zur Verfügung stehenden Artefakte, welche dem Plugin zur Laufzeit bereitgestellt und während der Entwicklung benötigt werden.
17 +Um die entsprechenden Abhängigkeiten zu {{formcycle case="dat"/}} bereitzustellen, ist das Repository unter der URL [[https:~~/~~/artifactory.xima-services.de/artifactory/fc-plugin-dev>>url:https://artifactory.xima-services.de/artifactory/fc-plugin-dev]] zu benutzen. Dieses enthält alle öffentlich zur Verfügung stehenden Artefakte, welche dem Plugin zur Laufzeit bereitgestellt und während der Entwicklung benötigt werden. Ausgangspunkt ist hierbei das Artefakt //fc-plugin-common//, welches die einzelnen Plugin-Schnittstellen beinhaltet und auch auf [[unserere Downloadseite zur Verfügung steht>>url:http://artifactory.xima-services.de/artifactory/fc-plugin-dev/de/xima/fc/fc-plugin-common/]].
17 17  
18 -Damit das Repository auch beim Bauen mit Maven verwendet wird, sollte folgendes in die Maven-Konfigurationsdatei //settings.xml// geschrieben werden. Diese Datei findet sich in der Regeln im //.m2//-Ordner im Home-Verzeichnis des aktuellen Nutzers. Unter Linux //~~/.m2/settings.xml// und unter Windows //%homepath%\.m2\settings.xml//:
19 +Damit das Repository auch beim Bauen mit Maven verwendet wird, sollte folgendes in die Maven-Konfigurationsdatei //settings.xml// geschrieben werden. Diese Datei findet sich in der Regeln im //.m2//-Ordner im Home-Verzeichnis des aktuellen Nutzers. Unter Linux //~/.m2/settings.xml// und unter Windows //%homepath%\.m2\settings.xml//:
19 19  
20 20  {{panel title="~~~~/.m2/settings.xml" fullwidth="true" initial="hidden" triggerable="true"}}
21 21  {{code language="xml"}}
... ... @@ -65,20 +65,8 @@
65 65  {{/code}}
66 66  {{/panel}}
67 67  
68 -== Maven-Projekteinrichtung
69 +In der //pom.xml// des Plugin-Projekts kann die Abhängigkeit dann wie folgt eingebunden werden:
69 69  
70 -Im Folgenden werden einige Punkte beschrieben, die beim Einrichten eines Maven-Projekts für ein {{formcycle/}}-Plugin beachtet werden müssen. Für den schnellen Einstieg gibt auch einige [[Maven-Archetypes>>||anchor="HMaven-Archetypes"]].
71 -
72 -=== Artekfakte und Abhängigkeiten
73 -
74 -{{info}}
75 -Alle Abhängigkeiten zu {{formcycle case="dat"/}} sind im scope "provided" zu definieren!
76 -{{/info}}
77 -
78 -Ausgangspunkt für die Entwicklung von Plugin ist das Maven-Artefakt //fc-plugin-common//. Dieses enthält die einzelnen Plugin-Schnittstellen und steht auch auf [[unserere Downloadseite zur Verfügung>>url:http://artifactory.xima-services.de/artifactory/fc-plugin-dev/de/xima/fc/fc-plugin-common||target="_blank"]].
79 -
80 -In der //pom.xml// des Plugin-Projekts kann diese Abhängigkeit wie folgt eingebunden werden:
81 -
82 82  {{code language="xml"}}
83 83   <properties>
84 84   <xfc.version>7.0.10</xfc.version>
... ... @@ -109,164 +109,14 @@
109 109  
110 110  Ferner ist zu beachten, dass sämtliche Abhängigkeiten zu {{formcycle case="dat"/}} im scope //provided //anzugeben sind. Dies verhindert neben Classpath-Problemen auch das unnötige Anschwellen der Plugin-Größe. Ebenso sollten diesbezüglich Abhängigkeiten auf bereits von {{formcycle case="dat"/}} benutzten und damit bereitstehenden Bibliotheken wiederverwendet werden (z.B. diverse Apache Commons-Implementierungen).
111 111  
112 -=== Manifest und Fat JAR
101 +{{info}}
102 +Alle Abhangigkeiten zu {{formcycle case="dat"/}} sind im scope "provided" zu definieren!
103 +{{/info}}
113 113  
114 -In der //META-INF/MANIFEST.MF// in der Plugin-JAR-Datei sollten folgende Informationen stehen:
105 +Basierend auf der hiermit zur Verfügung stehenden Infrastruktur steht der Entwicklung von eigenen Plugin-Implementierungen nichts mehr im Wege. Die Installation erfolgt anschließend je nach Verwendungszweck über die Oberflächen [[Mandant-Plugins>>doc:Formcycle.UserInterface.Client.Plugins]] oder [[System-Plugins>>doc:Formcycle.SystemSettings.UserInterface.SystemPlugins]].
115 115  
116 -; formcycle-version-requirement
117 -: Erforderlich. Version von {{formcycle/}}, für die das Plugin gedacht ist.Ist erforderlich, damit {{formcycle/}} bei der Installation die Kompatibilität prüfen kann.
118 -; Implementation-Version
119 -: Erforderlich. Version des Plugins, wird etwa in der Oberfläche angezeigt.
120 -; Build-Time oder Build-Timestamp
121 -: Optional, wird bei SNAPSHOT-Versionen mit angezeigt, um den SNAPSHOT zu identifizieren.
122 -; Implementation-Title
123 -: Optional, wird standardmäßig etwa vom Deploy-Plugin verwendet, um das Plugin zu identifzieren.
107 +== Archetypes ==
124 124  
125 -Diese Informationen können wie unten beschrieben mittels des //maven-assembly-plugin// in die Manifest-Datei geschrieben werden.
109 +TODO
126 126  
127 -Weiterhin ist beim Bauen zu beachten, dass eine sogenannte Fat-JAR gebaut werden muss. Abhängigkeiten zu {{formcycle case="dat"/}} sowie anderen Bibliotheken, welche bereits durch {{formcycle case="acc"/}} mitgeliefert werden, sollten wie bereits erwähnt im scope //provided// eingebunden werden. Falls im Plugin aber noch andere Abhängigkeiten benutzt werden, müssen diese in der JAR-Datei inkludiert werden (Fat JAR).
128 -
129 -Dies kann entweder über das [[maven-assembly-plugin>>url:https://maven.apache.org/plugins/maven-assembly-plugin/]] oder das [[maven-shade-plugin>>url:https://maven.apache.org/plugins/maven-shade-plugin/]] erfolgen. Letzteres ist für forgeschrittene Anwendungsfälle gedacht, wenn etwa mehrere Abhängigkeiten die gleichen Dateien mitbringen und zusammengeführt werden müssen.
130 -
131 -Für einfache Plugins ist das //maven-assembly-plugin// ausreichend. Dieses kann in der //pom.xml// wie folgt konfiguriert werden:
132 -
133 -{{panel title="maven-assembly-plugin in pom.xml" fullwidth="true" initial="hidden" triggerable="true"}}
134 -{{code language="java"}}
135 - <properties>
136 - <maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version>
137 - </properties>
138 - <build>
139 - <finalName>${project.parent.artifactId}</finalName>
140 - <plugins>
141 - <plugin>
142 - <groupId>org.apache.maven.plugins</groupId>
143 - <artifactId>maven-assembly-plugin</artifactId>
144 - <version>${maven-assembly-plugin.version}</version>
145 - <executions>
146 - <execution>
147 - <id>fat-jar</id>
148 - <phase>package</phase>
149 - <goals>
150 - <goal>single</goal>
151 - </goals>
152 - <configuration>
153 - <finalName>${project.parent.artifactId}</finalName>
154 - <appendAssemblyId>false</appendAssemblyId>
155 - <descriptorRefs>
156 - <descriptorRef>jar-with-dependencies</descriptorRef>
157 - </descriptorRefs>
158 - <archive>
159 - <manifest>
160 - <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
161 - </manifest>
162 - <manifestEntries>
163 - <formcycle-version-requirement>${xfc-version}</formcycle-version-requirement>
164 - <Build-Timestamp>${maven.build.timestamp}</Build-Timestamp>
165 - <Implementation-Title>${project.groupId}:${project.artifactId}</Implementation-Title>
166 - <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id>
167 - <Implementation-Version>${project.version}</Implementation-Version>
168 - </manifestEntries>
169 - </archive>
170 - </configuration>
171 - </execution>
172 - </executions>
173 - </plugin>
174 - </plugins>
175 - </build>
176 -{{/code}}
177 -{{/panel}}
178 -
179 -=== Bauen und Installieren ===
180 -
181 -Der genaue Befehl zum Bauen hängt von den konkreten Einstellungen in der //pom.xml// ab. In der Regel sollte aber folgender Standardbefehl im Plugin-Verzeichnis funktionieren:
182 -
183 -{{code}}
184 - mvn clean install
185 -{{/code}}
186 -
187 -Nachdem das Plugin erfolgreich gebaut wurde, kann die so entstandene JAR-Datei im //target//-Verzeichnis in {{formcycle/}} über die Oberfläche [[Mandant-Plugins>>doc:Formcycle.UserInterface.Client.Plugins]] beziehungsweise [[System-Plugins>>doc:Formcycle.SystemSettings.UserInterface.SystemPlugins]] hochgeladen werden.
188 -
189 -Siehe [[Deploy-Plugin>>||anchor="HDeploy-Plugin"]] zum automatischen Hochladen beim Maven-Build.
190 -
191 -Siehe [[FC-Server-Plugin>>||anchor="HFC-Server-Plugin"]] zum Starten eines einfachen {{formcycle/}}-Servers.
192 -
193 -== Maven-Archetypes ==
194 -
195 -{{figure image="eclipse-archetype.png" width="500"}}
196 - Hinzufügen des Archetypes-Katalogs in Eclipse
197 -{{/figure}}
198 -
199 -{{figure image="eclipse-archetype-select.png" width="500"}}
200 - Auswahl eines Archetypes beim Erstellen eines Maven-Projekts in Eclipse
201 -{{/figure}}
202 -
203 -Für einige häufig verwendete Plugin-Typen stehen [[Maven-Archetypes>>url:https://maven.apache.org/guides/introduction/introduction-to-archetypes.html||target="_blank"]] bereits, um schnell ein Maven-Projekt aufsetzen zu können.
204 -
205 -Voraussetzung für die Verwendung ist, dass in den //~~/.m2/settings.xml// wie oben beschrieben das XIMA-Artifactory eingerichtet wurde. Dann kann etwa über die Kommandozeile wie folgt eine Archetype generiert werden:
206 -
207 -{{code}}
208 -mvn archetype:generate -DarchetypeArtifactId=plugin-archetype-workflow-element-simple -DarchetypeGroupId=de.xima.fc.archetype -DarchetypeVersion=7.0.4
209 -{{/code}}
210 -
211 -Es werden dann einige wenige Informationen wie die gewünschten Maven-Koordinaten des neuen Plugin-Projekts abgefragt und anschließend ein neues vorkonfiguriertes Projekt erstellt.
212 -
213 -Alle vorhandenen Archetypes und deren Versionen können im [[Archetype-Katalog>>url:https://artifactory.xima-services.de/artifactory/libs-release-local/archetype-catalog.xml||target="_blank"]] eingesehen werden.
214 -
215 -In Eclipse kann der Archetype-Katalog in den Einstellungen hinzugefügt werden. Bei der Erstellung eines neuen Maven-Projekt werden dann alle verfügbaren Archetypes angezeigt:
216 -
217 -{{code language="plaintext"}}https://artifactory.xima-services.de/artifactory/libs-release-local/archetype-catalog.xml{{/code}}
218 -
219 -== Deploy-Plugin
220 -
221 -Um beim Entwickeln nicht jedes Mal eine neue Plugin-Version manuell über die Oberfläche hochladen zu müssen, kann das Deploy-Plugin verwendet werden. Dieses besteht aus 2 Teilen:
222 -
223 -* Ein Maven-Plugin, welches nach dem Bauen das Plugin via HTTP an einen laufenden {{formcycle/}}-Server sendet
224 -* Ein Plugin für {{formcycle/}}, welche die Gegenstelle in {{formcycle/}} bereitstellt und das Plugin aus dem HTTP-Request in {{formcycle/}} installiert.
225 -
226 -Weitere Details können im [[Hilfe-Artikel zum Deploy-Plugin>>doc:Formcycle.PluginDocumentation.FormcycleDeployPluginPlugin]] nachgelesen werden. Für die meisten Fälle reicht folgende Konfiguration in der //pom.xml// des Plugin-Projekts aus:
227 -
228 -{{code language="xml"}}
229 - <properties>
230 - <fc-deploy-plugin-maven-plugin.version>7.0.1<fc-deploy-plugin-maven-plugin.version/>
231 - <build>
232 - <plugins>
233 - <plugin>
234 - <groupId>de.xima.fc.maven.plugin</groupId>
235 - <artifactId>fc-deploy-plugin-maven-plugin</artifactId>
236 - <version>${fc-deploy-plugin-maven-plugin.version}</version>
237 - <executions>
238 - <execution>
239 - <id>upload</id>
240 - <phase>install</phase>
241 - <goals>
242 - <goal>deploy</goal>
243 - </goals>
244 - </execution>
245 - </executions>
246 - </plugin>
247 - </plugins>
248 - </build>
249 -{{/code}}
250 -
251 -Sofern das Deploy-Plugin bereits in {{formcycle/}} installiert ist, kann das Plugin-Projekt dann beim Bauen wie folgt hochgeladen werden:
252 -
253 -{{code language="bash"}}
254 -mvn clean install -DfcDeployUrl=http://localhost:8080/xima-formcycle -DfcDeployToken=admin
255 -{{/code}}
256 -
257 -Wird Eclipse benutzt, kann auch eine Launch-Configuration mit den //fcDeployUrl// und dem //fcDeployToken// angelegt werden.
258 -
259 -== FC-Server-Plugin ==
260 -
261 -Zum Testen eines Plugins ist es erforderlich, einen laufenden {{formcycle/}}-Server zu haben. Zur Vereinfachung der Entwicklung gibt es das //fc-server-maven-plugin//, welches mittels eines einzigen Befehls ein fertig eingerichtetes {{formcycle/}} lokal startet, wo auch bereits das Deploy-Plugin vorinstalliert ist.
262 -
263 -Sofern wie oben beschrieben in //~~/.m2/settings.xml// die //pluginGroup// hinterlegt wurde, kann in einem beliebiegen Verzeichnis wie folgt ein {{formcycle/}}-Server per Maven gestartet werden:
264 -
265 -{{code language="bash"}}
266 -mvn fc-server:run-ms-war -DxfcVersion=7.0.10
267 -{{/code}}
268 -
269 -Nach kurzer Wartezeit (beim ersten Mal kann es länger dauern) ist dann ein {{formcycle/}}-Server gestartet. Die URL steht am Ende in der Kommandozeile, standardmäßig http://localhost:8080/xima-formcycle
270 -
271 -Dies funktioniert auch in einem Ordner ohne Maven-Projekt. Falls keine {{formcycle/}} angegeben ist, wird eine Standard-Version genommen. Wird der Befehl innerhalb eines Plugin-Maven-Projekts ausgeführt, wird versucht, die Version von {{formcycle/}} aus dem Plugin-Projekt auszulesen.
272 -
111 +Um einen besseren Einstieg in die Plugin-Entwicklung zu finden, [[bieten wir auf unserer Downloadseite>>url:https://customer.formcycle.eu/index.php/s/PgdMrNOvbYEzhmr]]
eclipse-archetype-select.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.awa
Größe
... ... @@ -1,1 +1,0 @@
1 -66.8 KB
Inhalt
eclipse-archetype.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.awa
Größe
... ... @@ -1,1 +1,0 @@
1 -74.9 KB
Inhalt