Wie verhindert man, dass Benutzer fehlerhafte Eingabesätze erstellen, wenn es keine praktische Möglichkeit gibt, die Eingabe zu überprüfen?
Die Szene
Ich ändere ein kleines ERP-Paket, das in Visual FoxPro geschrieben wurde. Ein Teil des Pakets befasst sich mit dem Drucken von LKW-Manifesten und Rechnungen, die den Fahrern auf ihren Lieferwegen zugesandt werden sollen. Wenn die Druckroutine nichts als Eingabe eingibt, versucht sie, alles zu drucken, was dazu führt, dass Unmengen von Druckerpapier auf einem Hochgeschwindigkeitsdrucker verschwendet werden.
Ich bin nicht in der Lage, eines der GUI-Schnittstellenelemente neu zu schreiben, und ich kann auch keine Frameworks, Toolkits oder anderen externen Code anpassen, die in dieser Situation verwendet werden sollen. Die Gründe hängen mit der Büropolitik zusammen. Bitte schlagen Sie nicht vor, dass ich das vorhandene ERP-Framework überschreiben kann, da dies für mich keine Option ist.
Die Angelegenheit
Die Benutzer befinden sich in einer zeitkritischen Hochdruckumgebung. Jeder Prozess wird in Minuten oder sogar Sekunden gemessen, was bedeutet, dass ich die Verarbeitungszeit so weit wie möglich minimieren muss. Aufgrund dieser Umgebung und möglicher Ablenkungen ignorieren Benutzer die Dialoge häufig , indem sie die [Eingabetaste] drücken, wodurch sich der Fokus schnell durch das Formular bewegt und schließlich auf der Aktionsschaltfläche für den Eingabedialog landet, was dazu führt, dass sie einen automatischen Ausdruck auslösen .
Die Eingabe besteht aus einem Datumsbereich, einem Routenbereich und einem Kundenauftragsbereich.
Die Eingabe für den Datumsbereich kann nicht automatisch auf "heutiges Datum" eingestellt werden, da häufiges Zurückdrucken erforderlich ist. Außerdem arbeiten die Endbenutzer um Mitternacht, dh ein Datumswechsel macht dies unpraktisch, ohne eine Routine zu manipulieren, die die Änderung automatisch erkennt usw.
Die Eingabe für Routen kann weder fest codiert noch aus bereits versendeten Routen abgeleitet werden, da erneutes Drucken erforderlich ist (siehe oben).
Die Eingabe für Kundenaufträge hat nur beim Drucken einzelner Aufträge oder bestimmter Bereiche eine Bedeutung.
Ehrlich gesagt gibt es also keine praktische Möglichkeit, Eingaben zu validieren .
Die Aktionsschaltfläche, die den Druck auslöst, kann nicht blockiert werden. Vorschläge, einen Blockierungsdialog vor den Benutzer zu stellen, werden ignoriert. Es steht mir nicht frei zu diskutieren, warum dies keine Option ist, außer dass das Konzept bereits an anderer Stelle auf der Website (aus einem anderen Blickwinkel) diskutiert wurde und abgelehnt wurde.
Das Blockieren von Ausdrucken, wenn alle Eingaben leer sind, wurde als Entwurfsentscheidung abgelehnt, da die Software dies als Funktion berücksichtigen muss .
Die Benutzer
Die Benutzer wurden wiederholt aufgefordert, dies nicht zu tun. Sie ignorieren diesen Rat häufig. Das Auslösen dieses unglücklichen Ereignisses wird von ihren Vorarbeitern / Managern nicht angesprochen, daher besteht kein Druck, das Verhalten zu beenden.
Die Organisation
Ich habe kein Mitspracherecht im Workflow, nur die Änderung vorhandener Softwarekomponenten, die von diesem Workflow betroffen sind.
Der Verkäufer
Der Anbieter bezieht das Paket als benutzerdefinierte Installation vom ursprünglichen Softwareanbieter. Der Anbieter verlangt, dass alle Codeänderungen zur Integration in seine Codebasis an ihn zurückgesendet werden. Wesentliche Änderungen an der Architektur führen aufgrund der umfangreichen Anpassungen zu höheren zukünftigen Kosten bei Versionsmigrationen. In einigen Fällen haben mir die Programmierer sogar gesagt, dass sie so große Änderungen völlig ignorieren und tun werden, was sie wollen.
Die Software
Ich habe kein Mitspracherecht bei der Auswahl oder Installation der Software, daher kommt ein Plattformwechsel nicht in Frage.
In Bezug auf die Umgebung der Software ist jede gedruckte Rechnung ein einzelner Anruf. Es gibt keine Batch-Druckfunktion, und aufgrund der Integration der Druckfunktion in das System (und einiger sprachlicher Besonderheiten) ist es nicht möglich, einen Batch-Wrapper um diese API zu erstellen. Um dies abzurunden, ruft dieser Teil des Programms ein anderes Programm auf, das den Rechnungsdruck ausführt, der wiederum die API zum Drucken eines Berichts aufruft, die eine einzelne Rechnung druckt. Schreckliches Design, ich weiß.
Eingabeformulare sind eine seltsame Kombination eines Formularkopfs, der keine Eingabefelder enthält, aber andere GUI-Elemente enthalten kann. Eingabefelder werden zur Laufzeit definiert.
Das Ziel
Die Software verhindert, dass die Benutzer fälschlicherweise alle Unterlagen drucken.
Wie würden Sie dieses Problem lösen?