13.07.2015 Aufrufe

B2B by Practice Schulungsunterlagen - Next Level Help

B2B by Practice Schulungsunterlagen - Next Level Help

B2B by Practice Schulungsunterlagen - Next Level Help

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>B2B</strong> <strong>by</strong> <strong>Practice</strong> <strong>Schulungsunterlagen</strong>Übergreifende ThemenErstellt von: <strong>Next</strong> <strong>Level</strong> IntegrationVerteiler: KundenVersion: 1.0Datum: 09.11.2011Dokumentation Seite 1 von 80


InhaltsverzeichnisInhaltsverzeichnis ......................................................................................................................................... 21 Überblick ............................................................................................................................................... 62 Grundsätzliches .................................................................................................................................... 62.1 Umgebungsvariablen unter Windows einrichten ........................................................................ 63 Vorbereitung......................................................................................................................................... 74 Installation ............................................................................................................................................ 84.1 Ordnerstruktur anlegen und Dependencies installieren .............................................................. 84.2 Datenbankverbindung mit DbVisualizer einrichten ..................................................................... 84.3 Umgebungsvariablen konfigurieren ............................................................................................. 94.4 Tomcat anpassen .......................................................................................................................... 94.4.1 Anpassung der Tomcat Konfigurationsdatei server.xml .................................................... 124.5 Deployment und Konfiguration von <strong>B2B</strong> .................................................................................... 124.5.1 Automatischen Redirect einrichten .................................................................................... 134.5.2 Installation der Datenbank Treiber .................................................................................... 134.5.3 Datenbanktabellen erstellen .............................................................................................. 144.5.4 <strong>B2B</strong> Admin anlegen ............................................................................................................ 144.6 <strong>B2B</strong> Installation testen................................................................................................................ 144.7 Weitere Tomcat Cluster Nodes einrichten ................................................................................. 155 Redeployment von <strong>B2B</strong> ...................................................................................................................... 156 Übersicht über die Datenbanktabellen .............................................................................................. 167 Benutzer und Rollenkonzept der <strong>B2B</strong>BP ............................................................................................ 21Dokumentation Seite 2 von 80


7.1 Attribute ..................................................................................................................................... 227.2 Rollen .......................................................................................................................................... 237.3 Zuordnung zum User .................................................................................................................. 247.4 Allowed Systems ......................................................................................................................... 257.4.1 Anlegen eines „Allowed Systems“-Eintrages ...................................................................... 257.4.2 Beispiel ................................................................................................................................ 267.5 Overrides .................................................................................................................................... 267.5.1 Einfügen eines neuen (Modul-)Buttons in der Menüleiste ................................................ 267.5.2 Wichtige Overrides ............................................................................................................. 287.6 Übungsaufgaben ......................................................................................................................... 298 Channels ............................................................................................................................................. 308.1 Einordnung in den <strong>B2B</strong>-Workflow .............................................................................................. 308.2 Konfiguration eines Channels ..................................................................................................... 308.2.1 Neuen Channel anlegen ..................................................................................................... 318.2.2 Editieren der Actions in einem Channels............................................................................ 329 Actions ................................................................................................................................................ 349.1 Neue Action anlegen .................................................................................................................. 3510 Services ........................................................................................................................................... 3810.1 Besondere Eigenschaften der einzelnen Service-Typen ............................................................. 4110.1.1 Scheduler ............................................................................................................................ 4110.1.2 Passive Services .................................................................................................................. 4310.1.3 Aktive Services .................................................................................................................... 43Dokumentation Seite 3 von 80


11 Zusammenspiel zwischen Actions und Services ............................................................................. 4412 Dynamische Funktionen ................................................................................................................. 4612.1.1 VAR ..................................................................................................................................... 4612.1.2 TEMPLATE ........................................................................................................................... 4712.1.3 LOADEXTENSION ................................................................................................................ 4812.1.4 LOADEXTENSIONPROPERTY ................................................................................................ 4912.1.5 DATE ................................................................................................................................... 5012.1.6 GETMPIDMAIL .................................................................................................................... 5012.1.7 GETMPIDNAME................................................................................................................... 5112.1.8 GETUSEDSERVICES .............................................................................................................. 5213 Channeldistribution ....................................................................................................................... 5313.1 Einordnung im <strong>B2B</strong>BB-Workflow ................................................................................................ 5313.2 Konfiguration .............................................................................................................................. 5313.2.1 EXT_CHANNEL_DIST ........................................................................................................... 5313.2.2 GENERIC_MAP .................................................................................................................... 5813.2.3 Zusammenspiel GENERIC_MAP und EXT_CHANNEL_DIST ................................................. 6114 Content in <strong>B2B</strong> <strong>by</strong> <strong>Practice</strong> ............................................................................................................. 6214.1 Content Typen ............................................................................................................................ 6214.1.1 NLC Content ........................................................................................................................ 6214.1.2 XSLT Transformation........................................................................................................... 6214.2 Content einspielen...................................................................................................................... 6214.3 Content wird geladen ................................................................................................................. 65Dokumentation Seite 4 von 80


15 Fehlerbehandlung ........................................................................................................................... 6715.1 Kontrolle überfällige CONTRLs ................................................................................................... 6815.2 Kontrolle eingehender negativer CONTRLs ................................................................................ 6915.3 Kontrolle eingehender APERAKs ................................................................................................ 7315.4 Fehleranalyse – Wo finde ich Informationen ............................................................................. 7715.4.1 Formatfehler ....................................................................................................................... 7715.4.2 IT-Fehler / Error Log ............................................................................................................ 7715.4.3 Related Messages ............................................................................................................... 7815.4.4 Systemfehler ....................................................................................................................... 79Dokumentation Seite 5 von 80


1 ÜberblickDieses Dokument beschreibt die Installation und das Customizing der <strong>B2B</strong> <strong>by</strong> <strong>Practice</strong> Plattform sowiealler benötigten Abhängigkeiten und praktischen Werkzeugen.2 GrundsätzlichesSlash (‚/‘) und Backslash (‚\‘) dürfen nicht vertauscht werden. Unter Windows muss in allenPfaden, die als Einstellung in <strong>B2B</strong> eingetragen werden der Slash als Verzeichnistrenner genutztwerden.<strong>B2B</strong> und alle zugehörigen Programme werden in dieser Anleitung beispielhaft unter C:\<strong>B2B</strong>abgelegt. Es kann natürlich auch jeder andere Pfad genutzt werden. Alle Pfadangaben aus dieserAnleitung müssen dann entsprechend angepasst werden.Die meisten Inhalte von Konfigurationsdateien sind zum einfachen Kopieren in der DateiSnippets.txt nochmal hinterlegt.2.1 Umgebungsvariablen unter Windows einrichten1. Rechte Maustaste auf Computer oder Arbeitsplatz (Siehe Bild 1 Punkt 1) Eigenschaften2. Erweiterte Systemeinstellungen wählen (Siehe Bild 1 Punkt 2)3. Unter der Registerkarte „Erweitert“ den Button „Umgebungsvariablen“ anklicken (Siehe Bild 1Punkt 3)4. Nun werden alle Umgebungsvariablen aufgelistet. Entsprechende Variable kann nun ausgewähltund bearbeitet oder hinzugefügt werden (Siehe Bild 2)Dokumentation Seite 6 von 80


Bild 1Bild23 VorbereitungEmpfohlene Anforderungen: 10GB Festplattenspeicher, 4GB RAM, Windows mit aktuellenPatchesEmailserver mit POP3 und SMTP einrichten. Emailadresse einrichten (Username/Passwortbereithalten)DB einrichten. Datenbankname, Username/Password sowie Datenbanktreiber (für Java)bereithalten. Bei Oracle ab 11g mit Thin, bei älteren Oracle Versionen mit OCI Treiber, dannmüssen zusätzliche betriebsystemabhängige Treiberkomponenten installiert werden.http://www.oracle.com/technetwork/database/features/instant-client BASIC--> OCINeueste Flashversion installieren (Download URL: http://get.adobe.com/de/flashplayer/)Nützliche Tools, die installiert sein sollten: PDF-Reader, Texteditor, 7zipDokumentation Seite 7 von 80


4 Installation4.1 Ordnerstruktur anlegen und Dependencies installieren1. Ordner C:\<strong>B2B</strong> anlegen: hier werden alle Dateien von <strong>B2B</strong> und dessen Abhängigkeiten abgelegt.2. Verzeichnis C:\<strong>B2B</strong>\tomcat_all anlegen: dieses Verzeichnis wird von allen Tomcat Instanzengenutzt3. Verzeichnis C:\<strong>B2B</strong>\tomcat_all\index\full anlegen: hier werden die Suchindizes gespeichert.Dieser Pfad wird beim Customizing in das Property B3P_SEARCH_INDEX_DIRECTORYeingetragen.4. Verzeichnis C:\<strong>B2B</strong>\tomcat_all\logs anlegen: hier werden die <strong>B2B</strong> Logdateien gespeichert.Dieser Pfad wird beim Customizing in das Property B3P_LOG4J_BASE_DIR eingetragen.5. Ordner C:\<strong>B2B</strong>\jdk anlegen und JDK 6 dorthin installieren. JDK 6 kann vonhttp://www.oracle.com/technetwork/java/javase/downloads/jdk-6u29-download-513648.htmlheruntergeladen werden.6. JCE Policy überschreiben: Beide JAR Dateien aus jce_policy-6.zip nachC:\<strong>B2B</strong>\jdk\jre\lib\security kopieren. (Die bereits vorhandenen Dateien ersetzen) jce_policy-6.zip kann unter http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html heruntergeladen werden.7. Ordner C:\<strong>B2B</strong>\support anlegen und DbVisualizer dorthin installieren und mit entsprechenderLizenz freischalten (Die 21 Tage Testversion reicht. Download:http://www.dbvis.com/products/dbvis/download/. Die Lizenz bekommt man auf der gleichenSeite unter „Evaluation license for DbVisualizer Personal“ )8. Für Oracle Datenbanken müssen zusätzlich die Oracle Treiber nachC:\<strong>B2B</strong>\support\DBVisualizer-x.x.x\jdbc\oracle kopieren (der Ordner oracle muss angelegtwerden). x.x.x muss mit der jeweiligen Versionsnummer des DbVisualizer ersetzt werden.9. Tomcat nach C:\<strong>B2B</strong>\tomcat1 entpacken (64 Bit Version braucht nicht mehr ersetzt zu werden).Tomcat kann unter http://tomcat.apache.org/download-60.cgi heruntergeladen werden. Jenach Plattform wird „32-bit Windows zip” oder „64-bit Windows zip“ benötigt.4.2 Datenbankverbindung mit DbVisualizer einrichtenDbVisualizer starten und eine neue Datenbankverbindung mit dem Wizard einrichten. DenVerbindungsnamen kann man beliebig wählen.Im 2. Schritt bei der Treiberauswahl wird der entsprechende Treiber gewählt. Wenn kein grüner Hakenneben dem gewählten Treiber steht, so muss die Treiberdatei (JAR Datei) über „Load Driver File(s)“angegeben werden. Hier kann der unter Punkt 8 kopierte Treiber genutzt werden.Dokumentation Seite 8 von 80


