====== Eigene Backend-Objekte erstellen ====== eBiss erlaubt die programmatische Anbindung beliebiger Backend-Systeme über die BackendObjectRetriever und -Transmitter Jobsteps. Hierzu muss ein passendes Backend-Objekt implementiert werden, welches von den Jobsteps verwendet wird um Daten mit dem Backend auszutauschen. Eine Beschreibung der Backend-Jobsteps finden Sie [[prozessdefinition:jobs:jobsteps:kommunikation:backend:start|hier]]. Die Basis für die Implementierung aller Backend-Objekte ist ein .NET 4.5 Projekt (Projektvorlage "Klassenbibliothek"). Die daraus erzeugte .dll muss in ./Plugins Verzeichnis unterhalb der eBiss Installationsverzeichnisses abgelegt werden. ===== Backend-Objekt für BackendObjectRetreiver ===== Der [[prozessdefinition:jobs:jobsteps:kommunikation:backend:backendobjectretriever]]([[prozessdefinition:jobs:jobsteps:kommunikation:backend:backendobjectretrieverex|Ex]]) verwendet Backend-Objekte welche das "IBackendObjectSender" (oder ein davon abgeleitetes) Interface implementieren. ===== Backend-Objekt für BackendObjectTransmitter ===== Der [[prozessdefinition:jobs:jobsteps:kommunikation:backend:backendobjecttransmitter]]([[prozessdefinition:jobs:jobsteps:kommunikation:backend:backendobjecttransmitterex|Ex]]) verwendet Backend-Objekte welche das „IBackendObjectReceiver“ (oder ein davon abgeleitetes) Interface implementieren. ===== Schnittstellen ===== Die für die Erstellung relevanten Schnittstellen befinden sich in der eBiss.Api.dll zu der eine Referenzen in dem .NET Projekt hinzugefügt werden muss. Hierbei ist darauf zu achten immer die aktuellste Version der Bibliothek zu verwenden. ==== eBiss.Api.IBackendObjectSender==== public interface IBackendObjectSender { void Initialize(IJob runningJob); bool MoveNext(); IMapObjectRoot Current { get; } } Standard-Interface für die Verwendung des BackendObjectRetrievers. Das Interface ist wie ein Enumerator über die empfangenen Nachrichten aufgebaut. ==== eBiss.Api.IBackendObjectSenderCommitted ==== public interface IBackendObjectSenderCommitted : IBackendObjectSender { void CommitCurrent(string messageComRef, string messageInfo); void RollbackCurrent(string errorMessage); } IBackendObjectSenderCommitted erweitert IBackendObjectSender um ein "Transaktionshandling" empfangene Nachrichten werden per Methodenaufruf entweder als erfolgreich oder fehlerhaft verarbeitet markiert. ==== eBiss.Api.IBackendObjectReceiver==== public interface IBackendObjectReceiver { bool ReceiveObject(object backendObject); } Standard-Interface für die Verwendung des BackendObjectTransmitters. Das Interface nimmt Nachrichten die für den Versand bestimmt sind über die ReceiveObject-Methode entgegen. ==== eBiss.Api.IBackendObjectTaskAwareReceiver ==== public interface IBackendObjectTaskAwareReceiver : IBackendObjectReceiver { BackendObjectTaskState BackendObjectTaskState { get; } } IBackendObjectTaskAwareReceiver erweitert IBackendObjectReceiver um ein einen Fehlerzustand. Mittels der Felder von "BackendObjectTaskState" können eine Fehlermeldung, ein Wiedervorlagekommentar und ein Wiedervorlagedatum für eine fehlerhaft versandte angegeben werden. ==== Optionale Schnittstellen ==== Die nachfolgenden Schnittstellen, werden ebenfalls von den Backend-Jobsteps berücksichtigt: ==== eBiss.Api.IApplicationConsumer ==== Erlaubt dem Backend-Objekt (eingeschränkten) Zugriff auf die eBiss Datenschicht. ==== eBiss.Api.ISystemVariableConsumer ==== Erlaubt den Zugriff auf die Systemvariablen des Standard-Systempartners im aktuellen Knoten. ==== eBiss.Api.ITradingPartnerVariableConsumer ==== Kann in Kombination mit der Schnittstelle **IBackendObjectReceiver** verwendet werden, um Variablen des Handelspartners zu übergeben. Die Variablen werden in der folgenden Prioritätenfolge zugewiesen: * TradingPartner, * TemplatePartner, * Default TradingPartner und * Default Template Partner. D.h., eine Variable "VAT" bei TemplatePartner überschreibt die gleichnamige Variable "VAT" vom Default TradingPartner. ==== eBiss.Api.ILoggingObject ==== Erlaubt den Zugriff auf ein Logging-Objekt mittels dem Fehler, Warnungen und Informationen im Service- und Trace-Log ausgegeben werden können.