====== Einrichten einer Datenstrecke mit Konvertierung ====== Folgenden Schritte skizzieren das Vorgehen für das Einrichten einer Datenstrecke mit Transformierung in eBiss und zeigen welche Elemente notwendig sind und in welcher Reihenfolge vorgegangen wird. Man arbeitet sich gewissermassen von hinten nach vorne durch um alle Abhängigkeiten jeweils bereits bedienen zu können. {{:images:sign_warning.png?nolink|}}**Hinweis:** [[ueberblick:integration:integrationsszenario:start|]] und [[howtos:namingconventions|]] berücksichtigen. ===== 1. Schnittstellen Typen definieren ===== Schnittstellenobjekte vorzugsweise mit dem [[programmierung:typbibliotheken:typeditor|Type-Editor]]((Alternativ, kann dies mit geigneten IDEs für C# erzeugt werden.)) als DLL kompilieren. Datentypen gem. Schnittstellenbeschreibung muss als C#-Klasse mit entsprechenden eBiss-spezifischen Daten-Attributen versehen in als DLL kompilierter Form im Plugin Verzeichnis der eBiss Installation angelegt sein und eBiss Client und Service neu gestartet werden((siehe auch [[howtos:schattenkopie_plugins|Schattenkopie]])). {{:images:sign_warning.png?nolink|}}**Hinweis:** [[ueberblick:integration:integrationsarten|]] berücksichtigen. ===== 2. Repositorien anlegen ===== Für die neuen **INHOUSE Schnittstellenobjekte** notwendige Komponenten definieren. {{:images:sign_warning.png?nolink|}}**Hinweis:** INBOUND Entitätstyp im [[prozessdefinition:repositorien:start|Repository]] mit entsprechender [[prozessdefinition:repositorien:schreibkomponenten:start|Schreibkomponente]] und [[prozessdefinition:repositorien:kontainerisierer:start|Kontainerisierer]] definieren((Bei einer direkten Integration brauch es keine Schreibkomponenten und auch kein Kontainerisierer)).\\ {{:images:sign_warning.png?nolink|}}**Hinweis:** OUTBOUND Entitätstyp im [[prozessdefinition:repositorien:start|Repository]] mit entsprechendem [[prozessdefinition:repositorien:erkennungskomponenten:start|Erkennungs]]-, [[prozessdefinition:repositorien:analysator:start|Analyse]]- und [[prozessdefinition:repositorien:lesekomponenten:start|Lesekomponente]] definieren. Repositorien für **EDIFACT** und **MiddleWare** können aus dem Standardtemplate((..eBiss3/StandardTemplates/RepositoryDump*.xml)) Verzeichnis importiert werden. {{:images:sign_warning.png?nolink|}}**Hinweis:** Schnittstellen(Entitätstypen) die sowohl für ein- und ausgehende Kommunikation verwendet werden stellen einen Sonderfall dar! Deren Entitätstypen haben dann alle Repository-Komponenten im Einsatz. ===== 3. Mappingdefinitionen anlegen ===== Für die Transformierung von INHOUSE auf MiddleWare((ausgehende Nachrichten)) und von MiddleWare auf INHOUSE((für eingehend Nachrichten)) Schnittstellenobjekten werden neue Mappings definiert. Für die Transformierung von MiddleWare auf EDIFACT oder EDIFACT auf MiddleWare können Standardmappings aus dem Standardtemplate Verzeichnis importiert und ggfs. angepasst werden. {{:images:sign_warning.png?nolink|}}**Hinweis:** Es gibt Fälle, da bietet es sich an mit nur einer Transformierung zu arbeiten. Z.Bsp. wenn es kein entsprechendes Pendant in der MiddleWare gibt. ===== 4. Standard Template Partner definieren ===== i.d.R. werden einem zukünftigen TradingPartner ein sog. TemplatePartner zugeordnet. Dieser beinhaltet die [[partnerverwaltung:typset:start|Typsätze]], welche die Standardmappings für die ausgehenden MiddleWare auf EDIFACT und eingehenden EDIFACT auf MIddleWare zu den entprechenden Typen definiert. {{:images:sign_warning.png?nolink|}}**Hinweis:** Die [[partnerverwaltung:typset:start|Typsätze]] werden abgefragt bei: * [[prozessdefinition:jobs:jobsteps:allgemein:entityselector|]] * [[prozessdefinition:jobs:jobsteps:allgemein:entitytransformer]] * [[prozessdefinition:jobs:jobsteps:allgemein:entitymessagecreator|]] und * [[prozessdefinition:jobs:jobsteps:kommunikation:channelsender|]] ===== 5. Nachrichtenboxen definieren ===== Um Nachrichten in eBiss verarbeiten zu können müssen diese in einem [[kommunikation:nachrichtenkoerbe:start|Nachrichtenkorb]] kontainerisiert werden. i.d.R. werden zwei eingehende und zwei ausgehende Nachrichtenkörbe benötigt. z.Bsp.: * Für eingehende Nachrichten: * From.Partner((beinhaltet die original eingehenden EDIFACT Nachrichten vom Partner)) * To.Host((beinhaltet die eingehenden, auf die INHOUSE -Typen transformierten Nachrichten)) * Für ausgehende Nachrichten: * From.Host((beinhaltet die ausgehend original INHOUSE -Typen)) * To.Partner((beinhaltet die ausgehend, auf EDIFACt transformierten Nachrichten)) {{:images:sign_warning.png?nolink|}}**Hinweis:** Nachrichtenkörbe sind Voraussetzung um [[kommunikation:kanal:start|Kommunikationskanäle]] zu definieren. {{:images:sign_warning.png?nolink|}}**Hinweis:** Die Eigenschaft Korbtyp kan eingehend, ausgehend, oder keine sein. Diese Einstellung hat Auswirkung auf die Voreinstellung beim Pasten von Dateien in eine Nachrichtenbox. Diese Nachrichten werden dann entsprechend ein oder ausgehend markiert und folglich werden beim Analysieren die entsprechenden eingestellten Objekte abgefragt. Im Normalbetrieb werden Nachrichten über [[kommunikation:kanal:start#eingehende_kommunikationskanaele|Empfangskanäle]] oder [[prozessdefinition:jobs:jobsteps:kommunikation:backend:backendobjectretrieverex|]] in einem Nachrichtenkorb angelegt, dabei erhalten die Nachrichtung die Richtung welche beim Kanal eingestellt ist. ===== 6. Kommunikationsarten bzw. Kommunikationskanäle definieren ===== Kommunikationsarten zwischen eBiss und HOST-System((Auch ERP- oder WWS-System genannt.)) bzw Partner-System bestimmen und entsprechende [[kommunikation:kanal:start|Kommunikationskanäle]] definieren, bei Datenbank Integrationen werden keine Kommunikationskanäle, sondern [[prozessdefinition:jobs:jobsteps:kommunikation:backend:start|BackendObjektIntegrationen]] in den JOBs verwendet. i.d.R. werden eingehende EDIFACT Nachrichten von [[http://egate.pranke.com]] empfangen, d.h. es muss dafür ein eingehender [[kommunikation:kanal:pop3receive|]] definiert sein, welcher in den zuvor definierten Nachrichtenkorb schreibt. {{:images:sign_warning.png?nolink|}}**Hinweis:** In der Praxis werden an dieser Stelle Acronyme wie **EDI, B2B, A2A, MFT, B2C** angewendet um die Zusammenhänge auf abstrakter Ebene zu kennzeichnen. Im Wesentlichen muss hier aber konkret ermittelt werden auf welche technische Art eine Übertragung von Daten zwischen den Systemen erfolgen soll. Die Auswahl ist groß, entscheidend sind Sicherheit und Zuverlässigkeit der gewählten Verfahren. Im Prinzip kann eBiss alle Szenarien abbilden. ===== 7. Prozesse definieren ===== {{:images:sign_warning.png?nolink|}}**Hinweis:** Die folgenden Jobdefinitionen repräsentieren ein Standard Integrationsfall. Diese Prozesse können mit verschiedenen Jobobjekten angereichert werden um z.Bsp. [[howtos:businesslogic|Business Logik]] abzubilden. - **einen ersten Job zum Öffnen eines Empfangsskanals oder BackendObjectRetreiver, der dann an den nächsten Dispatcher delegiert, bestehend aus:** - [[:prozessdefinition:jobs:jobsteps:kommunikation:channelreceiver|eBiss.ClassLib.ChannelReceiver]] oder [[prozessdefinition:jobs:jobsteps:kommunikation:backend:backendobjectretrieverex|eBiss.DbAdapter.BackendObjectRetrieverEx]]((Bei einer Direktintegration z.Bsp. mit einer Datenbank.)) - [[prozessdefinition:jobs:jobsteps:allgemein:delegatorjob|eBiss.ClassLib.DelegatorJob]]((Dieser zeigt auf den Job Nr. 2)) - [[prozessdefinition:jobs:jobsteps:allgemein:tasknotificatorex|eBiss.ClassLib.TaskNotificatorEx]] - **einen zweiten Job zum Analysieren, Selektieren, Transformieren und Kontainerisieren((in eine vorhandene Nachrichtenbox)) oder Übertragen((mit BackendObjectTransmitter in eine bestehende direkt-Integration)) bestehend aus:** - [[prozessdefinition:jobs:jobsteps:allgemein:jobexecutioncontroller|eBiss.ClassLib.JobExecutionController]](optional)((Dies kann in komülexen Systemen mit vielen verschiedenen, parallel laufenden Prozessen notwendig werden.)) - [[prozessdefinition:jobs:jobsteps:allgemein:entityanalyzer|eBiss.ClassLib.EntityAnalyzer]] - [[prozessdefinition:jobs:jobsteps:allgemein:entityselector|eBiss.ClassLib.EntitySelector]]((dieser Zweig wird für alle ein- bzw. ausgehenden Nachrichtentypen innerhalb eines Jobs wiederholt und entsprechend parametriesiert.)) - [[prozessdefinition:jobs:jobsteps:allgemein:entityloader|eBiss.ClassLib.Jobs.EntityLoader]] - [[prozessdefinition:jobs:jobsteps:allgemein:entitytransformer|eBiss.ClassLib.Jobs.EntityTransformer]] oder bei Bedarf [[prozessdefinition:jobs:jobsteps:allgemein:multientitytransformer|eBiss.ClassLib.Jobs.MultiEntityTransformer]] - [[prozessdefinition:jobs:jobsteps:allgemein:entitytransformer|eBiss.ClassLib.Jobs.EntityTransformer]]((Bei zweistufiger Transformation via eBiss MiddleWare.)) - [[prozessdefinition:jobs:jobsteps:allgemein:entitymessagecreator|eBiss.ClassLib.Jobs.EntityMessageCreator]] oder [[prozessdefinition:jobs:jobsteps:kommunikation:backend:backendobjecttransmitterex|eBiss.DbAdapter.BackendObjectTransmitterEx]]((mit BackendObjectTransmitter in eine bestehende direkt-Integration)) - [[prozessdefinition:jobs:jobsteps:allgemein:entitystatussetter|eBiss.ClassLib.Jobs.EntityStateSetter]] - [[prozessdefinition:jobs:jobsteps:allgemein:delegatorjob|eBiss.ClassLib.DelegatorJob]]((Dieser zeigt auf den Job Nr. 3)) - **einen dritten Job zum öffenen eines Sendkanals bestehend aus:** - [[prozessdefinition:jobs:jobsteps:kommunikation:channelsender|eBiss.ClassLib.ChannelSender]]((Falls nicht mit [[prozessdefinition:jobs:jobsteps:kommunikation:backend:backendobjecttransmitterex|eBiss.DbAdapter.BackendObjectTransmitterEx]] bereits übertragen wurde.)) {{:images:sign_warning.png?nolink|}}**Hinweis:** Siehe auch [[ueberblick:start#typischer_prozess|Typischer Prozess]]. ===== 8. Automatisierung ===== Die [[:prozessdefinition:automatisierungen:automatisierungen|]] werden zuletzt vorgenommen um die zuvor definierten und manuell getesteten Prozesse zu automatisieren. I.d.R. genügt es den jeweils ersten Job in einer Verarbeitungskette anzutriggeren, da die folgenden Jobs mittles [[prozessdefinition:jobs:jobsteps:allgemein:delegatorjob|Delegatoren]] oder [[prozessdefinition:jobs:jobsteps:allgemein:eventrouter|EventRouter]] und [[prozessdefinition:jobs:jobsteps:allgemein:eventroutereceiver|]] verkettet werden.