Im 3. Schritt werden nun noch die Zugangsdaten abgefragt (Datenbankname, Benutzername undPasswort)4.3 Umgebungsvariablen konfigurieren1. Umgebungsvariable $JAVA_HOME auf C:\<strong>B2B</strong>\jdk setzen (Siehe Bild 2 unter„Umgebungsvariablen einrichten“)2. Umgebungsvariable $PATH anpassen: Hinzufügen von Verzeichnis C:\<strong>B2B</strong>\jdk\bin (Siehe Bild 3)Bild 3:4.4 Tomcat anpassen1. Im Verzeichnis C:\<strong>B2B</strong>\tomcat1 die Datei tomcat6.exe nach tomcat1.exe umbenennen2. Im gleichen Verzeichnis tomcat6w.exe nach tomcat1w.exe umbenennen3. C:\<strong>B2B</strong>\tomcat1\bin\service.bat editieren: überall tomcat6 durch tomcat1 ersetzen4. Command Prompt in C:\<strong>B2B</strong>\tomcat1\bin öffnen und service install als Adminstrator ausführen tomcat service ist installiert (service remove fürs löschen ausführen)Bei Problemen mit service install sollte man prüfen, ob alle Windows Patches eingespielt sind(http://www.microsoft.com/downloads/en/details.aspx?familyid=766a6af7-ec73-40ff-b072-9112bab119c2&displaylang=en Microsoft Knowlege Base kb973544) und $JAVA_HOME gesetzt ist.Wichtig ist auch, dass der Befehl als Administrator ausgeführt wirdDokumentation Seite 9 von 80


Nun die graphische Oberfläche C:\<strong>B2B</strong>\tomcat\bin\tomcat1w.exe als Adminstrator aufrufen. Diesedient dem Administrieren und Parametrisieren des Tomcats.Java Options:-Dfile.encoding=ISO-8859-1-XX:MaxPermSize=128m-XX:PermSize=64mOPTIONAL (nur wenn DebugMode)-Xdebug-Xrunjdwp:transport=dt_socket,address=1091,server=y,suspend=nHier werden nun verschiedene Einstellungenvorgenommen.Dokumentation Seite 10 von 80


Im Reiter „Java“ werden die oben unter „Java Options“ angegebenen Optionen eingetragen. Wennbereits Optionen vorhanden sind, können die neuen Optionen unten angehängt werden. Die MemoryPool Einstellungen sollten angepasst werden. Bei „Maximum memory pool“ sollte man mindestens 1024MB vergeben. In der Option –Xrunjdwp wird der Debug-Port unter address eingetragen (Im obigen Beispiel1091).In den Reitern „Startup“ und „Shutdown“ wird „Working Path“ auf C:\<strong>B2B</strong>\tomcat1 gesetzt.Im Reiter „Logging“ sollte der Loglevel auf Error gesetzt werden um die Anzahl der Logeinträge zuverringern.Nun kann man testen, ob Tomcat läuft: in tomcat1w.exe (unter General) auf Start klicken und mit einemBrowser auf http://localhost:8080 gehen. Es muss folgende Tomcat Startseite erscheinen:Wenn diese Seite erscheint kann man Tomcat wieder Stoppen (im Reiter „General“ auf „Stop“ klicken).Dokumentation Seite 11 von 80


4.4.1 Anpassung der Tomcat Konfigurationsdatei server.xmlDie Datei C:\<strong>B2B</strong>\tomcat1\conf\server.xml in einem Editor öffnen. Um die Datei übersichtlicher zugestalten können alle Kommentare entfernt werden. Hier werden die verwendeten Ports konfiguriert,die Benutzerdatenbank eingerichtet (hier wird die Datenbank von <strong>B2B</strong> verwendet) und das HotDeployment deaktiviert.Schritt 1: Server Port (für Shutdown) Schritt 2: „Browser Port“ Schritt 3: Reverse Proxy PortSchritt 4: Um die Benutzerdatenbank von <strong>B2B</strong> zu nutzen müssen diese Zeilen auskommentiert und dafürdiese Zeilen eingefügt werden.Schritt 5: Hot Deployment deaktivieren4.5 Deployment und Konfiguration von <strong>B2B</strong>Die Datei b2bbp-engine.war nach C:\<strong>B2B</strong>\tomcat1\webapps kopieren. Danach Tomcat starten. Nunwird die Datei C:\<strong>B2B</strong>\tomcat1\conf\Catalina\localhost\b2bbp-engine.xml erstellt. Diese Datei mussjedoch noch angepasst werden. Am wichtigsten sind username und password. Hier werden die LogindatenDokumentation Seite 12 von 80


des Datenbankbenutzers eingetragen. Jedoch sollten auch die Attribute driverClassName und url stimmen,welche die Treiberklasse und die Datenbank URL (inklusive Datenbankname) angeben.Beispiel:In der Datei C:\<strong>B2B</strong>\tomcat1\conf\Catalina\localhost\manager.xml muss die gleiche Resource-Definition angegeben werden.4.5.1 Automatischen Redirect einrichtenDie Dateien index.html und favicon.ico nach C:\<strong>B2B</strong>\tomcat1\webapps\ROOT kopieren. VorhandeneDateien können ersetzt werden.4.5.2 Installation der Datenbank TreiberAls nächstes werden die Datenbanktreiber (z.b. ojdbc6.jar für Oracle) nach C:\<strong>B2B</strong>\tomcat1\lib kopiert.Bibliothen mit Betriebsystemabhängigkeit: z.B. JCO und Oracle < 11gOrdner C:\<strong>B2B</strong>\tomcat_all\os_libs anlegen und JCO- sowie Treiberdateien dorthin kopieren. (Jar Filesund DLLs)Ordner in $PATH aufnehmenClasspath anpassen (da DLL- und JAR-Dateien im gleichen Ordner liegen müssen) übertomcat1w.exe Java Classpath dort die JAR-Datei angeben.Dokumentation Seite 13 von 80


4.5.3 Datenbanktabellen erstellenNun werden die DB Skripte ausgeführt (das passende Skript für die jeweilige DB nehmen): db.sql undindex.sql. Je nach Datenbank kann es auch nur eine Datei sein (z.B. Der<strong>by</strong>.txt )Mit installiertem und freigeschaltetem DBVisualizer kann man direkt auf die SQL-Dateien doppeltklicken. Daraufhin öffnet sich der SQL Commander des DBVisualizer und lädt die Datei. Mit einem Klickauf den grünen Pfeil werden die Datenbanktabellen erstellt.4.5.4 <strong>B2B</strong> Admin anlegenUm den <strong>B2B</strong> Admin anzulegen, wird das Skript b2b-admin.sql (wie bei „Datenbanktabellen erstellen“)ausgeführt. Dieses legt den Benutzer admin mit dem Password b2bbp an. Zusätzlich wird die Rolle adminsinklusive eines Berechtigungsobjekts zum Aktivieren des Customizing Uploade Mechanismuseingerichtet. Schließlich werden dem Benutzer admin die Rollen b2bbp und admins zugewiesen.insert into <strong>B2B</strong>BP_ADM_ACCOUNT (USERID, PASSWORD, FIRSTNAME, LASTNAME, EMAIL, ORGANIZATION) values ('admin','606794e89a8579355e36d8ff52b6f26d', 'b2b', 'admin', null, null);insert into <strong>B2B</strong>BP_ADM_ROLE_ATTRIBUTE (ROLEATTRIBUTEID, ROLEATTRIBUTEVALUE) values ('uploadCustomizing','Override={view=GlobalPropertyPanelView,type=SetProperty,target=customizingTransfer,name=visible,value=true}');insert into <strong>B2B</strong>BP_ADM_ROLE (ROLEID, ROLEATTRIBUTEID, DESCRIPTION) values ('admins', 'uploadCustomizing', null);insert into <strong>B2B</strong>BP_ADM_USER (USERID, ROLEID, DESCRIPTION) values ('admin', 'admins', null);insert into <strong>B2B</strong>BP_ADM_USER (USERID, ROLEID, DESCRIPTION) values ('admin', 'b2bbp', null);4.6 <strong>B2B</strong> Installation testenC:\<strong>B2B</strong>\tomcat1\bin\tomcat1w.exe starten und unter dem Reiter „General“ auf Start klicken. ImBrowser auf http://localhost:9080 navigieren. Nun sollte sich ein Login-Fenster öffnen. Username istDokumentation Seite 14 von 80


admin und das Password ist b2bbp. Nach dem anmelden werden ein paar Fehler gemeldet, da nochExtensions fehlen. Dies ist nicht weiter schlimm und wird während des Customizing angepasst.4.7 Weitere Tomcat Cluster Nodes einrichten• C:\b2b\tomcat1 nach C:\b2b\tomcatx kopieren• C:\b2b\tomcatx\conf\server.xml Ports anpassen• C:\b2b\tomcatx\bin\tomcat1[w].exe nach C:\b2b\tomcatx\bin\tomcatx[w].exe umbenennen• C:\b2b\tomcatx\bin\service.bat tomcat1 überall durch tomcatx ersetzen• CMD in C:\b2b\tomcatx\bin öffnen und service install aufrufen• C:\b2b\tomcatx\bin\tomcatxw.exe aufrufen und Parameter analog tomcat1 anpassen• Optional: andere DB anbinden– DB Parameter anpassen in C:\<strong>B2B</strong>\tomcatx\conf\Catalina\localhost\b2bbp-engine.xml5 Redeployment von <strong>B2B</strong>oderTomcat StoppenKomplettes <strong>B2B</strong> Redeployment: kopieren der b2bbp-engine.war nachC:\<strong>B2B</strong>\tomcat1\webapps und löschen des Ordners C:\<strong>B2B</strong>\tomcat1\webapps\b2bbp-engine.Danach tomcat startenRedeployment einer JAR-Datei (ein Teil von <strong>B2B</strong>): kopieren der JAR-Datei nachC:\<strong>B2B</strong>\tomcat1\webapps\b2bbp-engine\WEB-INF\libIn beiden Fällen danach Tomcat neu starten.Dokumentation Seite 15 von 80


6 Übersicht über die DatenbanktabellenDokumentation Seite 16 von 80


Hier sind die Bewegungsdaten gespeichert. Löschen der <strong>B2B</strong>BP_DATA_MESSAGE Tabelle führt zumLöschen der abhängigen TabellenIn der Action Registry werden die Actions gespeichert. In der Action_Property_Mon Tabelle werden dieDetails verwendet. Die Channel Tabellen referenziert auf die Action RegistryDokumentation Seite 17 von 80


Hier werden die Servcies gespeichert<strong>B2B</strong>BP_ADM_ACCOUNT• Hier sind die User/Passwortinformationen für DB basierte Benutzerverwaltung gespeichert<strong>B2B</strong>BP_ADM_ACTION_PROPERTY• Wird nicht benutzt<strong>B2B</strong>BP_ADM_ACTION_REPOSITORY• Wird nicht benutzt<strong>B2B</strong>BP_ADM_CHANNEL• Channels<strong>B2B</strong>BP_ADM_CONTENT• Content<strong>B2B</strong>BP_ADM_EXTENSION• Extensions<strong>B2B</strong>BP_ADM_GLOBAL_PROPERTY• Global Properties<strong>B2B</strong>BP_ADM_QUEUE• Queue Tabelle<strong>B2B</strong>BP_ADM_ROLEDokumentation Seite 18 von 80


• Rollen<strong>B2B</strong>BP_ADM_ROLE_ATTRIBUTE• Berechtigungsobjekte<strong>B2B</strong>BP_ADM_USER• Zuordnung von Usern zu Rollen<strong>B2B</strong>BP_ANALYTICS_MEMORY• Für den Support<strong>B2B</strong>BP_ANALYTICS_THREAD• Für den Support<strong>B2B</strong>BP_CCM_SCHEDULED_RESULT• CCM<strong>B2B</strong>BP_DATA_CLEARING• Clearing Status Details<strong>B2B</strong>BP_DATA_CLEARING2• Clearing Status Details CCM<strong>B2B</strong>BP_DATA_SYSTEM_ERROR• Systemfehler<strong>B2B</strong>BP_DATA_INBOX• CCM<strong>B2B</strong>BP_DATA_LOCKTAB• Sperrtabelle<strong>B2B</strong>BP_DATA_MAIL_MONITORDokumentation Seite 19 von 80


• CCM<strong>B2B</strong>BP_INDEX_SYNC• INDEXB3P_ADM_SYSTEMMESSAGEHISTORY• SystemnachrichtenB3P_ADM_SYSTEMMESSAGES• SystemnachrichtenB3P_DATA_STATES_HISTORY• SystemnachrichtenDokumentation Seite 20 von 80


7 Benutzer und Rollenkonzept der <strong>B2B</strong>BPDas Benutzer- und Rollenkonzept der <strong>B2B</strong>BP ermöglicht es jedem User individuelle Zugriffsrechte auf dieOberfläche zuzuweisen. Typischerweise können folgende Rechte konfiguriert werdenZugriff aus zusätzliche ModuleZugriff auf AdministrationsbereicheEin- oder Ausblenden zusätzlicher Funktionalitäten (Buttons, Eingabefelder etc.)Einschränkung der Monitorsuche auf bestimmte BDEW/ILN-NummernDas Benutzer und Rollenkonzept baut auf 3 wesentlichen Komponenten auf: User, Rolle, Attribute. ZumEin- oder Ausblenden wird die <strong>B2B</strong>-Overridetechnik verwendet. Den Konfigurationsbereich zurBenutzer- und Rollenverwaltung findet man in Menü unter „Benutzer und Rollen“.Dokumentation Seite 21 von 80


7.1 AttributeAttribute repräsentieren eine einzelne Eigenschaft in der <strong>B2B</strong>-Oberfläche, wie z.B. ein zusätzlichesModul in der Menüleiste, oder ein zusätzlich eingeblendeter Button. Ein Attribut kann als Berechtigungangesehen werden. Attribute werden in der „Benutzer- und Rollen“-Oberfläche unter dem Reiter„Attribute“ angelegt.Jedes Attribut besteht aus folgenden Komponenten:Attribut ID: Eindeutige ID des Attributs. Attribut IDs können nicht mehrfach vergeben werden.Wert: Hier wird typischerweise eine Override- (s. 7.5) oder ein AllowedSystem-System-Eintrag(s. 7.4) 7.4hinterlegtDokumentation Seite 22 von 80


7.2 RollenEine Rolle besteht aus einem oder mehreren Attributen und bündelt diese zu einem „Paket“. Eine Rolleist somit eine Aggregation von verschiedenen Rechten. Rollen werden in der „Benutzer- und Rollen“-Oberfläche unter dem Reiter „Rollen“ angelegt.Jede Rolle besteht aus folgenden Komponenten:Rollen ID: ID der Rolle. Pro Eintrag wird der Rolle ein (weiteres) Attribut zugeordnet (jedochkeines mehrfach). Zu einer Rolle dürfen mehrere (verschiedene Attribute zugeordnet werden.Alle bereits vorhandenen Rollen IDs werden in der Auswahlliste angezeigt. Neue Rollen könnennach Bedarf angelegt werden.Attribute ID: ID des Attributes, das der Rolle zugeordnet werden soll. Die bereits vorhandenenAttribute IDs werden in der Auswahlliste angezeigt.Beschreibung: Hier kann eine Beschreibung der zugeordneten Eigenschaft(en) hinterlegtwerden.Dokumentation Seite 23 von 80


7.3 Zuordnung zum UserJedem User können beliebig viele Rollen zugeordnet werden, wobei jede Rolle wiederum aus beliebigvielen Attributen besteht. Oftmals verwendete Attributgruppierung sollten in einer Rolle gebündeltwerden um die Zuordnung zum User zu erleichtern.UserUser 1 Rolle 1 AttributenmUser werden in der „Benutzer- und Rollen“-Oberfläche unter dem Reiter „Rollenzuordnung“ zugeordnet.Jedem User (Benutzer ID) können beliebig viele Rollen zugeordnet werden. Mit der Zuordnung erhältder User alle Rechte, die hinter einer Rolle hinterlegt sind.Eine Berechtigung (Attribute) wird erst dann aktiv, wenn eine Rolle, die dieses Attribute enthält,einem User zugeordnet ist. Nach der Zuordnung muss die Oberfläche neu geladen werden.Dokumentation Seite 24 von 80


Eine Rollenzuordnung besteht aus folgenden Komponenten:Benutzer ID: ID des Benutzers. Entspricht dem Anmeldename des Users an der <strong>B2B</strong>BP.Rollen ID: ID der Rolle die dem Benutzer zugeordnet werden soll. Alle bestehendenRollen werden in der Vorauswahl aufgelistet.Beschreibung: Hier kann zur Beschreibung des Users ein zusätzlicher Text hinterlegtwerden.7.4 Allowed SystemsÜber das Attribute „Allowed Systems“ kann die Sicht des Users im Monitor auf bestimmte Systemeeingeschränkt werden. Der User hat nur die Möglichkeit nach Nachrichten zu den hier hinterlegtenBDEW/ILN-Nummern zu suchen. Ist einem User dieses Attribut nicht zugeordnet hat eruneingeschränkte Rechte.7.4.1 Anlegen eines „Allowed Systems“-EintragesDer „Allowed Systems“-Eintrag wird im Attributbereich angelegt. Die Attribut ID kann beliebig vergebenwerden. Der Attribut-Wert ist wie folgt aufgebaut:Immer vorangestellt steht das Schlüsselwort „Systems=“. Hinter dem Gleichheitszeichen wird einekommaseparierte Liste mit ILN/BDEW-Nummern angeben, die im Monitor freigegeben sein sollen.Attribut IDWertSystems=Dokumentation Seite 25 von 80


7.4.2 BeispielAttribut IDAllowedSystems<strong>B2B</strong>WertAllowedSystems=990039900XXXX,990414700XXXX,990371600XXXXDieses Attribut muss einer Rolle zugewiesen werden und die Rolle einem User. Dieser User hat dann nurdie Möglichkeit Nachrichten der Systeme 990039900XXXX,990414700XXXX und 990371600XXXX zusehen.7.5 OverridesDie <strong>B2B</strong>-Overridetechnik ermöglicht es an etlichen Stellen in der Oberfläche Komponenten (z.B. Buttons)hinzuzufügen, ein- oder auszublenden. Da diese Technik sehr komplex ist und zum vollen Verständnistiefere Kenntnisse der Flex-Programmierung vorrausetzt, kann hier nicht auf den vollen Umfangeingegangen werden. Die relevanten Overrides werden Ihnen bei Bedarf von NLI zur Verfügung gestellt.In diesem Abschnitt wird lediglich ein prominentes Beispiel diskutiert:7.5.1 Einfügen eines neuen (Modul-)Buttons in der MenüleisteHier am Beispiel des Buttons für den Manuellen Versand.Zum Aktivieren des Manuellen Versandes muss folgendes Attributes angelegt, und einem Userzugeordnet werden:Attribut IDModule_VersandWertOverride={view=mainView,type=AddChild,target=toolBarBox,name=org.b2bbp.ui.uicomponent.MainNavLinkButton,value=[id:'Upload';label:'ManuellerVersand';isExtension:'false';type:'mods/ExchangeView.swf';provider:'nextlevel.com';version:'1.0';container:'applicationViewStack';toolTip:'ManuellerVersand';width:'180';labelPlacement:'right';textAlign:'left';horizontalGap:'10';paddingLeft:'5';paddingRight:'5';iconURL:'images/famfamfam-icons/resultset_next.png']}Nach Zuordnung sieht der User folgenden Button in der Menüleiste.Dokumentation Seite 26 von 80


Zum tieferen Verständnis diskutieren wir die einzelnen Teile des Overrides. Zur besseren Demonstrationstellen wir den Override formatiert dar:Override={view=mainView,Schlüsselwort, der den Beginn eines Overrides definiertStandardwerte für Modulbuttons (nicht ändern)type=AddChild,target=toolBarBox,name=org.b2bbp.ui.uicomponent.MainNavLinkButton,value=[id:'Upload';label:'Manueller Versand';isExtension:'true';type:’ExchangeView.swf';provider:'nextlevel.com';version:'1.0';container:'applicationViewStack';Start der genaueren Definition des ButtonsEindeutige ID des neuen ButtonsAnzeigename in der MenüleisteStandardwert für Modulbuttons (nicht ändern)Referenz auf das Modul, das bei Klick auf den Button geladenwerden soll. Das Modul (.swf) muss in den Extensions unter denhier angegebenen Werten hinterlegt sein (Type, Provider,Version)Standardwerte für Formatierung des Buttons (nicht ändern)toolTip:'ManuellerVersand';width:'180';labelPlacement:'right';textAlign:'left';horizontalGap:'10';paddingLeft:'5';paddingRight:'5';iconURL:'images/famfamfam-icons/resultset_next.png'Link auf das Bild, das in der Menüleiste angezeigt werden soll(im <strong>B2B</strong>-Deployment enthalten).] Ende der genaueren Buttondefinition} Ende des OverridesDokumentation Seite 27 von 80


7.5.2 Wichtige OverridesOverrideOverride={view=GlobalPropertyPanelView,type=SetProperty,target=customizingTransfer,name=visible,value=true}Override={view=monitoringFilterView,type=SetProperty,target=sysNrComboBox,name=editable,value=false}Override={view=administrationView,type=RemoveChild,target=ChannelPanelView}Override={view=administrationView,type=RemoveChild,target=ContentUploadPanelView}Override={view=administrationView,type=RemoveChild,target=ExtensionUploadPanelView}Override={view=administrationView,type=RemoveChild,target=ServicePanelView}Override={view=administrationView,type=RemoveChild,target=ActionRegistryPanel}Override={view=mainView,type=RemoveChild,target=administrationViewLinkButton}Override={view=mainView,type=RemoveChild,target=queueMonitoringViewLinkButton}Override={view=mainView,type=RemoveChild,target=systemErrorsViewLinkButton}Override={view=monitoringView,type=RemoveChild,target=restartMessageButton}FunktionAktiviert die Customizing-Import-/Exportbuttons imGlobal Property BereichDeaktivieren des Suchfeldes “System” im MonitorBlendet den Channelreiter imAdministrationsbereich aus.Blendet den Contentreiter imAdministrationsbereich aus.Blendet den Extensionreiter imAdministrationsbereich aus.Blendet den Servicereiter im Administrationsbereichaus.Blendet den Actionreiter im Administrationsbereichaus.Blendet den Button zum Administrationsbereich inder Menüleiste ausBlendet den Button zum QueueMonitor in derMenüleiste ausBlendet den Button zu den Systemfehlern ausBlendet den Restartbutton ausDokumentation Seite 28 von 80


7.6 Übungsaufgaben1) Legen Sie einen User “admin1” an.2) Legen Sie eine Rolle „b2b-tester“ an.3) Legen Sie ein Attribute an, das den Queuemonitor ausblendet4) Legen Sie ein Attribut an, das nur den Zugriff auf die System 9980123456789 und9800123456789 erlaubt.5) Weisen Sie die Attribute aus 3) und 4) der Rolle „b2b-tester“ zu.6) Weisen Sie die Rolle „b2b-tester“ dem User „admin1“ zu.7) Legen Sie einen User „admin2“ an, der folgende Berechtigungen hata. Zugriff auf Systeme 9900123456789, 980123456789 und MONOPOL_LIEFb. Sicht auf alle Reiter des Administrationsbereiches außer Contentc. Einen neuen Modul-Button in der Menüleiste mit Label „Mein erstes Modul“, Tool-Tipp„Mein erster Tool-Tipp“ und Icon „chart_bar_edit.png“Dokumentation Seite 29 von 80


