OmniSeller:PlugIn Entwicklung: Unterschied zwischen den Versionen
Admin (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „OmniSeller PlugIn Entwicklung Überblick Der OmniSeller DataService bietet die Möglichkeit, externe Logik über PlugIns zu integrieren. PlugIns können entwickelt werden, um spezifische Geschäftsanforderungen zu erfüllen, beispielsweise das Anpassen von Produktdaten vor dem Upload oder das Modifizieren von Preisen basierend auf bestimmten Kriterien. OmniSeller PlugIns basieren auf .NET Standard 2.0, um sowohl mit alten (.NET Framework 4.7.2) als auch…“) |
Admin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
OmniSeller PlugIn Entwicklung | [[Datei:Omniseller plugin c.png|300px|thumb]] | ||
Überblick | <h1>OmniSeller PlugIn Entwicklung</h1> | ||
Der OmniSeller DataService bietet die Möglichkeit, externe Logik über PlugIns zu integrieren. PlugIns können entwickelt werden, um spezifische Geschäftsanforderungen zu erfüllen, beispielsweise das Anpassen von Produktdaten vor dem Upload oder das Modifizieren von Preisen basierend auf bestimmten Kriterien. | <h2>Überblick</h2> | ||
<p>Der OmniSeller DataService bietet die Möglichkeit, externe Logik über PlugIns zu integrieren. PlugIns können entwickelt werden, um spezifische Geschäftsanforderungen zu erfüllen, beispielsweise das Anpassen von Produktdaten vor dem Upload oder das Modifizieren von Preisen basierend auf bestimmten Kriterien.</p> | |||
OmniSeller PlugIns basieren auf .NET Standard 2.0, um sowohl mit alten (.NET Framework 4.7.2) als auch mit neuen (.NET 6.0) Service-Versionen kompatibel zu sein. | <p>OmniSeller PlugIns basieren auf <b>.NET Standard 2.0</b>, um sowohl mit alten (.NET Framework 4.7.2) als auch mit neuen (.NET 6.0) Service-Versionen kompatibel zu sein.</p> | ||
<h2>Voraussetzungen</h2> | |||
<ul> | |||
Entwicklungsumgebung: | <li><b>Entwicklungsumgebung:</b> | ||
<ul> | |||
Visual Studio 2019 oder höher | <li>Visual Studio 2019 oder höher</li> | ||
.NET Standard 2.0 als Zielplattform für PlugIns | <li>.NET Standard 2.0 als Zielplattform für PlugIns</li> | ||
Abhängigkeiten: | </ul></li> | ||
<li><b>Abhängigkeiten:</b> | |||
OmniSeller.Common und OmniSeller.Enums aus dem HTK NuGet Repository | <ul> | ||
<li>OmniSeller.Common und OmniSeller.Enums aus dem HTK NuGet Repository HTKPackages<code></code></li> | |||
</ul></li> | |||
<li><b>Nützliche Schnittstellen und Modelle:</b> | |||
Nützliche Schnittstellen und Modelle: | <ul> | ||
<li>IEntryPointPlugin (aus OmniSeller.Common)</li> | |||
IEntryPointPlugin (aus OmniSeller.Common) | <li>Enums.EntryPoint und Enums.ShopTypes</li> | ||
Enums.EntryPoint und Enums.ShopTypes | </ul></li> | ||
Zugriff auf ein bestehendes OmniSeller-System, um das PlugIn zu testen | <li><b>Zugriff auf ein bestehendes OmniSeller-System</b>, um das PlugIn zu testen</li> | ||
</ul> | |||
Struktur eines OmniSeller PlugIns | <h2>Struktur eines OmniSeller PlugIns</h2> | ||
Ein OmniSeller PlugIn muss die Schnittstelle IEntryPointPlugin implementieren, die folgende Eigenschaften und Methoden definiert: | <p>Ein OmniSeller PlugIn muss die Schnittstelle <code>IEntryPointPlugin</code> implementieren, die folgende Eigenschaften und Methoden definiert:</p> | ||
<pre> | |||
public interface IEntryPointPlugin | public interface IEntryPointPlugin | ||
{ | { | ||
string Name { get; } | string Name { get; } | ||
EntryPoint SupportedEntryPoints { get; } | EntryPoint SupportedEntryPoints { get; } | ||
string Version { get; } | string Version { get; } | ||
int SortOrder { get; } | int SortOrder { get; } | ||
string Author { get; } | string Author { get; } | ||
string Publisher { get; } | string Publisher { get; } | ||
ShopTypes SupportedShopTypes { get; } | ShopTypes SupportedShopTypes { get; } | ||
string Notes { get; } | string Notes { get; } | ||
Product Call(ShopTypes shopType, int portalID, Product productObj, EntryPoint entryPoint); | |||
Product Call(ShopTypes shopType, int portalID, Product productObj, EntryPoint entryPoint); | |||
} | } | ||
Beispiel für ein PlugIn: ZeroPricePlugIn | </pre> | ||
Dieses PlugIn setzt automatisch den niedrigsten Preis für Produkte, die den Preis 0 haben, basierend auf den Preisen der Kind-Produkte. | <h3>Beispiel für ein PlugIn: ZeroPricePlugIn</h3> | ||
<p>Dieses PlugIn setzt automatisch den niedrigsten Preis für Produkte, die den Preis <code>0</code> haben, basierend auf den Preisen der Kind-Produkte.</p> | |||
<pre> | |||
using OmniSeller.Enums; | using OmniSeller.Enums; | ||
using OmniSellerPlugins.Interfaces; | using OmniSellerPlugins.Interfaces; | ||
Zeile 79: | Zeile 75: | ||
} | } | ||
} | } | ||
Schritt-für-Schritt-Anleitung zur Erstellung eines PlugIns | </pre> | ||
1. Projekt einrichten | <h2>Schritt-für-Schritt-Anleitung zur Erstellung eines PlugIns</h2> | ||
Erstelle ein neues .NET Standard 2.0 Class Library-Projekt in Visual Studio | <h3>1. Projekt einrichten</h3> | ||
Füge die folgenden Pakete über das HTK NuGet Repository hinzu: | <ul> | ||
<li>Erstelle ein neues <b>.NET Standard 2.0</b> Class Library-Projekt in Visual Studio</li> | |||
<li>Füge die folgenden Pakete über das HTK NuGet Repository hinzu:</li> | |||
<pre> | |||
OmniSeller.Common | OmniSeller.Common | ||
OmniSeller.Enums | OmniSeller.Enums | ||
2. PlugIn-Logik implementieren | </pre></ul> | ||
Implementiere die Schnittstelle IEntryPointPlugin. | <h3>2. PlugIn-Logik implementieren</h3> | ||
Definiere die unterstützten EntryPoints und ShopTypes. | <ul> | ||
Implementiere die Logik in der Methode Call. | <li>Implementiere die Schnittstelle <code>IEntryPointPlugin</code>.</li> | ||
3. PlugIn erstellen und veröffentlichen | <li>Definiere die unterstützten <code>EntryPoints</code> und <code>ShopTypes</code>.</li> | ||
Kompiliere das Projekt. | <li>Implementiere die Logik in der Methode <code>Call</code>.</li> | ||
Die resultierende .dll-Datei (zusammen mit ihren Abhängigkeiten) wird in das OmniSeller PlugIn-Verzeichnis kopiert: | </ul> | ||
<h3>3. PlugIn erstellen und veröffentlichen</h3> | |||
<ul> | |||
C:\OmniVersum\Apps\OmniSellerService2\PlugIns | <li>Kompiliere das Projekt.</li> | ||
4. PlugIn testen | <li>Die resultierende <code>.dll</code>-Datei (zusammen mit ihren Abhängigkeiten) wird in das OmniSeller PlugIn-Verzeichnis kopiert:</li> | ||
Starte den OmniSeller DataService und beobachte die Logs. | <pre>C:\OmniVersum\Apps\OmniSellerService2\PlugIns</pre></ul> | ||
Das PlugIn wird automatisch geladen und ausgeführt, wenn der entsprechende EntryPoint erreicht wird. | <h3>4. PlugIn testen</h3> | ||
EntryPoints und deren Bedeutung | <ul> | ||
<li>Starte den OmniSeller DataService und beobachte die Logs.</li> | |||
<li>Das PlugIn wird automatisch geladen und ausgeführt, wenn der entsprechende <code>EntryPoint</code> erreicht wird.</li> | |||
</ul> | |||
<h2>EntryPoints und deren Bedeutung</h2> | |||
{| border="1" | |||
|- | |||
! | EntryPoint | |||
! | Beschreibung | |||
|- | |||
| | PORTAL_STARTUP | |||
| | Wird beim Start einer Portalwarteschlange ausgeführt (einmalig). | |||
|- | |||
| | PRODUCT_BEFORE_UPLOAD | |||
| | Vor dem Produkt-Upload. | |||
|- | |||
| | PRODUCT_AFTER_UPLOAD | |||
| | Nach dem Produkt-Upload. | |||
|- | |||
| | STOCK_BEFORE_UPLOAD | |||
| | Vor dem Preis-Upload. | |||
|- | |||
| | STOCK_AFTER_UPLOAD | |||
| | Nach dem Preis-Upload. | |||
|- | |||
| | ORDER_AFTER_DOWNLOAD | |||
| | Nach dem Herunterladen einer Bestellung. | |||
|} | |||
Teste das PlugIn in einer Entwicklungs- oder Staging-Umgebung, bevor es in die Produktion übernommen wird. | <h2>Best Practices für PlugIns</h2> | ||
Log-Ausgaben: | <ul> | ||
<li><b>Vermeide lange Blockaden:</b> | |||
Nutze Console.WriteLine, um wichtige Informationen und Debug-Daten während der PlugIn-Ausführung zu loggen. | <ul> | ||
Beispielhafte Ordnerstruktur | <li>Die Methode <code>Call</code> sollte möglichst schnell ausgeführt werden, um Verzögerungen im DataService zu vermeiden.</li> | ||
</ul></li> | |||
<li><b>Fehlerbehandlung:</b> | |||
<ul> | |||
<li>Verwende <code>try-catch</code>, um Laufzeitfehler zu verhindern, die den gesamten Service beeinflussen könnten.</li> | |||
</ul></li> | |||
<li><b>Testumgebung nutzen:</b> | |||
<ul> | |||
<li>Teste das PlugIn in einer Entwicklungs- oder Staging-Umgebung, bevor es in die Produktion übernommen wird.</li> | |||
</ul></li> | |||
<li><b>Log-Ausgaben:</b> | |||
<ul> | |||
<li>Nutze <code>Console.WriteLine</code>, um wichtige Informationen und Debug-Daten während der PlugIn-Ausführung zu loggen.</li> | |||
</ul></li> | |||
</ul> | |||
<h2>Beispielhafte Ordnerstruktur</h2> | |||
<pre> | |||
C:\OmniVersum\Apps\OmniSellerService2\ | C:\OmniVersum\Apps\OmniSellerService2\ | ||
├── PlugIns\ | ├── PlugIns\ | ||
Zeile 129: | Zeile 154: | ||
│ ├── OmniSeller.Enums.dll | │ ├── OmniSeller.Enums.dll | ||
├── OmniSellerService.exe | ├── OmniSellerService.exe | ||
Häufige Fehler und Lösungen | </pre> | ||
PlugIn wird nicht geladen: | <h2>Häufige Fehler und Lösungen</h2> | ||
<ul> | |||
Überprüfe, ob die IEntryPointPlugin-Schnittstelle korrekt implementiert wurde. | <li><b>PlugIn wird nicht geladen:</b> | ||
Stelle sicher, dass alle Abhängigkeiten (z. B. OmniSeller.Common) verfügbar sind. | <ul> | ||
Assembly-Version inkompatibel: | <li>Überprüfe, ob die <code>IEntryPointPlugin</code>-Schnittstelle korrekt implementiert wurde.</li> | ||
<li>Stelle sicher, dass alle Abhängigkeiten (z. B. <code>OmniSeller.Common</code>) verfügbar sind.</li> | |||
Stelle sicher, dass die Hauptanwendung und das PlugIn dieselben Versionen von OmniSeller.Common | </ul></li> | ||
Kein EntryPoint aktiviert: | <li><b>Assembly-Version inkompatibel:</b> | ||
<ul> | |||
Prüfe, ob der EntryPoint des PlugIns (SupportedEntryPoints) mit dem vom Service ausgelösten EntryPoint übereinstimmt. | <li>Stelle sicher, dass die Hauptanwendung und das PlugIn dieselben Versionen von <code>OmniSeller.Common</code> verwenden.</li> | ||
</ul></li> | |||
<li><b>Kein <code>EntryPoint</code> aktiviert:</b> | |||
<ul> | |||
<li>Prüfe, ob der EntryPoint des PlugIns (<code>SupportedEntryPoints</code>) mit dem vom Service ausgelösten EntryPoint übereinstimmt.<br><br><br></li> | |||
</ul></li> | |||
</ul> | |||
<h1>Hinweis zur PlugIn-Entwicklung</h1> | |||
<p>Die Möglichkeit, individuelle PlugIns für den OmniSeller DataService zu erstellen, bietet eine flexible und maßgeschneiderte Lösung für spezifische Kundenanforderungen. Bitte beachten Sie jedoch:</p> | |||
<ul> | |||
<li><b>Die Entwicklung von PlugIns ist nicht Bestandteil unserer regulären Pakete, einschließlich des Enterprise-Pakets.</b></li> | |||
<li><b>Eine PlugIn-Entwicklung erfordert immer eine gesonderte Absprache mit HTK.</b></li> | |||
</ul> | |||
<p>PlugIns ermöglichen Anpassungen, die über den Standardumfang hinausgehen. Sie sind ideal, um individuelle Geschäftsprozesse oder spezielle Anforderungen abzubilden, erfordern jedoch eine präzise Abstimmung zwischen Ihnen und unserem Entwicklungsteam.</p> | |||
<h2>Was bedeutet das für Sie?</h2> | |||
<ul> | |||
<li><b>Keine Standardfunktion:</b> Die PlugIn-Entwicklung ist eine Zusatzleistung und nicht automatisch im Lieferumfang unserer OmniSeller-Pakete enthalten (auch nicht im Enterprise Paket).</li> | |||
<li><b>Gesonderte Kosten:</b> Jede PlugIn-Entwicklung wird individuell kalkuliert und als separate Leistung abgerechnet.</li> | |||
<li><b>Kundenspezifische Lösung:</b> PlugIns werden speziell für Ihre Anforderungen erstellt und sind nicht universell einsetzbar.</li> | |||
</ul> | |||
<p>Wenn Sie Interesse an der Entwicklung eines PlugIns haben, kontaktieren Sie bitte Ihren Ansprechpartner bei HTK. Wir freuen uns darauf, Ihre Anforderungen zu besprechen und Ihnen eine passende Lösung anzubieten.</p> | |||
<p> | |||
<i>HTK behält sich das Recht vor, PlugIn-Anfragen zu prüfen und gegebenenfalls abzulehnen, falls diese nicht mit den technischen oder geschäftlichen Rahmenbedingungen vereinbar sind.</i></p> |
Aktuelle Version vom 5. Dezember 2024, 11:35 Uhr
OmniSeller PlugIn Entwicklung
Überblick
Der OmniSeller DataService bietet die Möglichkeit, externe Logik über PlugIns zu integrieren. PlugIns können entwickelt werden, um spezifische Geschäftsanforderungen zu erfüllen, beispielsweise das Anpassen von Produktdaten vor dem Upload oder das Modifizieren von Preisen basierend auf bestimmten Kriterien.
OmniSeller PlugIns basieren auf .NET Standard 2.0, um sowohl mit alten (.NET Framework 4.7.2) als auch mit neuen (.NET 6.0) Service-Versionen kompatibel zu sein.
Voraussetzungen
- Entwicklungsumgebung:
- Visual Studio 2019 oder höher
- .NET Standard 2.0 als Zielplattform für PlugIns
- Abhängigkeiten:
- OmniSeller.Common und OmniSeller.Enums aus dem HTK NuGet Repository HTKPackages
- OmniSeller.Common und OmniSeller.Enums aus dem HTK NuGet Repository HTKPackages
- Nützliche Schnittstellen und Modelle:
- IEntryPointPlugin (aus OmniSeller.Common)
- Enums.EntryPoint und Enums.ShopTypes
- Zugriff auf ein bestehendes OmniSeller-System, um das PlugIn zu testen
Struktur eines OmniSeller PlugIns
Ein OmniSeller PlugIn muss die Schnittstelle IEntryPointPlugin
implementieren, die folgende Eigenschaften und Methoden definiert:
public interface IEntryPointPlugin { string Name { get; } EntryPoint SupportedEntryPoints { get; } string Version { get; } int SortOrder { get; } string Author { get; } string Publisher { get; } ShopTypes SupportedShopTypes { get; } string Notes { get; } Product Call(ShopTypes shopType, int portalID, Product productObj, EntryPoint entryPoint); }
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.
using OmniSeller.Enums; using OmniSellerPlugins.Interfaces; using OmniSellerPlugins.Models; using System; namespace OmniSeller.PlugIns { internal class ZeroPricePlugIn : IEntryPointPlugin { public string Name => "OmniSellerZeroPricePlugIn"; public EntryPoint SupportedEntryPoints => EntryPoint.PRICE_BEFORE_UPLOAD; public string Version => "1.0.0.0"; public int SortOrder => 1000; public string Author => "AS"; public string Publisher => "HTK GmbH & Co.KG"; public ShopTypes SupportedShopTypes => ShopTypes.Magento; public string Notes => "Kein Hinweistext"; public ZeroPricePlugIn() { Console.WriteLine($"Running PlugIn {Name}"); } public Product Call(ShopTypes shopType, int portalID, Product productObj, EntryPoint entryPoint) { Console.WriteLine($"Running PlugIn {Name} for {shopType} at {entryPoint}"); if (shopType == ShopTypes.Magento) { // Logik zur Anpassung von Produktpreisen } return productObj; } } }
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:
OmniSeller.Common OmniSeller.Enums
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:
C:\OmniVersum\Apps\OmniSellerService2\PlugIns
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
EntryPoint | Beschreibung |
---|---|
PORTAL_STARTUP | Wird beim Start einer Portalwarteschlange ausgeführt (einmalig). |
PRODUCT_BEFORE_UPLOAD | Vor dem Produkt-Upload. |
PRODUCT_AFTER_UPLOAD | Nach dem Produkt-Upload. |
STOCK_BEFORE_UPLOAD | Vor dem Preis-Upload. |
STOCK_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.
- Die Methode
- Fehlerbehandlung:
- Verwende
try-catch
, um Laufzeitfehler zu verhindern, die den gesamten Service beeinflussen könnten.
- Verwende
- 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.
- Nutze
Beispielhafte Ordnerstruktur
C:\OmniVersum\Apps\OmniSellerService2\ ├── PlugIns\ │ ├── OmniSellerZeroPricePlugIn.dll │ ├── OmniSeller.Common.dll │ ├── OmniSeller.Enums.dll ├── OmniSellerService.exe
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.
- Überprüfe, ob die
- Assembly-Version inkompatibel:
- Stelle sicher, dass die Hauptanwendung und das PlugIn dieselben Versionen von
OmniSeller.Common
verwenden.
- Stelle sicher, dass die Hauptanwendung und das PlugIn dieselben Versionen von
- Kein
EntryPoint
aktiviert:- Prüfe, ob der EntryPoint des PlugIns (
SupportedEntryPoints
) mit dem vom Service ausgelösten EntryPoint übereinstimmt.
- Prüfe, ob der EntryPoint des PlugIns (
Hinweis zur PlugIn-Entwicklung
Die Möglichkeit, individuelle PlugIns für den OmniSeller DataService zu erstellen, bietet eine flexible und maßgeschneiderte Lösung für spezifische Kundenanforderungen. Bitte beachten Sie jedoch:
- Die Entwicklung von PlugIns ist nicht Bestandteil unserer regulären Pakete, einschließlich des Enterprise-Pakets.
- Eine PlugIn-Entwicklung erfordert immer eine gesonderte Absprache mit HTK.
PlugIns ermöglichen Anpassungen, die über den Standardumfang hinausgehen. Sie sind ideal, um individuelle Geschäftsprozesse oder spezielle Anforderungen abzubilden, erfordern jedoch eine präzise Abstimmung zwischen Ihnen und unserem Entwicklungsteam.
Was bedeutet das für Sie?
- Keine Standardfunktion: Die PlugIn-Entwicklung ist eine Zusatzleistung und nicht automatisch im Lieferumfang unserer OmniSeller-Pakete enthalten (auch nicht im Enterprise Paket).
- Gesonderte Kosten: Jede PlugIn-Entwicklung wird individuell kalkuliert und als separate Leistung abgerechnet.
- Kundenspezifische Lösung: PlugIns werden speziell für Ihre Anforderungen erstellt und sind nicht universell einsetzbar.
Wenn Sie Interesse an der Entwicklung eines PlugIns haben, kontaktieren Sie bitte Ihren Ansprechpartner bei HTK. Wir freuen uns darauf, Ihre Anforderungen zu besprechen und Ihnen eine passende Lösung anzubieten.
HTK behält sich das Recht vor, PlugIn-Anfragen zu prüfen und gegebenenfalls abzulehnen, falls diese nicht mit den technischen oder geschäftlichen Rahmenbedingungen vereinbar sind.