Wiki-Quellcode von Plugin-Entwicklung
Verstecke letzte Bearbeiter
author | version | line-number | content |
---|---|---|---|
![]() |
1.1 | 1 | {{content/}} |
2 | |||
3 | == Plugins für zusätzliche Funktionalitäten == | ||
4 | |||
![]() |
13.1 | 5 | {{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. |
![]() |
1.1 | 6 | |
7 | == API-Dokumentation == | ||
8 | |||
![]() |
17.1 | 9 | Die API-Dokumentation für {{formcycle/}} findet sich hier auf unserer Seite: [[Javadocs>>https://docs.formcycle.eu/]] |
![]() |
1.1 | 10 | |
11 | == Projekt-Setup == | ||
12 | |||
![]() |
15.2 | 13 | Zu Beginn der Entwicklung eines Plugins ist es nötig das entsprechende Entwicklungsprojekt aufzusetzten und zu konfigurieren. Für letzteres kommt hierbei das Build-Management-Tool [[Apache Maven>>url:https://maven.apache.org/||rel="__blank"]] zum Einsatz. Um die entsprechenden Abhängigkeiten zu {{formcycle case="dat"/}} bereitzustellen ist ein 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 beinhaltet alle öffentlich zur Verfügung stehenden Artefakte welche dem Plugin zur Laufzeit bereitgestellt und während der Entwicklung benötigt werden. Augangspunkt 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/]]. Ein Auszug des Project Object Models (pom.xml) sieht dem entsprechend beispielhaft wie folgt aus: |
![]() |
1.1 | 14 | |
15 | {{panel title="Beispiel für pom.xml" initial="hidden" triggerable="true" fullwidth="true"}} | ||
16 | {{code language="xml"}} | ||
17 | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
18 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
19 | |||
20 | ... | ||
21 | |||
22 | <properties> | ||
23 | <!-- Configuration --> | ||
24 | <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||
25 | |||
26 | <!-- Dependencies --> | ||
![]() |
15.1 | 27 | <xfc.version>6.0.0</xfc.version> |
![]() |
1.1 | 28 | |
29 | <!-- Plugins --> | ||
![]() |
16.2 | 30 | <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version> |
![]() |
15.1 | 31 | <maven-jar-plugin.version>3.1.0</maven-jar-plugin.version> |
![]() |
1.1 | 32 | </properties> |
33 | |||
34 | <repositories> | ||
35 | <repository> | ||
36 | <id>xima</id> | ||
37 | <name>fc-plugin-dev</name> | ||
![]() |
15.1 | 38 | <url>https://artifactory.xima-services.de/artifactory/fc-plugin-dev</url> |
![]() |
1.1 | 39 | </repository> |
40 | </repositories> | ||
41 | |||
42 | <dependencies> | ||
43 | <dependency> | ||
44 | <groupId>de.xima.fc</groupId> | ||
45 | <artifactId>fc-plugin-common</artifactId> | ||
![]() |
15.1 | 46 | <version>${xfc.version}</version> |
![]() |
1.1 | 47 | <scope>provided</scope> |
48 | </dependency> | ||
49 | </dependencies> | ||
50 | |||
51 | <build> | ||
52 | <plugins> | ||
53 | <plugin> | ||
54 | <groupId>org.apache.maven.plugins</groupId> | ||
55 | <artifactId>maven-compiler-plugin</artifactId> | ||
![]() |
15.1 | 56 | <version>${maven-compiler-plugin.version}</version> |
![]() |
1.1 | 57 | <configuration> |
![]() |
15.1 | 58 | <source>1.8</source> |
59 | <target>1.8</target> | ||
![]() |
1.1 | 60 | <encoding>UTF-8</encoding> |
61 | </configuration> | ||
62 | </plugin> | ||
63 | |||
64 | <plugin> | ||
65 | <groupId>org.apache.maven.plugins</groupId> | ||
66 | <artifactId>maven-jar-plugin</artifactId> | ||
![]() |
15.1 | 67 | <version>${maven-jar-plugin.version}</version> |
![]() |
1.1 | 68 | <configuration> |
69 | <archive> | ||
70 | <manifest> | ||
71 | <addDefaultImplementationEntries>true</addDefaultImplementationEntries> | ||
72 | </manifest> | ||
73 | <manifestEntries> | ||
![]() |
15.1 | 74 | <formcycle-version-requirement>${xfc.version}</formcycle-version-requirement> |
![]() |
17.3 | 75 | <Build-Time>${maven.build.timestamp}</Build-Time> |
![]() |
1.1 | 76 | </manifestEntries> |
77 | </archive> | ||
78 | </configuration> | ||
79 | </plugin> | ||
80 | |||
81 | </plugins> | ||
82 | </build> | ||
83 | </project> | ||
84 | |||
85 | {{/code}} | ||
86 | {{/panel}} | ||
87 | |||
88 | Ferner steht je nach Tiefe der Integration in die bestehende Umgebung von {{formcycle case="dat"/}} und dessen Benutzung als höchste Implementierung das Artefakt //fc-logic// zur Verfügung. Dieses wird wie folgt als weitere (oder einzige) Abhängigkeit definiert: | ||
89 | |||
90 | {{code language="xml"}} | ||
91 | ... | ||
92 | <dependency> | ||
93 | <groupId>de.xima.fc</groupId> | ||
94 | <artifactId>fc-logic</artifactId> | ||
![]() |
15.1 | 95 | <version>${xfc.version}</version> |
![]() |
1.1 | 96 | <scope>provided</scope> |
97 | </dependency> | ||
98 | ... | ||
99 | {{/code}} | ||
100 | |||
101 | Eine entsprechende Benutzung ist vor allem bei der Verwendung der Datenbankschnittstelle sowie bei der Implementierung von eigenen Verarbeitungen nötig. Eine Vorlage für ein somit entstehendes Project Object Model finden Sie [[hier>>attach:pom.xml||rel="__blank"]]. | ||
102 | |||
103 | 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). | ||
104 | |||
105 | {{info}} | ||
106 | Alle Abhangigkeiten zu {{formcycle case="dat"/}} sind im scope "provided" zu definieren! | ||
107 | {{/info}} | ||
108 | |||
![]() |
16.1 | 109 | 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]]. |
![]() |
1.1 | 110 | |
111 | == Demo-Plugins == | ||
112 | |||
![]() |
17.2 | 113 | Um einen besseren Einstieg in die Plugin-Entwicklung zu finden, [[bieten wir auf unserer Downloadseite>>url:https://customer.formcycle.eu/index.php/s/PgdMrNOvbYEzhmr]] auch für jeden Plugintyp ein kommentiertes Demo-Maven-Projekt an. Sie können diese herunterladen und in der Entwicklungsumgebung ihrer Wahl einsehen und kompilieren. |