8 Channels8.1 Einordnung in den <strong>B2B</strong>-WorkflowIn der Channeldistribution wird jeder Nachricht ein entsprechender Channel zugeordnet. In diesemChannel ist festgelegt wie die Nachricht verarbeitet werden soll. Ein typischer Ablauf eines solchenChannels ist z.B.: Nachricht validieren, APERAK/CONTRL-Handling, Übergabe ans SAP/Filesystem. Dieeinzelnen Aktionen, die in einem Channel ausgeführt werden, werden durch sogenannte Actions, auf diewir später eingehen werden, bestimmt. Jeder Channel besteht aus einer Reihe von Actions, diesequentiell in Ihrer Ausführungsreihenfolge abgearbeitet werden.8.2 Konfiguration eines ChannelsChannels werden im Administrationsbereich der <strong>B2B</strong>BP unter dem Reiter Channels angelegt undkonfiguriert.Folgende Optionen stehen zur Verfügung:Dokumentation Seite 30 von 80


Hinzufügen: Anlegen eines neuen ChannelsEditieren: Editieren eines bestehenden ChannelsDuplizieren: Dupliziert einen bestehenden Channel mit allen Eigenschaften.Löschen: Löscht einen Channel8.2.1 Neuen Channel anlegenÜber den Button „Hinzufügen“ kann ein neuer Channel angelegt werden. Es erscheint folgendes Fenster:Folgende eingaben werden erwartet:Dokumentation Seite 31 von 80


