FIXME ====== Verbuchen von Artikeldaten mittels Jobsteps TradeItemManagerFillCache, TradeItemManagerBookCache ====== === Direkte Verbuchung von Artikeldaten aus einer Warenwirtschaft oder aus einem ERP-System === == Sanfte Migration des alten Verbucher-Jobs (nur nach Rücksprache mit Pranke GmbH verwenden) == Durch den Austausch des Jobsteps TradeItemManagerDirectSql mit dem TradeItemManagerFillCache und TradeItemManagerBookCache (wie in Abbildung 1 und 2) können die Daten direkt in der **ArticlePool_ArticleCache** Tabelle verbucht werden.\\ **Vorsicht:** Es kann zu Problemen führen, wenn beim Verbuchen der Daten durch den TradeItemManagerBookCache-Jobstep ein Fehlerfall auftritt und danach ein ReRun auf den Job ausgeführt wird. Durch das Auftreten eines Fehlers bein Verbuchen wird die entsprechende Cache-Tabelle von der aufgerufenen gespeicherden Prozedur nicht geleert. In diesem Fall können nicht noch einmal die Daten des verarbeiteten Dokuments in die Cache-Tabelle eingefügt werden, ohne eine Primär-Schlüssel-Verletzung hevor zu rufen. Um diesen Fall zu vermeiden sollte vor Inbetriebnahme das Konzept für einen solchen Job-Aufbau mit der Pranke GmbH abgesprochen werden.\\ **Abbildung 1**\\ {{images:book_article_in_articlepool2.jpg?565x180}} **Abbildung 2**\\ {{images:book_article_in_articlepool3.jpg?889x150}} Der gesamte Job sieht jetzt folgendermaßen aus: **Abbildung 3**\\ {{images:book_articles_in_articlepool4.jpg?1423x670}} Angetriggert wird der in Abbildung 3 im gelben Kreis liegende Job von dem äußeren Job, welcher den **Delegator to ArticlePoolFillCache** enthält. Der Äußere Job holt die Nachrichten ab.\\ Sobald alle Artikeldaten in der **ArticlePool_ArticleCache-Tabelle** sind, was durch das Delegieren auf den in Abbildung 3 dargestellen ArticlePool-Job im gelben Kreis geschehen ist, beginnt das Verbuchen der Artikel durch die zwei Jobsteps unterhalb des Delegators des Äußeren Jobs.\\ {{:images:sign_warning.png?nolink|}}**Hinweis:** Der Erste Jobstep ist ein **//TradeItemManagerFillCache//**, der eine StoredProcedure "//**ArticlePool_ClearCache**//" zum löschen seines Inhaltes ausführt, sobald der Job gestartet wird. Damit wird sichergestellt, dass kein Fehler durch doppelte Einträge im Cache hervorgerufen werden, falls eine Exception währen des Verbuchens von Artikel in den ArtiklePool auftritt.\\ Da die zur **//Verbuchung relevanten Jobsteps//** durch einen //**Lock-Mechanismuns**// geschützt sind, können diese Jobs nur **//einmal zur geichen Zeit laufen//**.