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 | |||
![]() |
7.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:Main.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 | |||
9 | Die API-Dokumentation für {{formcycle/}} findet sich hier auf unserer Seite: [[Javadocs>>url:http://docs.formcycle.eu/]] | ||
10 | |||
11 | == Projekt-Setup == | ||
12 | |||
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 [[http:~~/~~/artifactory.xima-services.de/artifactory/fc-plugin-dev>>url:http://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: | ||
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 --> | ||
27 | <xfc-version>4.2.3</xfc-version> | ||
28 | |||
29 | <!-- Plugins --> | ||
30 | <maven-compiler-plugin-version>3.3</maven-compiler-plugin-version> | ||
31 | <maven-jar-plugin-version>2.4</maven-jar-plugin-version> | ||
32 | </properties> | ||
33 | |||
34 | <repositories> | ||
35 | <repository> | ||
36 | <id>xima</id> | ||
37 | <name>fc-plugin-dev</name> | ||
38 | <url>http://artifactory.xima-services.de/artifactory/fc-plugin-dev</url> | ||
39 | </repository> | ||
40 | </repositories> | ||
41 | |||
42 | <dependencies> | ||
43 | <dependency> | ||
44 | <groupId>de.xima.fc</groupId> | ||
45 | <artifactId>fc-plugin-common</artifactId> | ||
46 | <version>${xfc-version}</version> | ||
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> | ||
56 | <version>${maven-compiler-plugin-version}</version> | ||
57 | <configuration> | ||
58 | <source>1.7</source> | ||
59 | <target>1.7</target> | ||
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> | ||
67 | <version>${maven-jar-plugin-version}</version> | ||
68 | <configuration> | ||
69 | <archive> | ||
70 | <manifest> | ||
71 | <addDefaultImplementationEntries>true</addDefaultImplementationEntries> | ||
72 | </manifest> | ||
73 | <manifestEntries> | ||
74 | <formcycle-version-requirement>${xfc-version}</formcycle-version-requirement> | ||
75 | </manifestEntries> | ||
76 | </archive> | ||
77 | </configuration> | ||
78 | </plugin> | ||
79 | |||
80 | </plugins> | ||
81 | </build> | ||
82 | </project> | ||
83 | |||
84 | {{/code}} | ||
85 | {{/panel}} | ||
86 | |||
87 | 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: | ||
88 | |||
89 | {{code language="xml"}} | ||
90 | ... | ||
91 | <dependency> | ||
92 | <groupId>de.xima.fc</groupId> | ||
93 | <artifactId>fc-logic</artifactId> | ||
94 | <version>${xfc-version}</version> | ||
95 | <scope>provided</scope> | ||
96 | </dependency> | ||
97 | ... | ||
98 | {{/code}} | ||
99 | |||
100 | 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"]]. | ||
101 | |||
102 | {{info}} | ||
103 | Abhängig der verwendeten Version von {{formcycle case="dat"/}} (vor 4.2.1) ist es nötig, die nicht öffentliche Abhängigkeit aspose-processor aus fc-logic zu exkludieren. | ||
104 | {{/info}} | ||
105 | |||
106 | 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). | ||
107 | |||
108 | {{info}} | ||
109 | Alle Abhangigkeiten zu {{formcycle case="dat"/}} sind im scope "provided" zu definieren! | ||
110 | {{/info}} | ||
111 | |||
![]() |
8.1 | 112 | 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:Main.Administration.Modules.Client.Plugins]] oder [[System-Plugins>>doc:Main.System-Plugins]]. |
![]() |
1.1 | 113 | |
114 | == Demo-Plugins == | ||
115 | |||
116 | Um einen besseren Einstieg in die Plugin-Entwicklung zu finden, [[bieten wir auf unserer Downloadseite>>url:http://download.formcycle.de/download/fc/V4/Plugins/]] 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. |