Channel (muss): Hier wird ein eindeutiger Channelname (Channel ID) vergebenRichtung (muss): Bestimmt ob es sich um einen Eingangs- oder Ausgangschannel handelt.Wichtig für die Ansicht im MonitorMessage Typ (kann): Hier kann der Channel spezialisiert werden, d.h. trägt man hier einNachrichtenformat ein, beispielsweise UTILMD, wird dieser Channel nur für UTILMD-Nachrichten angesprochen. Hinweis: Ein bereits bestehender Channel kann mit gleicher ChannelID spezialisiert werden.Message Version (kann): Analog zu Message Typ, allerdings die Formatversion betreffend.Presentation Typ (kann): Analog zu Message Typ, allerdings den Presentationtype betreffend(EDI, CSV, IDOCXML, …)Action ID (muss): Jeder Channel besteht mindestens aus einer Action, daher muss hier eineAction aus den registrierten Actions ausgewählt werden.Execute Position (muss): Ausführungsposition der ActionExecute Action (muss): Bestimmt ob die Action ausgeführt wird oder nichtNach Angabe aller Pflichtfelder kann der Channel gespeichert werden. Der Channel wird jetzt in derChannelliste geführt.8.2.2 Editieren der Actions in einem ChannelsDurch Auswahl des Channels bekommt man die Liste der Actions die ausgeführt werden angezeigt.Diese kann nun beliebig editiert werden.Über den Button Hinzufügen kann dem Channel eine neue Action hinzugefügt werden:Dokumentation Seite 32 von 80


Aus der Liste aller registrierten Actions können nun beliebig viele Actions ins belieber Reihenfolgehinzugefügt werden. Als Angaben wird neben der Action ID (vorbelegt), die Ausführungspositionerwartet. Diese ist eine beliebige positive ganze Zahl. Je größer diese ist, desto später wird die Action imChannel ausgeführt.Mit der CheckBox Execute Action wird bestimmt, ob die Action ausgeführt werden soll oder nicht.Welche Action wann ausgeführt wurde, kann im Monitor in den technischen Details nachvollzogenwerden.Dokumentation Seite 33 von 80


Ist die Action mit einem grünen Häkchen aufgelistet, wurde diese ausgeführt, ist die Action mit einemblauen Fragzeichen aufgelistet wurde sie übersprungen.9 ActionsWie bereits erwähnt repräsentiert eine Aktion einen Arbeitsschritt in einem Channel. DenKontrollbereich um Actions anzulegen oder zu editieren, findet man im Administrationsbereich unterdem Reiter „Actions“.Hier können neue Actions angelegt und bestehende Actions editiert werden. Jede hier aufgelisteteAction kann in einem Channel verwendet werden.Dokumentation Seite 34 von 80


9.1 Neue Action anlegenÜber den Button „Hinzufügen“ kann eine neue Action angelegt werden.Hier werden folgende Eingaben erwartet:Name (muss): Name der Action, der auch im Monitor und in der Auswahlliste derChannelkonfiguration angezeigt wird.Klasse (muss): Voller Name JAVA-klasse, die die Implementierung bereitstellt oder Name desFuBa.Urheber (kann): Hinweis wer die Action zur Verfügung gestellt hat.Typ (muss): Angabe ob es sich um eine JAVA oder ABAP-Implementierung handeltVersion (kann): Version der AktionBeschreibung (kann): Kurze textuelle Beschreibung der Funktion.Dokumentation Seite 35 von 80


Nach Angabe aller Pflichtfelder kann die Action gespeichert werden. Nun erscheint sie auch in der Liste.Über den Button „Hinzufügen“ können der Action weitere Eigenschaften und Konfigurationenübergeben werden.Dokumentation Seite 36 von 80


Hier werden folgende Eingaben erwartet:Eigenschaft (muss): Eindeutiger Name der EigenschaftTyp (muss): Typangabe der Eigenschaft, in der Regel „java.lang.String“.Wert (muss): Wert der Eigenschaft; hier können auch dynamische Funktionen verwendetwerden.Name(kann): Name, unter dem diese Eigenschaft in den technischen Attributen aufgeführtwird.Import/Export (nur bei ABAP): Bestimmt die Richtung bei ABAP-Actions.Optionen (kann): Hier könne bis zu 3 Auswahlmöglichkeiten getroffen werden.a) verpflichtend (nicht benutzt): -b) technisch: Der Wert der Eigenschaft wird in den technischen Attributenprotokolliertc) fachlich: Der Wert der Eigenschaft wird in den fachlichen Attributen protokolliert.Nachrichten Kontext (muss): Hier gibt es zwei Auswahlmöglichkeitena) Nicht überschreiben: Ist diese Option ausgewählt steht die gesetzte Eigenschaft nurder Action zur Verfügung. Es ist also nur eine Konfigurationseinstellung.b) Zur Laufzeit überschreiben: Ist diese Option ausgewählt wird die gesetzteEigenschaft zusätzlich unter dem Schlüssel, der unter „Eigenschaft“ angegeben ist inden MessageContext geschrieben. Man hat also die Möglichkeit in jeder Actionbeliebige Werte dem MessageContext zu übergeben. Warnung: Gibt es imMessageContext bereits einen Wert mit gleichem Schlüssel, so wird dieserüberschrieben.Dokumentation Seite 37 von 80


10 ServicesIn der <strong>B2B</strong> gibt es 3 Arten von Servicesa) Scheduler-Jobs: Diese führen Aufgaben zu festgelegten Zeitpunkten ausb) Passive Services: Passiv bedeutet in diesem Fall, dass erst dann eine Reaktionerfolgt, wenn der Service von „außen“ angesprochen werden, z.B.: durch eineActionc) Aktive Services: Führen ununterbrochen im Hintergrund Aufgaben aus.Die Konfigurationsoberfläche für Services findet man in der <strong>B2B</strong>BP unter dem Reiter „Services“ imAdministrationsbereich.Dokumentation Seite 38 von 80


Über den Button „Hinzufügen“ kann ein neuer Service angelegt werden:Hier werden folgende Eingaben erwartet:ID (muss): Eindeutige ID des ServiceName (kann): Name des ServicesTyp (muss): Klassifikation des Services. Hier kann der Service zur besseren Übersicht klassifiziertwerden. Typische Klassifikationen sindo MAIL: Services, die Mails crawlen oder versendeno FILE: Services, die vom Filesystem lesen oder auf das Filesystem schreibeno SCHEDULER: Für Scheduler Jobso HTTP: Services, die via http empfangen oder sendeno INDEX: Services, die indiziereno QUEUE: Services, die Nachrichten aus der Queue verarbeiteno AS2: AS2-ServicesKlasse (muss): Voll qualifizierender Name der Klasse, die den Service implementiert.Dokumentation Seite 39 von 80


Channel (abhängig): Bei Services, die Nachrichten in die <strong>B2B</strong> transportieren, muss hier derDefaultchannel ausgewählt werden, der der Nachricht initial zugewiesen ist(-> Channeldistribution)Richtung (muss): Unterscheidung ob es sich um einen Inbound- oder Outboundservice handelt.Status (kann): Zusätzliche Information zum JobErstellt von (kann): Zusätzliche Information über den Ersteller des JobsOptionen (muss): Bei Schedulern und aktiven Services wird hier durch anwählen bestimmt, obder Service ausgeführt werden soll oder nicht. Bei passiven Services darf das Häkchen nichtgesetzt sein!Hinweis: Auf Systemen mit mehreren Knoten müssen aktive und Scheduler-Services jeweilsmindestens einem Knoten zugewiesen werden, damit sie ausgeführt werden können.Nach erfolgreichem Speichern erscheint der Service in der Liste.Hier können dem Service weitere Eigenschaften zugeordnet werden.Dokumentation Seite 40 von 80


Erwartet werden folgende Werte:Eigenschaft: Eindeutiger Name der EigenschaftWert: Wert der EigenschaftNachrichten Kontext: Hier gibt es zwei Auswahlmöglichkeiteno Zur Laufzeit überschreiben: Es wir immer diese Eigenschaft verwendet(überschreibt evtl. Eigenschaften aus dem MessageContext)o Nicht überschreiben: Ist bereits eine gleichnamige Eigenschaft imMessageContext vorhanden, wird diese bevorzugt behandelt.10.1 Besondere Eigenschaften der einzelnen Service-Typen10.1.1 SchedulerScheduler Services werden zu bestimmten festgelegten Terminen ausgeführt. Entweder einmal täglichzu einer bestimmten Uhrzeit oder in bestimmten Intervallen.Zur Konfiguration muss in den Service-Eigenschaften unter Klasseorg.b2bbp.service.inbound.scheduled.SchedulerRegisterServiceregistriert sein. Als Typ sollte “SCHEDULER” hinterlegt sein.Dokumentation Seite 41 von 80


Alle weiteren Einstellungen werden in den Service-Eigenschaften hinterlegt. Hier aufgeführt sind nur dieEigenschaften, die ein Scheduler immer benötigt. Weitere Eigenschaften sind von der speziellenImplementierung abhängig.Folgende Eigenschaften müssen hinterlegt sein:Eigenschaft Wert Kontext überschreibenB3P_SCHEDULER_REGISTER_CLASSNAMEB3P_SCHEDULER_NAMEName der Java-Klasse, dieden Service implementiertName, der im Monitorangezeigt wirdNeinNeinNun hat man zwei Konfigurationsmöglichkeitena) Ausführung nach fester Uhrzeit (einmal pro Tag):Hier müssen noch folgende Eigenschaften konfiguriert werden:Eigenschaft Wert Kontext überschreibenDokumentation Seite 42 von 80


B3P_SCHEDULER_TYPE CRON NeinB3P_CRON_HOURS Stunde der Ausführung (0-23) NeinB3P_CRON_MINUTES Minute der Ausführung (0-59) NeinDer Job wird nun zur Uhrzeit ausgeführt, die unter B3P_CRON_HOURS und B3P_CRON_MINUTEShinterlegt ist.b) Ausführung in festen Intervallen:Hier müssen noch folgende Eigenschaften konfiguriert werden:Eigenschaft Wert Kontext überschreibenB3P_SCHEDULER_TYPE DELAY NeinB3P_DELAY_REPEAT true NeinB3P_DELAY_MINUTES Ausführungsintervall (pos. Zahl) NeinDer Job wird jeweils nach so vielen Minuten ausgeführt, wie in B3P_DELAY_MINUTES hinterlegtwurde.10.1.2 Passive ServicesPassive Service werden erst ausgeführt, wenn sie von „außen“ angestoßen werden, d.h. zum Beispielvon einer Action aufgerufen werden. Ein typisches Beispiel ist hier der FileWriter..10.1.3 Aktive ServicesAktive Services führen ständig arbeiten im Hintergrund aus und werden schon beim Starten der Enginemit aktiviert. Typische Beispiele sind die Indexservices, Queueservices oder alle Crawler. Diese Servicessetzen einen Lock in den Locktabellen, wenn sie gerade arbeiten. Anhand der Locktabelle kannkontrolliert werden ob die einzelnen Services noch aktiv sind (über die ServiceID und letzte Änderung).Dokumentation Seite 43 von 80


