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
EntryPointsundShopTypes. - 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
EntryPointerreicht 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.