... |
... |
@@ -1,0
+1,57 @@ |
|
1 |
+{{content/}} |
|
2 |
+ |
|
3 |
+Mit dem Deploy-Plugin können Plugins automatisch in die FORMCYCLE-Anwendung hochgeladen und dort installiert werden. Dies hat gegenüber der manuellen Installation über das entsprechende [[Menü im Backend>>doc:Formcycle.UserInterface.Client.Plugins]] einige Vorteile: |
|
4 |
+ |
|
5 |
+* Plugin-Entwickler können beim Maven-Build das Plugin automatisch am Ende des Builds hochladen. So kann der Entwickler schneller testen. |
|
6 |
+* Eine Installation auf einem Live-System kann so weiter automatisiert werden. |
|
7 |
+ |
|
8 |
+Das Deploy-Plugin enthält eine [[Servlet-Aktion>>doc:Formcycle.PluginDevelopment.Types.IPluginServletAction]]. Per HTTP-Post-Request wird eine Plugin-JAR-Datei an den FORMCYCLE-Server gesendet. Die weiteren Parameter im HTTP-Request bestimmen, was nun weiter mit dem Plugin geschieht, etwa ob es nur installiert oder auch aktiviert werden soll. |
|
9 |
+ |
|
10 |
+Falls das hochgeladene Plugin bereits existiert, ist es in der Regel ist es sinnvoll, dieses zu ersetzen. Dazu ist es erforderlich, anzugeben, über welchen Identifikator ein Plugin identifiziert wird. Es gibt hierbei vier Möglichkeiten, die dieses Plugin erlaubt: |
|
11 |
+ |
|
12 |
+* (**empfohlen**) Das Plugin wird anhand eines Eintrags im Manifest identifiziert. Dieses muss in der Plugin-JAR-Datei im Pfad //META-INF/MANIFEST.MF// liegen. Beim Bau der JAR-Datei muss ein entsprechender eindeutiger Eintrag in das Manifest geschrieben werden, etwa die Group-ID und Artifact-ID. Diese Methode hat den Vorteil, dass der Identifikator sich nie ändern wird und unabhängig von internen IDs und Dateinamen ist. |
|
13 |
+* Das Plugin wird anhand seines Namens identifiziert, also dem Namen der ursprünglich hochgeladenen JAR-Datei. Dies ist der Name, wie er auch [[in der Oberfläche>>doc:Formcycle.UserInterface.Client.Plugins]] zu sehen ist. |
|
14 |
+* Das Plugin wird anhand seiner internen Datenbank-ID identifiziert. Diese ist aktuell nicht an der Oberfläche zu sehen. Diese Option sollte nur von Entwicklern genutzt werden. |
|
15 |
+* Das Plugin wird anhand seiner internen UUID identifiziert. Diese ist aktuell nicht an der Oberfläche zu sehen. Diese Option sollte nur von Entwicklern genutzt werden. |
|
16 |
+ |
|
17 |
+Standardmäßig ist eine Servlet-Aktion für alle frei zugänglich. Da es in der Regel unerwünscht ist, dass jeder (auch unangemeldete) Nutzer Plugins installieren kann, kann das Deploy-Plugin durch ein Passwort abgesichert werden. Dazu muss in der Plugin-Konfiguration der Passwort-Hash hinterlegt werden und das Passwort dann im HTTP-POST-Request mitgesendet werden. |
|
18 |
+ |
|
19 |
+== HTTP-Request-Aufbau == |
|
20 |
+ |
|
21 |
+Im Folgenden wird der Aufbau des HTTP-Requests beschrieben, um ein Plugin zu installieren, zu aktualisieren oder zu löschen. Es muss immer ein HTTP-Post-Request verwendet werden, entweder als //multipart/form-data// oder //application/x-www-form-urlencoded//. Folgende Parameter können dabei übergeben werden: |
|
22 |
+ |
|
23 |
+; token |
|
24 |
+: Das Token (Password) für die Authorisierung des Requests. Nur erforderlich, wenn in der Plugin-Konfiguration ein Token festgelegt wurde. |
|
25 |
+; locale |
|
26 |
+: Die Sprache, welche während der Installation, Aktualisierung oder Löschung des Plugins verwendet werden soll, etwa //en// oder //de//. Beeinflusst nur einige Fehlermeldungen und kann in der Regel weggelassen werden. |
|
27 |
+; jar-file |
|
28 |
+: Binärdaten mit der JAR-Datei des Plugins, welches aktualisert oder installiert werden soll. |
|
29 |
+; plugin-ident |
|
30 |
+: Die Art, wie nach einem vorhandenen Plugin gesucht wird (siehe oben). Folgende Werte sind erlaubt: |
|
31 |
+;; manifest |
|
32 |
+;: Identifiziert ein Plugin anhand eines Eintrags im Manifest. |
|
33 |
+;; id |
|
34 |
+;: Identifiziert ein Plugin anhand seiner Datenbank-ID. |
|
35 |
+;; name |
|
36 |
+;: Identifiziert ein Plugin anhand seines Namens (Dateiname der JAR-Datei) |
|
37 |
+;; uuid |
|
38 |
+;: Identifiziert ein Plugin anhand seiner UUID. |
|
39 |
+; plugin-identifier |
|
40 |
+: Identifikator des Plugins, welches aktualisiert oder gelöscht werden soll. Die konkrete Bedeutung dieses Parameters ist abhängig von dem Wert von //plugin-ident//: |
|
41 |
+;; plugin-ident=manifest |
|
42 |
+;: //plugin-identifier// muss den Namen der Manifest-Eigenschaft und dessen Wert enthalten, im Format //ATTRIBUTE_NAME=VALUE//. Wird zum Beispiel //Implementation-Title=com.example.fc.plugin:my-plugin// übergeben wird, wird nach einem existierenden Plugin gesucht, welches im Manifest in der Eigenschaft //Implementation-Title// den Wert //com.example.fc.plugin:my-plugin// stehen hat. |
|
43 |
+;; plugin-ident=id |
|
44 |
+;: //plugin-identifier// muss die gewünschte ID des Plugins enthalten, etwa //53// oder /893//. |
|
45 |
+;; plugin-ident=name |
|
46 |
+;: //plugin-identifier// muss den gewünschten Names des Plugins enthalten, etwa //my-plugin.jar// oder /foobar.jar//. |
|
47 |
+;; plugin-ident=uuid |
|
48 |
+;: //plugin-identifier// muss die gewünschte UUID des Plugins enthalten, etwa //03022599-903d-429b-9822-80a324a542fc//. |
|
49 |
+; client-id |
|
50 |
+; client-uuid |
|
51 |
+; deploy-action |
|
52 |
+; disallow-install |
|
53 |
+; property |
|
54 |
+; clear-properties |
|
55 |
+ |
|
56 |
+ |
|
57 |
+== Beispiel für Maven == |