11 Zusammenspiel zwischen Actions und ServicesDa in einem Channel nur Actions angelegt werden können, stellt sich die Frage wie ein Serviceeingebunden werden kann (z.B.: Übergabe ans SAP etc.). Jede Action hat die Möglichkeit einmal (undnur einmal) einen oder mehrere Services aufzurufen. Durch setzen der Eigenschaft:EigenschaftB3P_USED_SERVICE_IDWertIn Channel wird dann nach Abarbeiten der Action der Service mit der ID, die unter Wert angegebenwurde ausgeführt.Durch setzen dieser Eigenschaft mit einer Semikolon-separierten Liste von Service-IDs werdennacheinander die angegebenen Services aufgerufen.EigenschaftB3P_USED_SERVICE_IDWert;;…Dokumentation Seite 44 von 80


Hinweis: Hier wird in der Regel häufig Gebrauch von der Eigenschaft „Kontext überschreiben“ gemacht,da so dem folgenden Service Informationen übergeben werden können.Dokumentation Seite 45 von 80


12 Dynamische FunktionenIn <strong>B2B</strong> <strong>by</strong> <strong>Practice</strong> werden viele verschiedene Customizing Objekte verwendet. Diese müssen speziell fürIhren Einsatzbereich konfiguriert werden. Dies geschieht über die Administrationsoberfläche in denSichten für Aktionen, Channels, Services, Global Properties und Extensions. Um im Customizing nicht nurFestwerte hinterlegen zu können, werden dynamische Funktionen verwendet. Es wäre ansonsten nichtmöglich, dem MailSender Service erst zur Laufzeit mitzuteilen, wohin die Mail eigentlich gesendetwerden soll.Die dynamischen Funktionen werden in den folgenden Kapiteln vorgestellt. „Dynamisch Funktionen“können bei der Arbeit im Customizing sehr hilfreich sein. Diese Funktionen werden im Customizing von<strong>B2B</strong> <strong>by</strong> practice verwendet, um zur Laufzeit Context Variablen befüllen zu können und dadurch einverändertes Ablaufverhalten zu erreichen. Folgende Funktionen können deklarativ verwendet werden.12.1.1 VARMit dieser Funktion kann auf einen Wert im MessageContext zugegriffen werden. Die Funktion liest denWert aus dem MessageContext der unter dem übergebenen Namen gespeichert ist.Seit der Version vom 12.04.2010 kann die Funktion noch mit weiteren Alternativen Parameternamenauf den MessageContext zugegriffen werden. Diese werden durch "|" voneinander getrennt. DieErmittlung eines Wertes aus dem MessageContext beginnt mit dem ersten Namen. Sollte dieser einenWert ungleich NULL liefern, wird dieser Wert zurückgeliefert. Die Funktion wird beendet. Sollte dieÜberprüfung für den Namen keinen Wert finden, so beginnt die Prozedur mit dem zweiten Wert. Dieswird solange weitergeführt, solange Parameternamen vorhanden sind.Beispiel${var(B3P_BASE_CHANNEL_ID)}${var(B3P_BASE_MAIL_FROM|B3P_BASE_AS2_FROM}BeschreibungDie Channel ID wird von jedem „2Engine“-Service in den MessageContext geschrieben.Beispiel für die Verwendung von AlternativenParameternamenDokumentation Seite 46 von 80


Die Funktion VAR kann nicht mit weiteren „Dynamischen Funktionen“ verbunden wer-den.12.1.2 TEMPLATEDie Template-Funktion stellt eine Template-Engine zur Verfügung. Die Implementierung ist mittels„Apache Velocity“ realisiert. Die Wertemenge für die Template-Ausdrücke kommt ausschließlich ausdem MessageContext.Beispiel${template(&(this.FORMAT.type))} ,'${template(&(this.FORMAT.type),"UTILMD")}BeschreibungDer Funktionsrumpf wird wie bei VAR definiert(${template()}). Der Übergabeparameter 1 ist einText, der mit den eigentlichen Templates versehenwerden kann. Hier wird der Typ der Nachricht ausdem MessageContext gelesen.Die Funktion kann auch mit einem weiteren Parameter aufgerufen werden, der im Fall zurückgegebenwird, wenn die Template-Funktion kein Ergebnis liefert. Dieser ist in Anführungszeichen anzugeben.Das eigentliche Velocity Template muss in der Form &(objectId) angegeben werden, da es sonst als„Dynamische Funktion“ interpretiert würde. In den Template-Engine Context ist der MessageContext als„this“ übergeben worden. Alle Anfragen an den MessageContext erfolgen über diesen Bezeichner. DerVorteil der Template-Funktion liegt darin, dass auch hierarchische Objekte genutzt werden können. WoVAR nur den Zugriff auf das FORMAT-Objekt zulässt, kann über den Template-Ansatz auch auf tieferenObjekte und Attribute zugegriffen werden. Das Beispiel zeigt den Zugriff auf das Format-Objekt. DasAttribut Typ wird daraus gelesen. Es ist auch möglich aus den zusätzlichen Attributen des Format-.Objektes zu lesen. Diese können ja über die DIALECT.properties frei befüllt werden.Beispiel: Das Beispiel zeigt den Zugriff auf ein Attribut, welches über die DIALECT.properties definiert indas Format-Objekt geschrieben wurde. Es wird hier verwendet, um die Konvention der Betreff undDateinamen der BDEW einzuhalten. ${template(&(this.FORMAT.attributes.Date))}Dokumentation Seite 47 von 80


12.1.3 LOADEXTENSIONDie Funktion lädt eine Datei (Template) aus der Extension-Tabelle und führt diesen Text der Template-Engine automatisch zu. Dieser Mechanismus unterstützt die Behandlung verschiedener MailTexteinnerhalb von <strong>B2B</strong>BP. Ein Fallbackmechanismus ermöglicht ein rekursives Laden von Extensions.Beispiel${loadExtension(errormail.txt)}BeschreibungDie Funktion lädt die Datei (das Template) „errormail.txt“ aus derExtension-Tabelle und führt es der Template-Engine zu.Ein Überladen der Funktion ist möglich. Damit ist es per Customizing möglich auf der Basis von IDs,unterschiedliche MailTexte (-Templates) zu laden.'Beispiel: ' loadExtension mit template Funktion. Bevor loadExtension hier aufgerufen wird, wird dasErgebnis von${template(&this.FORMAT.senderCode)_mail.txt)}ermittelt. Der Absender BDEW Code wird hier dem Dateinamen vorangestellt. Z.B. 902637467_mail.txt.Bei einem anderen Absender wird ein anderer Text geladen.${loadExtension(${template(&this.FORMAT.senderCode)_mail.txt)})}Über den Fallbackmechanismus ist es zudem möglich, auf allgemeinere Extensions zurückzugreifen,wenn speziellere nicht verfügbar sind. Beispiel: In der Extension Tabelle sind folgende Mailtemplatesdefiniert:outbound_mailoutbound_mail_1234567890'Beispiel:' loadExtension mit Template-Funktion und Fallback-Logik Bevor loadExtension hier aufgerufenwird, wird das Ergebnis von ${template(outbound_mail_&(this.FORMAT.senderCode))} ermittelt. DerDokumentation Seite 48 von 80


Absender BDEW Code wird hier dem Dateinamen vorangestellt. Z.B. outbound_mail_1234567890.Dadas Template existiert, wird es geladen. Ermittelt die Funktion hingegen outbound_mail_0987654321,wird der Versuch scheitern, diese Extension zu laden. Der Fallbackmechanismus versucht als nächstesdie Extension outbound_mail zu laden, die ja existiert. Hierdurch kommt es nicht zu einem Fehler,sondern zu einer allgemeineren Ausprägung eines Mailtextes.${loadExtension(${template(outbound_mail_&(this.FORMAT.senderCode))},true)}Template-Funktionen können ebenfalls in den Texten der Extensions verwendet werden. Dies wirdhäufig verwendet, um aus dem MessageContext Informationen an z.B. einen MailText zu übergeben.12.1.4 LOADEXTENSIONPROPERTYDie Funktion lädt eine Eigenschaft aus einer Extension Datei (Template) aus der Ex-tension-Tabelle undführt diesen Text der Template-Engine automatisch zu. Ein Fallbackmechanismus wird auf dieEigenschaften angewendet.Beispiel${loadExtensionProperty(SENDER_MAIL,1234567890)}BeschreibungDie Funktion lädt die Extension DateiSENDER_MAIL und ermittlet den Wert derEigenschaft 1234567890. Dieser Wert wird andie TemplateEngine weitergeleitet, umdynamische Werte zu ermöglichen.Ein Überladen der Funktion ist möglich. Damit ist es per Customizing möglich auf der Basis von IDs,unterschiedliche Extension(-Templates) zu laden.'Beispiel:' loadExtensionProperty mit Template-Funktion: Bevor loadExtensionProperty hier aufgerufenwird, wird das Ergebnis von${template(&this.FORMAT.senderCode))}Dokumentation Seite 49 von 80


ermittelt. Die ermittelte Extension Datei wird geladen und die Eigenschaft 1234567890 wird darausermittelt.${loadExtensionProperty(${template(&this.FORMAT.senderCode))},1234567890)}Bei Fallback wird die Eigenschaft anhand des oben beschriebenen Vorgehens soweit generalisiert biseine entsprechende Eigenschaft gefunden wurde.'Beispiel:' loadExtensionProperty mit Template-Funktion und Fallback-Logik Bevor loadExtensionPropertyhier aufgerufen wird, wird das Ergebnis von${template(&this.FORMAT.senderCode))}ermittelt. Die ermittelte Extension Datei wird geladen und die Eigenschaft 123_4567_890 wird darausermittelt. Sollte diese Eigenschaft nicht existieren, wird als nächstes versucht, die Eigenschaft 123_4567zu laden. Sollte Eigenschaft 123 nicht gefunden werden, wird ein Fehler geworfen.${loadExtensionProperty(${template(&this.FORMAT.senderCode))},123_4567_890, true)}12.1.5 DATEDie Funktion ermittelt das aktuelle Tagedatum (mit Uhrzeit) und übergibt es im angegebenen Format.'Beispiel:' Die Funktion ermittelt das aktuelle Tagesdatum (Uhrzeit) und gibt es im angegebenen Format.Z.B (08312008) für 31.08.2008 ${date(MMddyyyy)}Das Überladen der Funktion ist nicht möglich.12.1.6 GETMPIDMAILDie Funktion ermittelt die in der MPID_SYNC Extension hinterlegte Emailadresse zu den aktuellenSender bzw. Partner Mpids.Es wird von folgendem Format der MPID_SYNC Extension ausgegangen:Dokumentation Seite 50 von 80


