Die meisten Post-Mortem-Analysen von Batch-Anwendungen, die ich durchführe, lassen sich auf denselben Fehler zurückführen: Ein Entwickler validiert eine benutzerdefinierte UBEUniversal Batch Engine, das JDE-Tool zur Ausführung von Hintergrundprozessen und Berichten. in DV920Die Standard-Entwicklungsumgebung (Development) in JD Edwards EnterpriseOne. mit 50 Zeilen isolierter Testdaten, markiert das Object Management WorkbenchDas zentrale Werkzeug in JD Edwards zur Verwaltung und Verteilung von Softwareobjekten.-Projekt als abgeschlossen und zieht weiter. Innerhalb von zwei Tagen versucht derselbe Bericht, 100.000 Datensätze in PY920Die Standard-Testumgebung (Prototype) in JD Edwards EnterpriseOne. zu verarbeiten, verursacht durch uncommitted Transaktionsgrenzen DeadlocksEin Zustand, bei dem sich zwei Prozesse gegenseitig blockieren, weil jeder auf Ressourcen des anderen wartet. auf der F41021Die JD Edwards-Datenbanktabelle für Artikelstandorte und Lagerbestände. oder blockiert die in F986110Die Systemtabelle in JD Edwards, die den Status aller eingereichten Server-Jobs speichert. konfigurierte Single-Thread-JobqueueEine Warteschlange, die Jobs nacheinander (einzeln) abarbeitet, um Datenkonflikte zu vermeiden..
In umfassenden Unternehmens-Audits stellen technische Teams regelmäßig fest, dass die Mehrheit der benutzerdefinierten Universal Batch Engine (UBE)Die Batch-Verarbeitungs-Engine von JD Edwards, die für die Ausführung von Berichten und Massendatenprozessen im Hintergrund zuständig ist.-Berichte unbeabsichtigt den JDE-Sicherheitskernel (F00950Die zentrale JD Edwards-Systemtabelle, in der alle Sicherheitsberechtigungen, einschließlich der Zeilensicherheit, gespeichert sind.) umgeht. Die ERP-Leitung geht oft davon aus, dass eine aktive ZeilensicherheitEine Sicherheitsfunktion, die den Zugriff auf bestimmte Datenzeilen in einer Datenbanktabelle basierend auf Benutzerkriterien einschränkt. (Row Security) auf Tabellen wie F060116 (Payroll) oder F4105 (Item Cost) die Batch-Ausgabe von Natur aus einschränkt. Das ist nicht der Fall. In dem Moment, in dem ein Entwickler direktes Table I/ODirekte Datenbank-Lese- und Schreiboperationen, die innerhalb der JD Edwards Event Rules definiert werden. in den Event RulesDie proprietäre Skriptsprache von JD Edwards zur Definition von Geschäftslogik in Anwendungen und Berichten. verwendet oder eine benutzerdefinierte C Business FunctionIn C geschriebene Programme, die komplexe oder performancekritische Geschäftslogik in JD Edwards ausführen. aufruft, die JDB_OpenTableEine JD Edwards-Programmierschnittstelle (API), die verwendet wird, um eine Datenbanktabelle für Lese- oder Schreibzugriffe zu öffnen. ausführt, ohne explizit den Sicherheitskontext des Benutzers zu übergeben, wird die Zeilensicherheit auf Engine-Ebene ignoriert.
Wenn eine Batch-QueueEine Warteschlange auf dem Server, in der Hintergrundprozesse (Batch-Jobs) nacheinander oder parallel abgearbeitet werden. auf dem Enterprise ServerDer zentrale Server, der die Geschäftslogik und Batch-Prozesse der JD Edwards-Anwendung ausführt. um 2:00 Uhr morgens blockiert, ist die erste Reaktion vieler Teams, die maximale Anzahl gleichzeitiger Jobs in der JDE-Umgebungskonfiguration zu erhöhen. In neun von zehn Fällen ist das eine Fehldiagnose. Der tatsächliche Engpass ist fast immer ein fehlerhaftes Report Design Aid (RDA)Das Entwicklungswerkzeug innerhalb von JD Edwards, mit dem Berichte und Batch-Prozesse (UBEs) erstellt und gestaltet werden. Layout, das Millionen von nicht indizierten Datenbank-Abfragen ausführt. Die Verknüpfung des F4111 Item LedgerEine zentrale JD Edwards-Datenbanktabelle, die alle Lagerbewegungen und Artikeltransaktionen historisch erfasst. mit dem F0911 General LedgerDie Hauptbuchtabelle in JD Edwards, in der alle Finanztransaktionen und Buchungszeilen gespeichert werden. in einem einzigen benutzerdefinierten Business ViewEine logische Sicht auf eine oder mehrere Datenbanktabellen, die in JD Edwards für Berichte und Anwendungen verwendet wird. ohne strikte Index-Abstimmung verwandelt einen Batch-Lauf, der eigentlich 90 Sekunden dauern sollte, in eine 4-stündige Queue-Blockade.
Die Neigung, die JDE-MiddlewareDie Software-Schicht in JD Edwards, die zwischen der Benutzeroberfläche und der Datenbank vermittelt und Geschäftsregeln ausführt. zu umgehen und direktes SQLStructured Query Language: Eine standardisierte Datenbanksprache zur Abfrage und Verwaltung von Daten in relationalen Datenbanken. auf Tabellen wie F0911Die zentrale Hauptbuchtabelle (Account Ledger) in JD Edwards, die alle detaillierten Finanztransaktionen speichert. oder F4211Die Tabelle für Verkaufsauftragsdetails (Sales Order Detail) in JD Edwards, die einzelne Auftragspositionen enthält. auszuführen, resultiert meist aus der reinen Ausführungsgeschwindigkeit: Eine optimierte SQL-Abfrage kann 500.000 Zeilen in weniger als fünfzehn Sekunden ausgeben, während ein benutzerdefiniertes UBEUniversal Batch Engine: Das JD Edwards-Werkzeug zur Ausführung von Hintergrundprozessen, Berichten und Massendatenverarbeitungen. fast eine Stunde benötigen kann, um denselben Datensatz zu verarbeiten. Die Bewertung eines JDE UBE Custom Data Extracts im Vergleich zu Direct SQL ausschließlich anhand der Ausführungsgeschwindigkeit ist jedoch ein architektonischer Fehler, der regelmäßig das nachgelagerte Finanzberichterstattungssystem beschädigt.
Eine Standard-UBEUniversal Batch Engine; ein Hintergrundprozess in JD Edwards zur Verarbeitung großer Datenmengen oder zur Berichterstellung., die für 5.000 Datensätze ausgelegt ist, wird katastrophal scheitern, wenn das nächtliche Volumen auf über 100.000 Transaktionen ansteigt. Die meisten benutzerdefinierten Batch-Läufe scheitern nicht an einer fehlerhaften Geschäftslogik, sondern an Datenbank-Timeouts, Index-Konflikten und Memory LeaksEin Fehlerzustand, bei dem Software belegten Arbeitsspeicher nicht zurückgibt, was langfristig zum Systemabsturz führt. in benutzerdefinierten C BSFNsBusiness Functions; modulare Programmeinheiten in JD Edwards, die komplexe Geschäftslogik in C oder Event Rules enthalten.. Bei der Ausführung von Hochvolumen-Läufen in EnterpriseOne 9.2 ist die Abhängigkeit von standardmäßigen linearen Report-Designs ein betriebliches Risiko. Um ein resilientes JDE UBE Custom Batch Job Design für die nächtliche Verarbeitung zu erreichen, muss man sich von einfachen EREvent Rules; die interne Programmiersprache von JD Edwards, mit der Logik direkt an Oberflächen- oder Bericht-Ereignisse gebunden wird. Schleifen lösen und datenbankgesteuerte Architekturen einführen.
Seite 2 von 3