FORMCYCLE Hilfe - Plugin-Entwicklung 

Page / - zuletzt bearbeitet von gru am 02.11.2020, 11:28 

Plugin-Entwicklung 
zuletzt bearbeitet von gru
am 02.11.2020, 11:28

Inhaltsverzeichnis
Plugins für zusätzliche Funktionalitäten
API-Dokumentation
Projekt-Setup
Demo-Plugins

Inhalt [ Verbergen ] 
•	Plugins für zusätzliche Funktionalitäten
•	API-Dokumentation
•	Projekt-Setup
•	Demo-Plugins
Plugins für zusätzliche Funktionalitäten
Xima® Formcycle bietet ein Vielzahl von Einstiegspunkten für die Erweiterung der Standard-Funktionalitäten durch Plugins. Basierend auf den einzelnen Plugin-Typen werden diese zu gewissen Zeitpunkten automatisch oder manuell angesprochen und erlauben es somit von der Ersetzung eigener Platzhalter bis hin zur Implementierung eigener Verarbeitungslogik Xima® Formcycle anzupassen. Als fundamentaler erster Schritt für die Entwicklung eigener Plugins ist hierbei das Erstellen eines entsprechenden Java-Projekts anzusehen.
API-Dokumentation
Die API-Dokumentation für Xima® Formcycle findet sich hier auf unserer Seite: Javadocs
Projekt-Setup
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 zum Einsatz. Um die entsprechenden Abhängigkeiten zu Xima® Formcycle bereitzustellen ist ein Repository unter der 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. Ein Auszug des Project Object Models (pom.xml) sieht dem entsprechend beispielhaft wie folgt aus:
Beispiel für pom.xml 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

...

<properties>
 <!-- Configuration -->
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

 <!-- Dependencies -->
 <xfc.version>6.0.0</xfc.version>

 <!-- Plugins -->
 <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
 <maven-jar-plugin.version>3.1.0</maven-jar-plugin.version>
</properties>

<repositories>
 <repository>
  <id>xima</id>
  <name>fc-plugin-dev</name>
  <url>https://artifactory.xima-services.de/artifactory/fc-plugin-dev</url>
 </repository>
</repositories>

<dependencies>
 <dependency>
  <groupId>de.xima.fc</groupId>
  <artifactId>fc-plugin-common</artifactId>
  <version>${xfc.version}</version>
  <scope>provided</scope>
 </dependency>
</dependencies>

<build>
 <plugins>
  <plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>
   <version>${maven-compiler-plugin.version}</version>
   <configuration>
    <source>1.8</source>
    <target>1.8</target>
    <encoding>UTF-8</encoding>
   </configuration>
  </plugin>

  <plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-jar-plugin</artifactId>
   <version>${maven-jar-plugin.version}</version>
   <configuration>
    <archive>
     <manifest>
      <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
     </manifest>
     <manifestEntries>
      <formcycle-version-requirement>${xfc.version}</formcycle-version-requirement>
      <Build-Time>${maven.build.timestamp}</Build-Time>
     </manifestEntries>
    </archive>
   </configuration>
  </plugin>

 </plugins>
</build>
</project>
Ferner steht je nach Tiefe der Integration in die bestehende Umgebung von Xima® Formcycle 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:
...
 <dependency>
  <groupId>de.xima.fc</groupId>
  <artifactId>fc-logic</artifactId>
  <version>${xfc.version}</version>
  <scope>provided</scope>
 </dependency>
...
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.
Ferner ist zu beachten, dass sämtliche Abhängigkeiten zu Xima® Formcycle 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 Xima® Formcycle benutzten und damit bereitstehenden Bibliotheken wiederverwendet werden (z.B. diverse Apache Commons-Implementierungen).
Alle Abhangigkeiten zu Xima® Formcycle sind im scope "provided" zu definieren! 
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 oder System-Plugins.
Demo-Plugins
Um einen besseren Einstieg in die Plugin-Entwicklung zu finden, bieten wir auf unserer Downloadseite 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.