sender.partner.MAIL={[timestampFrom1-timestampTo1, test1@next-level-integration.com],[timestampFrom2-timestampTo2, test2@next-level-integration.com]}Dieses Format wird automatsch verwendet, falls die MPIDs über die AS2 Oberfläche angelegt werden.Für verschiedene Zeiträume können unterschiedliche Emailadressen angegeben werden.Beispiel${getmpidmail(${template(&(this.FORMAT.senderCode))},${template(&(this.FORMAT.partnerCode))})}Beschreibungermittelt dieaktuell gültigeEmailadresseFalls sender.partner nicht gefunden wird, wird nach .partner gesucht und dieser Wert zurückgegeben.12.1.7 GETMPIDNAMEDie Funktion ermittelt den in der MPID_SYNC Extension hinterlegten Namen zu den aktuellen Senderbzw. Partner Mpids.Es wird von folgendem Format der MPID_SYNC Extension ausgegangen:sender.partner.NAME=<strong>Next</strong> <strong>Level</strong> IntegrationDieses Format wird automatsch verwendet, falls die MPIDs über die AS2 Oberfläche angelegt werden.Beispiel${getmpidname(${template(&(this.FORMAT.senderCode))},${template(&(this.FORMAT.partnerCode))})}Beschreibungermittelt denhinterlegtenNamenFalls sender.partner nicht gefunden wird, wird nach .partner gesucht und dieser Wert zurückgegeben.Dokumentation Seite 51 von 80


12.1.8 GETUSEDSERVICESDie dynamische Funktion getUsedServices wird verwendet, falls AS2 und Mail parallel verwendetwerden und entschieden werden muss, welcher Senderservice ausgeführt werden soll (Wert vonB3P_USED_SERVICES_ID). Sie versucht in den AS2 Partnerbeziehungen eine passende Beziehung zufinden. System und Partner MPID werden aus dem Format Objekt im MessageContext verwendet. Fallsein Eintrag gefunden wurde, wird in der USED_SERVICES Extension nach COMMUNICATION_AS2EXTgesucht. Falls keine Beziehung gefunden wird, wird der als Parameter übergebene Ausdruck alsLOADEXTENSIONPROPERTY ausgewertet und zurückgegeben.Beispiel${getUsedServices(USED_SERVICES,${template(COMMUNICATION_&(this.B3P_COMMUNICATION_TYPE))},true)}${getUsedServices(USED_SERVICES,${template(COMMUNICATION_&(this.FORMAT.senderCode)_&(this.FORMAT.partnerCode))},true)}${getUsedServices(USED_SERVICES,COMMUNICATION_MAIL,true)}Beschreibungim Mail Fall, wird derService ausgeführt, der inder USED_SERVICESExtension unterCOMMUNICATION_MAILangegeben wurde,ausgeführt.Im nicht-as2 Fall wird einspeziell für senderpartnerdefinierterService aus derUSED_SERVICES gestartet.wählt im nicht-as2 Fallimmer den Service, derüberCOMMUNICATION_MAILdefiniert wurde.Dokumentation Seite 52 von 80


Mit ",true" wird im nicht AS2-Fall der Fallback der LOADEXTENSIONPROPERTY aktiviert und falls z.B.COMMUNICATION_MAIL in der USED_SERVICES Extension nicht existiert, nach COMMUNICATIONgesucht.13 Channeldistribution13.1 Einordnung im <strong>B2B</strong>BB-WorkflowDie Channeldistribution schließt sich unmittelbar an die Formaterkennung an. Ihre Aufgabe ist esanhand vorgegebener Kriterien die Nachrichten in die korrekten Zielchannels zu steuern. EineChanneldistribution ist also eine Aussteuerungsregel, die eine Nachricht aus dem Channel, in dem siesich gerade befindet, bei zutreffenden Eingangsbedingungen, in einen anderen Channel verschiebt. ZurAussteuerung werden typischerweise Informationen aus dem MessageContext verwendet, die mittelsdynamischen Funktionen ausgewertet werden. In vielen Fällen müssen zusätzliche Informationen ausder Nachricht in den MessageContext übernommen werden. Zu diesem Zweck steht eine große Auswahlan Channeldistributions bereit, die diese Aufgabe übernehmen..Im Folgenden kürzen wir Channeldistribution mit CD ab.13.2 KonfigurationZur Konfiguration der Channeldistributions sind zwei Extensions von entscheidender Bedeutung.EXT_CHANNEL_DIST und GENERIC_MAP. Die jeweiligen Aufgaben und deren Zusammenspiel werden indiesem Kapitel näher erläutert. Eine Channeldistribution ist mit einer Aussteuerungsregel gleich zusetzen. Ausnahme: Einige Channeldistributions haben nur „verwaltenden“ Zweck und manipulieren z.B.den Anzeigename in der System-Spalte im Monitor.13.2.1 EXT_CHANNEL_DISTDie EXT_CHANNEL_DIST stellt die zentrale Konfigurationsdatei für CD dar. Hier werden alle CDregistriert, deren Abfolge und Ausführungszeiten (Restriktionen auf einzelne Channels und Services)bestimmt. Diese Extension besteht aus zwei Teilen, dem Registrations- und dem Konfigurationsteil.13.2.1.1 Der RegistrationsteilHier werden alle benutzten CDs registriert. Die Reihenfolge der Registrierung ist zugleich die Reihenfolgeder Ausführung. Der Registrationsteil wird durch den Schlüssel „registered.classes” eingeleitet. Hinterdiesem Schlüssel werden nacheinander die voll qualifizierten Klassennamen - d.h. voller Pfad der JavaKlassen - der einzelnen CD aufgelistet. Als Separator dient die Zeichenfolge „;\“.Dokumentation Seite 53 von 80


Beispiel: Hier würden nacheinander die CD CheckAperakError, CheckManualFormat undCheckManualCategory ausgeführt werden:registered.classes= org.b2bbp.channels.extension.CheckAperakError;\org.b2bbp.channels.extension.CheckManualFormat;\org.b2bbp.channels.extension.CheckManualCategory;13.2.1.2 Der KonfigurationsteilJede registrierte Channeldistribution muss näher konfiguriert werden. Dies geschieht imKonfigurationsteil der EXT_CHANNEL_DIST. Zu jeder Channeldistribution kann der Ausführungszeitpunktnach folgenden Kriterien beeinflusst werden:1. Nur Nachrichten, die über bestimmte Services in <strong>B2B</strong>BP gelangen, werden ausgesteuert2. Nur Nachrichten in bestimmten Channels werden (weiter) ausgesteuert3. Nur Nachrichten in bestimmten Channels werden nicht (weiter) ausgesteuertDiese drei Eigenschaften werden pro registrierte CD konfiguriert.Um die oben genannten Konfigurationen durchzuführen wird an den jeweiligen registriertenChanneldistributionnamen ein Suffix angehangen:.=;< Konfigurationswert2>;…Neben expliziten Konfigurationswerten kann auch „*“ stellvertretend für alle möglichen Werteverwendet werden.Dokumentation Seite 54 von 80


Wir schauen uns die 3 Möglichkeiten nun nacheinander am Beispiel der CDorg.b2bbp.channels.extension.CheckManualFormat an.Wichtig ist es im Hinterkopf zu haben, dass jede Nachricht, die in die <strong>B2B</strong>BP gelangt in einenDefaultchannel geleitet wird, der am Eingangsservice registriert ist.13.2.1.2.1 Aussteuerungskriterium verwendeter ServiceDas hier zugehörige Suffix ist registeredServiceIds. Als Konfigurationswerte werden hier Service IDsaufgelistet.1. org.b2bbp.channels.extension.CheckManualFormat.registeredServiceIds=*In diesem Fall würde die Aussteuerungsregel bei allen Nachrichten angewendet werden, egalüber welchen Service diese in die <strong>B2B</strong>BP gelangt sind.Hinweis: In diesem Fall wären sowohl ausgehende, als auch eingehende Nachrichten von derAussteuerung betroffen.2. org.b2bbp.channels.extension.CheckManualFormat.registeredServiceIds=55;FileCrawlerIn diesem Fall würde die Aussteuerungsregel nur bei Nachrichten angewendet werden, die überdie Services mit der ID „55“ oder „FileCrawler“ in die <strong>B2B</strong>BP gelangt sind.13.2.1.2.2 Aussteuerungskriterium nach ChannelDas hier zugehörige Suffix ist executeOnChannelId. Als Konfigurationswerte werden hier Channel IDsaufgelistet.1. org.b2bbp.channels.extension.CheckManualFormat.executeOnChannelId=default_channel;inboundIn diesem Fall würde die Aussteuerungsregel greifen, wenn sich die Nachricht im Channel„default_channel“ oder „inbound“ befindet.Hinweis 1: Der Defaultchannel muss nicht zwingend „default_channel“ heißen. Die korrekteBezeichnung finden Sie in den Inbound-Services.Hinweis 2: Es ist wichtig hier mindestens eine (meistens den Defaultchannel) anzugeben, dasonst die Aussteuerungregel nie angewendet werden würde.Dokumentation Seite 55 von 80


Hinweis 3: Die Angabe von mehreren Channels ist dann sinnvoll, um eine Nachricht, die evtl.zuvor von einer anderen Aussteuerung schon in einen Channel umgeleitet wurde, zu einemspäteren Zeitpunkt nochmals umzuleiten.13.2.1.2.3 Aussteuerungskriterium Channel überspringenDas hier zugehörige Suffix ist skipChannelDistributionOnChannelId. Hier werden ebenfallsChannel IDs registriert. Wenn sich die Nachricht in einem Channel befindet, der hier aufgeführtist, wird die Aussteuerungsregel nicht angewendet.- org.b2bbp.channels.extension.CheckManualFormat.skipChannelDistributionOnChannelId=inbound_E06Hier wird die Aussteuerung nur vorgenommen, wenn sich die Nachricht nicht im Channel“inbound_E06” befindet.13.2.1.3 Cds im MonitorIn den technischen Attributen erhält man nach durchlaufen der Channeldistributions eine Übersicht, obdie CD ausgeführt wurde, und ob die Nachricht verschoben wurde bzw. in welchen Channel.Channeldistribution wurde ausgeführt(CheckManualFormat). Channel vorher undnachher: „inbound“Channeldistribution wurde nicht ausgeführt(CheckManualStorno).Dokumentation Seite 56 von 80


13.2.1.4 Zusammenfassung prinzipieller Ablauf der AussteuerungDie Aussteuerung erfolgt nach folgendem Algorithmus.1) Betrachte die erste Channeldistribution unter „registered.classes“.2) Wurde die Nachricht von einem Service unter „registeredServiceIds“ empfangen gehe zu 3)sonst gehe zu 6).3) Befindet sich die Nachricht in einem Channel, der unter „executeOnChannelId“ aufgeführt istgehe zu 4), sonst gehe zu 6).4) Befindet sich die Nachricht nicht in einem Channel, der unter„skipChannelDistributionOnChannelId“ aufgeführt ist gehe zu 5), sonst gehe zu 6).5) Prüfe die in der Channeldistribution hinterlegten Bedingungen. Treffen die Bedingungen zu,dann steuere die Nachricht aus und gehe zu 6), sonst gehe direkt zu 6).6) Betrachte die nächste Channeldistribution unter „registered.classes“. Ist eine weitere CDvorhanden gehe zu 2), sonst gehe zu 7).7) Ende Channeldistribution.Dokumentation Seite 57 von 80


