OmniSeller:PlugIn Entwicklung
=== Beispiel für ein PlugIn: ZeroPricePlugIn === Dieses PlugIn setzt automatisch den niedrigsten Preis für Produkte, die den Preis 0
haben, basierend auf den Preisen der Kind-Produkte.
== Schritt-für-Schritt-Anleitung zur Erstellung eines PlugIns == === 1. Projekt einrichten ===
- Erstelle ein neues .NET Standard 2.0 Class Library-Projekt in Visual Studio.
- Füge die folgenden Pakete über das HTK NuGet Repository hinzu:
=== 2. PlugIn-Logik implementieren ===
- Implementiere die Schnittstelle
IEntryPointPlugin
. - Definiere die unterstützten
EntryPoints
undShopTypes
. - Implementiere die Logik in der Methode
Call
.
=== 3. PlugIn erstellen und veröffentlichen ===
- Kompiliere das Projekt.
- Die resultierende
.dll
-Datei (zusammen mit ihren Abhängigkeiten) wird in das OmniSeller PlugIn-Verzeichnis kopiert:
=== 4. PlugIn testen ===
- Starte den OmniSeller DataService und beobachte die Logs.
- Das PlugIn wird automatisch geladen und ausgeführt, wenn der entsprechende
EntryPoint
erreicht wird.
== EntryPoints und deren Bedeutung == {| class="wikitable" |- ! EntryPoint
! Beschreibung</thead> |
---|
PORTAL_STARTUP
|
Wird beim Start eines Portals ausgeführt. |
- |
PRODUCT_BEFORE_UPLOAD
|
Vor dem Produkt-Upload. |
- |
PRODUCT_AFTER_UPLOAD
|
Nach dem Produkt-Upload. |
- |
PRICE_BEFORE_UPLOAD
|
Vor dem Preis-Upload. |
- |
PRICE_AFTER_UPLOAD
|
Nach dem Preis-Upload. |
- |
ORDER_AFTER_DOWNLOAD
|
Nach dem Herunterladen einer Bestellung. |
} |
== Best Practices für PlugIns ==
Vermeide lange Blockaden:
#* Die Methode Call
sollte möglichst schnell ausgeführt werden, um Verzögerungen im DataService zu vermeiden.
Fehlerbehandlung:
#* Verwende try-catch
, um Laufzeitfehler zu verhindern, die den gesamten Service beeinflussen könnten.
Testumgebung nutzen:
#* Teste das PlugIn in einer Entwicklungs- oder Staging-Umgebung, bevor es in die Produktion übernommen wird.
Log-Ausgaben:
#* Nutze Console.WriteLine
, um wichtige Informationen und Debug-Daten während der PlugIn-Ausführung zu loggen.
== Beispielhafte Ordnerstruktur ==
== Häufige Fehler und Lösungen ==
PlugIn wird nicht geladen:
#* Überprüfe, ob die IEntryPointPlugin
-Schnittstelle korrekt implementiert wurde. #* Stelle sicher, dass alle Abhängigkeiten (z. B. OmniSeller.Common
) verfügbar sind.
Assembly-Version inkompatibel:
#* Stelle sicher, dass die Hauptanwendung und das PlugIn dieselben Versionen von OmniSeller.Common
und OmniSeller.Enums
verwenden.
Kein EntryPoint
aktiviert:
#* Prüfe, ob der EntryPoint des PlugIns (SupportedEntryPoints
) mit dem vom Service ausgelösten EntryPoint übereinstimmt.
Falls es weitere Fragen oder Probleme gibt, wende dich an das OmniSeller-Entwicklungsteam.