Wiki-Quellcode von Plugin-Entwicklung
Zeige letzte Bearbeiter
| author | version | line-number | content |
|---|---|---|---|
| 1 | {{content/}} | ||
| 2 | |||
| 3 | == Plugins für zusätzliche Funktionalitäten == | ||
| 4 | |||
| 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. | ||
| 6 | |||
| 7 | == API-Dokumentation == | ||
| 8 | |||
| 9 | Die API-Dokumentation für {{formcycle/}} findet sich hier auf unserer Seite: [[Javadocs>>https://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. | ||
| 14 | |||
| 15 | 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. | ||
| 16 | |||
| 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/]]. | ||
| 18 | |||
| 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//: | ||
| 20 | |||
| 21 | {{panel title="~~~~/.m2/settings.xml" fullwidth="true" initial="hidden" triggerable="true"}} | ||
| 22 | {{code language="xml"}} | ||
| 23 | <?xml version="1.0" encoding="UTF-8"?> | ||
| 24 | <settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0" | ||
| 25 | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> | ||
| 26 | |||
| 27 | <!-- Add XIMA artifactory --> | ||
| 28 | <profiles> | ||
| 29 | <profile> | ||
| 30 | <!-- FORMCYCLE dependencies --> | ||
| 31 | <repositories> | ||
| 32 | <repository> | ||
| 33 | <snapshots> | ||
| 34 | <enabled>false</enabled> | ||
| 35 | </snapshots> | ||
| 36 | <id>xima</id> | ||
| 37 | <name>libs-release</name> | ||
| 38 | <url>https://artifactory.xima-services.de/artifactory/fc-plugin-dev</url> | ||
| 39 | </repository> | ||
| 40 | </repositories> | ||
| 41 | <!-- Maven plugins for FORMCYCLE --> | ||
| 42 | <pluginRepositories> | ||
| 43 | <pluginRepository> | ||
| 44 | <snapshots> | ||
| 45 | <enabled>false</enabled> | ||
| 46 | </snapshots> | ||
| 47 | <id>xima</id> | ||
| 48 | <name>plugins-release</name> | ||
| 49 | <url>https://artifactory.xima-services.de/artifactory/fc-plugin-dev</url> | ||
| 50 | </pluginRepository> | ||
| 51 | </pluginRepositories> | ||
| 52 | <id>xima-artifactory</id> | ||
| 53 | </profile> | ||
| 54 | </profiles> | ||
| 55 | |||
| 56 | <!-- Enable XIMA artifactory by default --> | ||
| 57 | <activeProfiles> | ||
| 58 | <activeProfile>xima-artifactory</activeProfile> | ||
| 59 | </activeProfiles> | ||
| 60 | |||
| 61 | <!-- FORMCYCLE specific Maven plugins provided by XIMA --> | ||
| 62 | <pluginGroups> | ||
| 63 | <pluginGroup>de.xima.fc.maven.plugin</pluginGroup> | ||
| 64 | </pluginGroups> | ||
| 65 | </settings> | ||
| 66 | {{/code}} | ||
| 67 | {{/panel}} | ||
| 68 | |||
| 69 | In der //pom.xml// des Plugin-Projekts kann die Abhängigkeit dann wie folgt eingebunden werden: | ||
| 70 | |||
| 71 | {{code language="xml"}} | ||
| 72 | <properties> | ||
| 73 | <xfc.version>7.0.10</xfc.version> | ||
| 74 | </properties> | ||
| 75 | |||
| 76 | <dependencies> | ||
| 77 | <dependency> | ||
| 78 | <groupId>de.xima.fc</groupId> | ||
| 79 | <artifactId>fc-plugin-common</artifactId> | ||
| 80 | <version>${xfc.version}</version> | ||
| 81 | <scope>provided</scope> | ||
| 82 | </dependency> | ||
| 83 | </dependencies> | ||
| 84 | {{/code}} | ||
| 85 | |||
| 86 | 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: | ||
| 87 | |||
| 88 | {{code language="xml"}} | ||
| 89 | <dependency> | ||
| 90 | <groupId>de.xima.fc</groupId> | ||
| 91 | <artifactId>fc-logic</artifactId> | ||
| 92 | <version>${xfc.version}</version> | ||
| 93 | <scope>provided</scope> | ||
| 94 | </dependency> | ||
| 95 | {{/code}} | ||
| 96 | |||
| 97 | 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"]]. | ||
| 98 | |||
| 99 | 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). | ||
| 100 | |||
| 101 | {{info}} | ||
| 102 | Alle Abhangigkeiten zu {{formcycle case="dat"/}} sind im scope "provided" zu definieren! | ||
| 103 | {{/info}} | ||
| 104 | |||
| 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]]. | ||
| 106 | |||
| 107 | == Archetypes == | ||
| 108 | |||
| 109 | TODO | ||
| 110 | |||
| 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]] |