13.2.2 GENERIC_MAPDie zweite Extension, die zur Aussteuerung benötigt wird ist die GENERIC_MAP. Bei einem speziellenTyp, den PatternbasedChanneldistributions, können hier die Aussteuerungsregeln mittels dynamischerFunktionen näher Festgelegt werden. Bevor wir näher auf die GENERIC_MAP eingehen machen wireinen Exkurs über die Typen die verschiedenen Typen der Channeldistributions.13.2.2.1 Exkurs: Typen von ChanneldistributionsEs gibt 3 grundlegende Typen von Channeldistributions:13.2.2.1.1 „Verwaltende“ ChanneldistributionsWie bereits erwähnt haben einige Channeldistributions nicht die Aufgabe Nachrichten auszusteuern,sondern manipulieren z.B. nur den Anzeigename.Beispiel: org.b2bbp.channels.extension.DisplayShortext, org.b2bbp.channels.extension.DisplayShorttextFront13.2.2.1.2 „Hart codierte“ ChanneldistributionsIn einigen Channeldistributions sind die Aussteuerungsregeln und Zielchannels fest codiert und könnensomit per Customizing nicht geändert werden. Diese Channeldistributions sollten nicht mehr genutztwerden.13.2.2.1.3 Patternbased ChanneldistributionsDiese Channeldistributions erhalten neben der Logik, gewisse Werte zur zusätzlichen Auswertung in denMessageContext zu schreiben, auch ein Pattern. Dieses Pattern stellt einen Schlüssel dar, an dem in derGENERIC_MAP eine dynamische Funktion registriert werden kann. Die Aussteuerung erfolgt dannAnhand dieser dynamischen Funktion. In der Regel nutzt diese auch die Werte, die von derChanneldistribution zusätzlich bereit gestellt werden. Das Pattern ist im Coding fest hinterlegt.13.2.2.2 Patternbased ChanneldistributionsDies Patternbased Channeldistributions sind diejenigen, die Zugriff auf die GENERIC_MAP nehmen. Wirdiskutieren die Funktionsweise am Beispiel der Channeldistributionorg.b2bbp.channels.extension.CheckUtilmdCategoryDiese besitzt das Pattern “CD_UTILMD_CAT“. Dem MessageContext wird der SchlüsselUTILMD_CATEGORY hinzugefügt, als Wert ist hier der Dokumentenname aus BGM – D1001 einerUTILMD hinterlegt.Dokumentation Seite 58 von 80


Aufgabe:1) Registrieren Sie diese Channeldistribution in der EXT_CHANNEL_DIST, sodass Sie bei allenEingangservices und für den Channel „inbound“ ausgeführt wird. Im ChannelINBOUD_UTILMD_SPLIT soll sie allerdings nicht ausgeführt werden.Zunächst wird nun am Pattern “CD_UTILMD_CAT“ die entsprechende dynamische Funktion hinterlegt.Wir möchten Anhand folgender Kriterien aussteuern:FormatFormatversionPartnerUTILMD nach KategorieFolgende Regeln sollen erfüllt werden:1) Alle MSCONS 2.1B an 0123456789111 in den Channel INBOUND_MSCONS_LIEF_OLD2) Alle MSCONS 2.1C in den Channel INBOUND_MSCONS3) Alle UTILMD 4.3 an 0123456789111 in den Channel INBOUND_LIEF_OLD4) Alle UTILMD 4.4 an 0123456789111 in den Channel UTILMD_LIEF außer alle UTILMD 4.4 E06 an0123456789111, diese in den Channel UTILMD_E06_LIEFDokumentation Seite 59 von 80


Die dynamische Funktion wird wie folgt registriert:.pattern= in unserem Fall also:CD_UTILMD_CAT.pattern=${template(&(this.FORMAT.type)&(this.FORMAT.version)_&(this.FORMAT.partnerCode)_&(this.UTILMD_CATEGORY))}Anhand dieses Patterns gibt man jetzt die Aussteuerungskriterien nach folgendem Schema an:In unserem Fall:#Regel1:==Ziel-ChannelCD_UTILMD_CAT=MSCONS2.1B_0123456789111= INBOUND_MSCONS_LIEF_OLD#Regel2:CD_UTILMD_CAT=MSCONS2.1C=INBOUND_MSCONS#Regel3:CD_UTILMD_CAT=UTILMD4.3_0123456789111=INBOUND_LIEF_OLD#Regel4:CD_UTILMD_CAT=UTILMD4.4_0123456789111=INBOUND_LIEFCD_UTILMD_CAT=UTILMD4.4_0123456789111_E06= UTILMD_E06_LIEFUm einen Treffer zu erkennen, wird aus den Werten im MessageContext (soweit vorhanden) nach derdynamischen Funktion ein String erstellt; bei einer entsprechenden UTILMD hier zum Beispiel:${template(&(this.FORMAT.type)&(this.FORMAT.version)_&(this.FORMAT.partnerCode)_&(this.UTILMD_CATEGORY))}a) UTILMD4.4_012345678111_E06Bei einer MSCONS zum Beispiel (hier wird der Wert UTILMD_CATEGORY nicht gefüllt)b) MSCOSN2.1B_012345678999Dokumentation Seite 60 von 80


Ergibt sich nun eine Übereinstimmung mit einem der registrierten dynamischen Funktion, wird dieNachricht in den entsprechenden Channel gesteuert, ansonsten ignoriert. Fall a) würde von Regel 4, 1.Teil ausgesteuert, Fall b) würde ignoriert werden, da kein passender Eintrag gefunden wurde. DieAusdrücke werden immer von rechts nach links ausgewertet, d.h. ergibt sich anhand der vollen Kriterienkeine Treffer, wird versucht ohne dieses Kriterium ein Treffer zu finden (hier ohne UTILMD_CATEGORY),wie im Beispiel der MSCONS. Das heißt: die Informationen aus dem Pattern müssen nicht immervollständig im MessageContext vorhanden sein, allerdings in der Reihenfolge von links nach rechtsschon. Mit unserer dynamischen Funktion wäre also keine Aussteuerung nur nach Format undPartnerCode möglich, da die Formatversion mit angegeben werden muss (Vollständigkeit von links nachrechts). Eine Auswertung ohne UTILMD_CATEGORY ist allerdings ohne Probleme nötig (Auswertung vonrechts nach links).Aufgabe:Modifizieren Sie die Regeln so, dass zusätzlich folgende Aussteuerungen gelten:Alle INVOIC 2.5 an 9930123456789 in den Channel INBOUND_LIEFAlle UTILMD 4.4 E03 an 9930123456789 in den Channel INBOUND_LIEF_E03Alle anderen UTILMD in den Channel INBOUND_LIEF_OLD13.2.3 Zusammenspiel GENERIC_MAP und EXT_CHANNEL_DISTBetrachtet man den Algorithmus unter 1.2.1.4 findet das Zusammenspiel der beiden Extensions lediglichim Punkt 6) statt. Wurde entschieden, dass die Aussteuerung ausgeführt werden kann, werden dieEingangsbedingungen gegen die Regeln, die zu der aktuellen CD in der GENERIC_MAP angelegt sindgeprüft und bei zutreffen in den dort hinterlegten Channel geleitet.Dokumentation Seite 61 von 80


14 Content in <strong>B2B</strong> <strong>by</strong> <strong>Practice</strong>Content spielt in <strong>B2B</strong> <strong>by</strong> <strong>Practice</strong> eine zentrale Rolle für die Nachrichtenverarbeitung. Häufig werdeneingehende Nachrichtenformat in andere Formate überführt. Die Beschreibung dieser Überführungenwird als Content bezeichnet. Es wird aktuell zwischen zwei Content-Formaten unterschieden NLCMappings und XSLT-FO Transformationen.Content wird von verschiedenen Actions während der Channel Verarbeitung geladen und ausgeführt.Wie der richtige Content ermittelt wird, ist in Kapitel „Content wird geladen“ beschrieben.14.1 Content Typen14.1.1 NLC ContentAls NLC Content werden Konverter bezeichnet, die Nachrichten von einem Format in ein anderesüberführen und gleichzeitig während der Verarbeitung noch die Eingangsnachricht validieren. DieseKonverter werden aus speziellen Modellen herausgeneriert und als Java Archiv (Jar) zur Verfügunggestellt. Für die aktuellen Nachrichtenformate im Energiesektor stehen solche Konverter zur Verfügung.14.1.2 XSLT TransformationWie der Name schon sagt, wird dieser Content zur Transformation von XML-Nachrichten verwendet.Momentan wird als XSLT Transformation die Erzeugung des Umsatzsteuernachweises verwendet. Genaugenommen findet hier eine XSLT-FO Transformation statt, um aus XML ein PDF Format zu erzeugen.XSLT Transformationen sollten nicht für sehr große Nachrichten verwendet werden, da derRessourcenverbrauch sehr hoch ist.14.2 Content einspielenSie spielen neuen Content über die <strong>B2B</strong> <strong>by</strong> <strong>Practice</strong> Administration ein. Über das Menü „Content“können Sie neuen Content hochladen und existierenden Content aktualisieren.Dokumentation Seite 62 von 80


Über den Button „Hinzufügen“ können Sie neuen Content in die <strong>B2B</strong> <strong>by</strong> <strong>Practice</strong> hochladen. FolgendeFelder müssen hier gefüllt werden.FeldProviderVersionTypBeschreibungFrei zu definierender Bezeichner, der beim Ladendes Contents wiederverwendet wird. Dient alsNamensraum zusammen mit der VersionNamensraum Version.Typ des Contents (NLC, XSLT-FO)Dokumentation Seite 63 von 80


FormatFormat VersionZielformatDokumentDer Content eignet sich für dasNachrichtenformat, das Sie hier angeben. Z.B.UTILMDDer Content eignet sich für dieNachrichtenformatversion, die Sie hier angeben.Z.B. 4.4Der Content erzeugt als Ergebnis (EDI, IDOCXML,PDF)Die Datei, die Sie hochladen möchtenFüllen Sie die oben beschriebenen Felder aus und wählen Sie eine Datei für den Content und klickenanschließend auf den „Upload“-Button. Sie haben neuen Content eingespielt.Wenn Sie Content lediglich aktualisieren möchten, weil z.B. ein Patch ausgeliefert wurde, dann nutzenSie den Button „Überschreiben“. Jetzt können Sie lediglich eine neue Content-Datei auswählen. Dieanderen Felder sind nicht editierbar. Über den „Upload“-Button wird der neue Content hochgeladen.Dieser steht erst nach einem Neustart der <strong>B2B</strong> <strong>by</strong> <strong>Practice</strong> zur Verfügung oder bei Systemen mit Cluster-Kommunikation direkt nach dem Einspielen.Dokumentation Seite 64 von 80


Über den Button Content-Info können Sie sich die Versionsinformationen zu den einzelnen Formatenanschauen. Über diese Funktion kann geprüft werden, ob der aktuellste Content eingespielt ist.14.3 Content wird geladenEs gibt verschiedene Arten von Content. Geladen werden Sie aber über denselben Mechanismus. Diesersoll hier allgemein beschrieben werden.Es gibt für die Verarbeitung der Channels einige Parameter im MessageContext, die Einfluss auf dasLaden des Contents nehmen. Die zugehörige Action spielt ebenfalls eine zentrale Rolle an dieser Stelle.Beispiel:Es soll für eine Nachricht an einen externen Marktpartner ein IDOCXML UTILMD 4.4 nach Edifactgemapped werden.Dokumentation Seite 65 von 80


Hierzu wird die NLCAction2 (com.nextlevel.runtime.actions.nlc.NLCAction2) verwendet. Diese legt fürdas Laden des Contents schon einmal fest, dass der Typ „NLC“ sein muss. Mit den Informationen aus derFormaterkennung stehen bisher folgende Eigenschaften des benötigten Contents fest.EigenschaftWertProvider ?Version ?TypFormatNLCUTILMDFormatversion 4.4Ziel ?Die noch fehlenden Informationen werden aus dem MessageContext ermittelt. Häufig werden diese anEingangsservices definiert. Es ist aber auch möglich, diese an einer Action zu konfigurieren. Wichtig isthier, dass die Informationen im MessageContext landen (also Context überschreiben „true“ setzen) unddie Action vor der NLCAction2 ausgeführt wird.Folgende Eigenschaften müssen im MessageContext gesetzt werden, damit der Content geladen werdenkann.EigenschaftProviderVersionTypFormatWertnlc-content-provider=NLInlc-content-version=1.0NLCUTILMDFormatversion 4.4Zielnlc-content-out=EDIDokumentation Seite 66 von 80


Für den Content Typ XSLT-FO müssen folgende Eigenschaften im MessageContext vorhanden sein.EigenschaftProviderVersionTypFormatWertnlc-transformation-provider=NLInlc-transformation-version=1.0XSLT-FOUTILMDFormatversion 4.4Zielnlc-transformation-out=EDI15 FehlerbehandlungIn vielen <strong>B2B</strong> Installationen werden Fehler per email eskaliert und an verschiedene Verteilerausgesteuert. Für den Fachbereich werden insbesondere solche Eskalationsmails verschickt, wennnegative Contrls und Aperaks eingetroffen sind. Überlegen Sie doch, ob es nicht sinnvoller ist auf dieseemails zu verzichten und das Clearing konsequent im Monitoring Cockpit vorzunehmen.Wenn Sie beispielsweise eine Aperak Nachricht bekommen haben, prüfen Sie zunächst, ob die Nachrichtberechtigt ist oder nicht. Im letzteren Fall senden Sie aus dem Backendsystem (oder manuelle Versand)eine richtige Nachricht. In beiden Fällen führen Sie dann ein Clearing des Vorgangs durch. Das heisstkonkret, selektieren Sie auf die eingehende Aperak Nachricht und klicken in der Zeile "ÜbersichtNachrichten" den Link "Statusänderung" an. Hier beschreiben Sie, ob die Aperak berechtig war odernicht und wählen einen passenden Fehlergrund aus. (Fehlergründe/Stati kann übrigens Ihre <strong>B2B</strong>Administration nach Ihren Wünschen frei hinterlegen! - Spätere Auswertungen darüber sind oft sehraufschlussreich.) Wählen Sie auch die zur Aperak zugehörige ausgehende Nachricht aus (siehe ganzunten) und führen auch hier eine Statusänderung durch und hinterlegen z.B. die Info welche Nachricht(ReferenzNr) als Korrektur von Ihnen erneut ausgegeben wurde).Dokumentation Seite 67 von 80


Wenn Sie dies konsequent durchführen für APERAKs, neg CONTRLs und CONTRL-Fristüberschreitungenwerden die unten beschriebenen Selektionen auf "Null Treffer" gebraucht. Man hat also immer einenaktuellen ClearingStand.Das Problem mit den Eskalationsmails ist, dass man den Bearbeitungsstatus des Vorgangs nicht imSystem hinterlegt hat. Eine solche Mal existiert ja gegebenenfalls noch und kann für Verwirrung sorgen,wenn der Vorgang längs geklärt ist..Insofern überlegen Sie. ob Sie von Ihrer <strong>B2B</strong> Adminstration nicht die Eskalationsmails ausschalten lassenund das Clearing ausschließlich durch die unten beschriebene Kontrollen und anschliessendenStatusänderungen durchführen!15.1 Kontrolle überfällige CONTRLsÜberprüfen Sie bitte täglich ob Sie auf Ihre ausgehenden Marktpartner fristgerecht CONTRLs erhaltenhaben. Dazu verwenden Sie folgende Selektionskriterien:"nach Welt" ankreuzen"nach ERP" leer lassenTyp "Alle"Verarbeitung "Alle"Bestätigung "Nicht fristgerecht"Das Symbol "Wecker" in der Spalte "BS = Bestätigungsstatus" bedeutet, dass keine CONTRL innerhalbder Frist angekommen ist.Dokumentation Seite 68 von 80


15.2 Kontrolle eingehender negativer CONTRLsÜberprüfen Sie bitte täglich ob es negative CONTRLs eingegangen sind. Mit folgendenSelektionskriterien können Sie die Anzahl ermitteln:"nach Welt" ankreuzen"nach ERP" leer lassenTyp "Alle"Verarbeitung "Alle"Bestätigung "Fehlerhaft"Dokumentation Seite 69 von 80


Da in eingehenden negativen CONTRLs im EDIFact kein der Fehlergrund angegeben ist, sollten Sie sichmit dem EDI Analyzer ein Bild machen, ob aus Ihrer Sicht ein Fehler in der ausgehenden Nachrichtvorlag. Dazu markieren Sie ein Zeile im Messagemonitoring und klicken auf das EDI Anaylzer Symboloben rechts in der Zeile "Übersicht Nachrichten".Es öffnet sich ein Report, in dem mögliche Fehler beschrieben und lokalisiert werden. Falls ein Fehler -z.B. aufgrund eines fehlenden Wertes, der im Backendsystem nicht gesetzt wurde - vorliegt. Klicken Siein der Zeile "Übersicht Nachrichten" auf "Statusänderung" und beschreiben den Fehlergrund undwählen einen passenden Status aus. Danach beheben Sie den Fehler im Backend und gebend dieNachricht erneut aus.Dokumentation Seite 70 von 80


Mit folgender Selektion können Sie auch die eingehende E-Mail mit dem negative Contrl selektieren.(Mit der Selektion oben haben Sie ja Ihre ausgehende Nachricht selektiert für die ein negatives CONTRLgekommen ist).Dazu kopieren Sie die Referenznummer der ausgehenden Nachricht in das Eingabefeld "Ref-Nr".Dokumentation Seite 71 von 80


Mit einem einfachen Klick auf eine Zelle in der Nachrichtenübersicht kopierenSie den jeweiligen Wert in die Zwischenablage. Mit Ctrl+v können Sie diesenWert in andere Selektionfelder oder andere Anwendungen "pasten".Zusätzlich wählen Sie folgende Selektionskriterien:"nach Welt" ankreuzen"nach ERP" ankreuzenTyp "Alle"Verarbeitung "Alle"Bestätigung "Alle"Mit dieser Selektion selektieren Sie als das "Pärchen" aus ausgehender Nachricht und der eingehendenContrl. Wenn die Contrl negativ ist, ist der Verarbeitungsstatus (Spalte VS) der Contrl rot. Dadurch wirdeine Fehlermail ausgelöst, die darauf hinweist, dass eine negative CONTRL eingegangen ist und dassdieser Vorgang untersucht werden muss. Es macht aber auch Sinn unter fachliche Belege auch dietatsächlich eingegangene Contrl-Mail zu öffnen, da einige Marktpartner (insbesondere wenn <strong>B2B</strong> <strong>by</strong><strong>Practice</strong> im Einsatz ist:) in den Mailtext Hinweise schreiben, warum eine negative Contrl gesendetwurde. Diese Info kann leider nicht im Contrl EDIFact hinterlegt werden.Weiterhin wird bei negativen CONTRLs auch bei der zugehörige ausgehende Nachricht derBestätigungsstatus (Spalte BS) rot gefärbt, damit man unmittelbar erkennt, dass der Marktpartner dieseNachricht nicht akzeptiert hat.(Wenn ein eine positive CONTRL kommt ist deren Verarbeitungsstatus grün und auch derBestätigungsstatus der zugehörigen ausgehenden Nachricht grün).Dokumentation Seite 72 von 80


15.3 Kontrolle eingehender APERAKsVerschaffen Sie sich bitte täglich einen Überblick über die APERAKs, die Sie von Ihren Marktpartnernempfangen haben. Dazu ermitteln Sie zu nächste die Anzahl der Belege auf die Sie eine Aperakempfangen haben und checken diese mit dem EDI Analyzer. Im 2. Schritt selektieren Sie die zugehörigeAPERAK Nachricht und schauen den Fehlertest des Marktpartner an.Schritt1) Selektieren Sie folgendermaßen:Dokumentation Seite 73 von 80


"nach Welt" ankreuzen"nach ERP" leer lassenTyp "Alle"Verarbeitung "Alle"Bestätigung "APERAK"Selektieren Sie ein Nachricht und rufen den EDI Analyzer auf und überprüfen, ob aus Ihrer Sicht auch einAPERAK Fehler vorliegtDokumentation Seite 74 von 80


Schritt2)Kopieren Sie die RefenerzNr in das Eingabefeld Text und führen die Suche mit diesen zusätzlichenSelektionskriterien durch:"nach Welt" ankreuzenDokumentation Seite 75 von 80


"nach ERP" ankreuzenTyp "Alle"Verarbeitung "Alle"Bestätigung "Alle"Sie haben nun alle Vorgänge zu der ausgehenden (durch die APERAK des Marktpartner bemängelten)Nachricht vorliegen: Ausgehende Nachricht, eingehende Contrl und eingehende APERAK desMarktpartners. Die Aperak selber ist vom Verarbeitungsstauts Rot (Spalte VB) um anzuzeigen, dass Sietätig werden müssen. Sie können sich das APERAK E-Mail Attachment durch Öffnen der APERAK-mailunter fachliche Belege anschauen, und den Fehlergrund den der Marktpartner angibt, einsehen.Führen Sie nach Klärung des Vorgangs (z.B durch Neuausgabe, wenn Ihre Nachricht tatsächlich falschwar) die Statusänderung für die APERAK Nachricht und die zugehörigen ausgehenden Nachricht vonIhnen durch.Dokumentation Seite 76 von 80


15.4 Fehleranalyse – Wo finde ich InformationenDieses Kapitel widmet sich den verschiedenen Informationsquellen in <strong>B2B</strong> <strong>by</strong> <strong>Practice</strong>. Bei denunterschiedlichsten Fehlern können hier wertvolle Informationen enthalten sein.15.4.1 FormatfehlerSollten Sie Fehler erkennen, die auf das Format zurückzuführen sein könnten, dann lohnt sich immer einBlick in die technischen Details zur Formaterkennung. Hier können Sie prüfen, welche Informationen dieFormaterkennung ermittelt hat.Diese Information ist ebenfalls sehr wertvoll, wenn Sie neue Channel-Konfigurationen testen.15.4.2 IT-Fehler / Error LogSobald ein technischer Fehler auftritt spricht man von einem IT-Fehler. Zu diesem gibt es meistens eineFehlermeldung, die an dieser Nachricht gespeichert wurde.Dokumentation Seite 77 von 80


In diesem Beispiel finden wir im Error Log (unten rechts neben den technischen Attributen) eineFehlermeldung zur ausgeführten fehlerhaften Action. Neben einem Stacktrace, der für den Supportimmer interessant ist, finden Sie auch einen Hinweis auf die Fehlerursache. Hier konnte die eingehendeNachricht nicht an einen Wim Prozess korrelliert werden.Die Fehlerbeschreibungen enthalten häufig konkrete Hinweise auf die Fehlerursache. Dies ist nicht nurein Fehlerlog für Entwickler.15.4.3 Related MessagesRelated Messages helfen bei der Ermittlung von zusammenhängenden Nachrichten. Immer dann, wennman sich einen Überblick über mehrere Nachrichten verschaffen muss. Zusätzlich ist es sehr praktischbeim Auffinden von Aperak Nachrichten.Dokumentation Seite 78 von 80


Über diese Buttons können Sie verschiedene Links erzeugen bzw. prozessieren.1. Kopiert den Link in die Zwischenablage2. Kopiert den Link für zusammenhängende Nachrichten in die Zwischenablage3. Zusammenhängende Nachrichten im neuen Fenster anzeigen.15.4.4 SystemfehlerÜber den Menüpunkt „Systemfehler“ finden Sie auch Probleme in Ihrem System. Hier werden alleFehler gespeichert, die nicht direkt mit einer Nachrichten zusammenhängen. Beispielsweise Fehler beider Verarbeitung im MailCrawler.Dokumentation Seite 79 von 80


Die Fehler werden mit Zeitstempel gespeichert. Sie sollte jeden Tag hier schauen, ob neue Fehleraufgetreten sind. Wenn Sie die Fehler behoben haben, lösDokumentation Seite 80 von 80

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!