Mehr

Fehler beim Konfigurieren des Oracle-Datenspeichers in GeoServer

Fehler beim Konfigurieren des Oracle-Datenspeichers in GeoServer


Ich möchte einen Oracle-Datenspeicher in Geoserver konfigurieren, also habe ich gt2-oracle-spatial-2.3.1.jar und ojdbc14.jar in die GeoServer-Webanwendung kopiert (im Ordner WEB-IF/lib); dann habe ich neu gestartet und versucht, einen neuen Datenspeicher zu erstellen; Ich habe " Oracle NG - Oracle Database" gefunden, aber wenn ich auf Speichern klicke, habe ich diesen Fehler im Protokoll:

Verursacht durch: java.lang.ClassNotFoundException: org.geotools.data.DataStoreFactorySpi$Param at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:366) at org.mortbay .jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:337)… 102 mehr

Wo finde ich die JAR-Datei für diese Datei?


Sie sollten auf die Geoserver-Downloadseite http://geoserver.org/download/ gehen. Wählen Sie dort die von Ihnen verwendete Version des Geoservers aus. Unten auf der Seite sehen Sie die Erweiterungen. Gelistet unter Vektorformate, finden Sie das Orakel. Laden Sie die ZIP-Datei herunter, sie enthält die Abhängigkeiten, die Sie in das WEB-INF/lib-Verzeichnis kopieren müssen, einschließlich des entsprechenden Geotools-Oracle-Plugins.


SELBST-OPTIMIERENDE ETIKETTIERPLATTFORM

Systeme, Methoden und Produkte zur Optimierung eines Machine Learning Labelers. Bei einem Verfahren werden Labeling-Anfragen empfangen und entsprechende Label-Inferenzen unter Verwendung eines Champion-Modells erzeugt. Ein Teil der Kennzeichnungsanforderungen und entsprechenden Schlussfolgerungen wird zur Verwendung als Trainingsdaten ausgewählt, und Kennzeichnungen werden für die ausgewählten Anforderungen erzeugt, wodurch entsprechende erweiterte Ergebnisse erzeugt werden. Ein erster Teil der erweiterten Ergebnisse wird als Trainingsdaten einem Experimentkoordinator bereitgestellt, der dann ein oder mehrere Challenger-Modelle unter Verwendung dieser erweiterten Ergebnisse trainiert. Ein zweiter Teil der erweiterten Ergebnisse wird als Bewertungsdaten an einen Modellbewerter geliefert, der die Leistung der Challenger-Modelle und des Champion-Modells bewertet. Wenn eines der Challenger-Modelle eine höhere Leistung als das Champion-Modell aufweist, stuft der Modellbewerter das Challenger-Modell als Ersatz für das Champion-Modell ein.

Diese Anmeldung beansprucht einen Prioritätsvorteil aus der vorläufigen US-Anmeldung Nr. 62/950.699, eingereicht am 19. Dezember 2019, die hierin durch Bezugnahme eingeschlossen ist, als ob sie in ihrer Gesamtheit dargelegt wäre.

Techniken des maschinellen Lernens (ML) ermöglichen es einer Maschine zu lernen, automatisch und genau Vorhersagen basierend auf historischen Beobachtungen zu treffen. Das Trainieren eines ML-Algorithmus umfasst das Versorgen des ML-Algorithmus mit Trainingsdaten, um ein ML-Modell zu erstellen. Die Genauigkeit eines ML-Modells hängt von der Quantität und Qualität der Trainingsdaten ab, die zum Erstellen des ML-Modells verwendet werden.

Rund um die Aufbereitung und Kennzeichnung von Trainingsdaten hat sich eine ganze Branche entwickelt. Eine Reihe von Unternehmen stellt Plattformen bereit, über die Beispieldaten zur manuellen Kennzeichnung an menschliche Benutzer verteilt werden. Dem Kunden können die Etikettierungsdienste basierend auf der für die Etikettierung der Daten erforderlichen menschlichen Expertise, der Anzahl der Runden der menschlichen Überprüfung, die verwendet werden, um die Genauigkeit der gekennzeichneten Daten sicherzustellen, und anderen Faktoren in Rechnung gestellt werden. Die Notwendigkeit, die Trainingsdaten zu kennzeichnen, kann erhebliche Kosten verursachen, sowohl in Bezug auf Zeit als auch Geld. Daher ist ein neues Paradigma für die Kennzeichnung von Daten erforderlich.

Die vorliegende Offenbarung beschreibt Systeme, Verfahren und Produkte zum Optimieren der Leistung eines Etikettiersystems, um effizient Etiketten mit hoher Zuverlässigkeit herzustellen. Diese Ausführungsformen umfassen aktive Lernkomponenten, hochgradig zuverlässige Kennzeichnungskomponenten und Experimentier- und Trainingskomponenten, die in Kombination verwendet werden, um die Qualität der von dem System erzeugten Kennzeichnungen zu optimieren, während die Kosten der Erzeugung dieser Kennzeichnungen reduziert werden.

Eine Ausführungsform umfasst ein Verfahren zum Optimieren eines Machine Learning (ML) Labelers, der eine Vielzahl von Labeling-Anfragen empfängt, von denen jede ein zu kennzeichnendes Datenelement enthält. Für jede der Kennzeichnungsanforderungen wird ein entsprechendes Inferenzergebnis durch ein aktuelles ML-Modell eines iterativen Modelltrainingssystems erzeugt. Das Inferenzergebnis umfasst eine Label-Inferenz, die dem Datenelement entspricht, und eine oder mehrere zugehörige selbstbewertete Konfidenzmetriken. Basierend auf den generierten Inferenzergebnissen wird mindestens ein Teil der Kennzeichnungsanforderungen ausgewählt. Die erzeugten Inferenzergebnisse für die ausgewählten Kennzeichnungsanforderungen werden unter Verwendung eines gerichteten Graphen von Kennzeichnungselementen mit einem oder mehreren Kennzeichnungselementen korrigiert, wobei der gerichtete Graph ein verbessertes Ergebnis für jede der Kennzeichnungsanforderungen in dem ausgewählten Abschnitt basierend auf zugeordneten Qualitäts- und Kostenmetriken erzeugt. Das erweiterte Ergebnis enthält ein Label, das dem Datenelement entspricht, wobei das Label einen Ziel-Konfidenzschwellenwert erfüllt. Zumindest ein erster Teil der erweiterten Ergebnisse als Trainingsdaten in einen Trainingsdatenspeicher. Eine oder mehrere Triggereingaben werden überwacht, um Trainingstrigger zu erkennen, und als Reaktion auf das Erkennen des einen oder der mehreren Trainingstrigger wird der erste Teil der erweiterten Ergebnisse einem Experimentkoordinator bereitgestellt, der das ML-Modell iterativ unter Verwendung dieses Teils der erweiterten trainiert Ergebnisse. Mindestens ein zweiter Teil der erweiterten Ergebnisse wird einem Modellbewerter als Bewertungsdaten bereitgestellt. Der Modellbewerter bewertet das ML-Modell unter Verwendung des zweiten Teils der erweiterten Ergebnisse. Als Reaktion auf die Bewertung bestimmt der Modellbewerter, ob das ML-Modell aktualisiert werden soll. Wenn der Modellauswerter feststellt, dass das ML-Modell aktualisiert werden soll, aktualisiert er das ML-Modell.

Eine alternative Ausführungsform umfasst ein Verfahren zum Optimieren eines maschinellen Lern-(ML)-Kennzeichners, bei dem Kennzeichnungsanforderungen empfangen werden und entsprechende Kennzeichnungsfolgerungen für jede Kennzeichnungsanforderung unter Verwendung eines Championmodells erzeugt werden. Ein Teil der Kennzeichnungsanforderungen wird zur Verwendung als Trainingsdaten basierend auf den erzeugten Kennzeichnungsschlussfolgerungen ausgewählt, und es werden korrigierte Kennzeichnungen erzeugt, um ein verbessertes Ergebnis für jede der ausgewählten Anforderungen zu erzeugen. Ein erster Teil der erweiterten Ergebnisse wird als Trainingsdaten einem Experimentkoordinator bereitgestellt, der ein oder mehrere Challenger-Modelle unter Verwendung dieser erweiterten Ergebnisse trainiert. Nachdem die Challenger-Modelle trainiert wurden, wird ein zweiter Teil der erweiterten Ergebnisse einem Modellbewerter bereitgestellt, der die Leistung der Challenger-Modelle und des Champion-Modells unter Verwendung dieser Daten bewertet. Wenn bestimmt wird, dass eines der Herausforderermodelle eine höhere Leistung als das Championmodell aufweist (z. B. wenn das Herausforderermodell einen Satz von Bewertungskriterien erfüllt, die eine höhere Leistung anzeigen), fördert der Modellbewerter das Herausforderermodell, um das Championmodell zu ersetzen.

In einigen Ausführungsformen umfasst das Verfahren ferner das Konditionieren jeder der Labeling-Anforderungen vor dem Erzeugen der entsprechenden Label-Inferenz und das Dekonditionieren der Labeling-Anforderung und der entsprechenden Label-Inferenz, nachdem die Label-Inferenz erzeugt wurde. Das Konditionieren der Kennzeichnungsanforderung kann das Übersetzen der Kennzeichnungsanforderung von einer den Kennzeichnungsanforderungen zugeordneten Datendomäne in eine dem Championmodell zugeordnete Datendomäne umfassen. Umgekehrt kann das Dekonditionieren der Kennzeichnungsanforderung und der entsprechenden Schlussfolgerung das Übersetzen der Kennzeichnungsanforderung und der Schlussfolgerung aus dem Datenbereich des Championmodells in den Datenbereich der Kennzeichnungsanforderungen umfassen.

In einigen Ausführungsformen umfasst das Auswählen des Teils der Kennzeichnungsanforderungen zur Verwendung als Trainingsdaten das Anwenden einer aktiven Lernstrategie, die gemäß der aktiven Lernstrategie diejenigen der Kennzeichnungsanforderungen identifiziert, die für das Training nützlicher sind als ein Rest der Kennzeichnungsanforderungen.

In einigen Ausführungsformen umfasst das Verfahren ferner das Generieren eines Vertrauensindikators durch das Championmodell für jede der Kennzeichnungsanforderungen, die mit der entsprechenden Kennzeichnungsschlussfolgerung verknüpft ist, und das Auswählen des Teils der Kennzeichnungsanforderungen zur Verwendung als Training kann das Identifizieren eines Abschnitts mit geringerer Konfidenz umfassen der Etikettierungsanfragen und ein Teil mit höherer Konfidenz der Etikettierungsanfragen.

In einigen Ausführungsformen umfasst das Verfahren ferner das Speichern des ersten Teils der erweiterten Ergebnisse in einem Trainingsdatenspeicher, das Überwachen von einem oder mehreren Triggerparametern, um ein Triggerereignis zu erkennen, und als Reaktion auf das Erkennen des Triggerereignisses, Bereitstellen mindestens eines Teils der erweiterten Ergebnisse als Trainingsdaten an einen Experimentkoordinator.

Der Experimentkoordinator kann dann als Reaktion auf das Erkennen des Triggerereignisses ein oder mehrere Challenger-Modelle generieren, was das Konfigurieren eines entsprechenden eindeutigen Satzes von Hyperparametern für jedes der Challenger-Modelle und das Trainieren jedes der einzigartig konfigurierten Challenger-Modelle mit einem Teil von . umfassen kann die erweiterten Ergebnisse. Das Triggerereignis kann eine verstrichene Zeit seit einem vorhergehenden Triggerereignis, eine Akkumulation einer vorbestimmten Anzahl von erweiterten Ergebnissen oder verschiedene andere Arten von Ereignissen umfassen. Die Triggerparameter können eine oder mehrere Qualitätsmetriken umfassen.

Die erweiterten Ergebnisse können konditioniert werden, um sie von einer den Kennzeichnungsanforderungen zugeordneten Datendomäne in eine dem Experimentkoordinator zugeordnete Datendomäne zu übersetzen.

Eine alternative Ausführungsform umfasst einen ML-Markierer, der einen Datensatzselektor, ein Championmodell, einen Experimentkoordinator und einen Modellbewerter umfasst. Der Datensatzselektor in dieser Ausführungsform ist so konfiguriert, dass er Kennzeichnungsanforderungen empfängt und sie dem Championmodell zur Verfügung stellt, das eine entsprechende Kennzeichnungsschlussfolgerung für jede der Kennzeichnungsanforderungen erzeugt. Der Datensatzselektor ist so konfiguriert, dass er einen Teil der Kennzeichnungsanforderungen zur Verwendung als Trainingsdaten basierend auf den erzeugten Kennzeichnungsschlussfolgerungen auswählt. Der ML-Etikettierer ist so konfiguriert, dass er für jede der Etikettierungsanforderungen in dem ausgewählten Abschnitt ein entsprechendes Etikett mit hoher Vertrauenswürdigkeit erzeugt, wodurch entsprechende erweiterte Ergebnisse erzeugt werden. Der Experimentkoordinator ist so konfiguriert, dass er einen ersten Teil der erweiterten Ergebnisse als Trainingsdaten empfängt und ein oder mehrere Challenger-Modelle unter Verwendung dieses Teils der erweiterten Ergebnisse trainiert. Der Modellbewerter ist dazu konfiguriert, einen zweiten Teil der erweiterten Ergebnisse als Bewertungsdaten zu empfangen und die Herausforderermodelle und das Championmodell unter Verwendung des zweiten Teils der erweiterten Ergebnisse zu bewerten. Als Reaktion auf die Feststellung, dass eines der einen oder mehreren Challenger-Modelle eine bessere Leistung als das Champion-Modell aufweist (z. B. einen Satz von Leistungsbewertungskriterien erfüllt, wird der ML-Labeler konfiguriert, um das Challenger-Modell zu fördern, um das Champion-Modell zu ersetzen ML-Etikettierer können Komponenten sein, die Funktionen ausführen, wie oben in Verbindung mit dem beispielhaften Verfahren beschrieben.

Eine andere alternative Ausführungsform umfasst ein Computerprogrammprodukt, das ein nicht flüchtiges computerlesbares Medium umfasst, das Anweisungen speichert, die von einem oder mehreren Prozessoren ausgeführt werden können, um wie oben beschrieben durchzuführen.

Es können auch zahlreiche alternative Ausführungsformen möglich sein.

Diese und andere Aspekte der Offenbarung werden besser erkannt und verstanden, wenn sie in Verbindung mit der folgenden Beschreibung und den begleitenden Zeichnungen betrachtet werden. Es versteht sich jedoch, dass die folgende Beschreibung, während sie verschiedene Ausführungsformen der Offenbarung und zahlreiche spezifische Details davon angibt, zur Veranschaulichung und nicht zur Einschränkung gegeben wird. Viele Ersetzungen, Modifikationen, Hinzufügungen oder Neuanordnungen können innerhalb des Schutzumfangs der Offenbarung vorgenommen werden, ohne von deren Geist abzuweichen, und die Offenbarung umfasst alle derartigen Ersetzungen, Modifikationen, Hinzufügungen oder Neuanordnungen.

KURZE BESCHREIBUNG DER ZEICHNUNGEN

Die Zeichnungen, die diese Beschreibung begleiten und einen Teil davon bilden, sind enthalten, um bestimmte Aspekte der Offenbarung darzustellen. Es sei darauf hingewiesen, dass die in den Zeichnungen dargestellten Merkmale nicht unbedingt maßstabsgetreu gezeichnet sind. Ein vollständigeres Verständnis der Offenbarung und der Vorteile davon kann durch Bezugnahme auf die folgende Beschreibung in Verbindung mit den beigefügten Zeichnungen erlangt werden, in denen gleiche Bezugszeichen gleiche Merkmale angeben und wobei:

FEIGE. 1 ist eine schematische Darstellung einer Ausführungsform einer Kennzeichnungsumgebung

FEIGE. 2 ist eine schematische Darstellung einer Ausführungsform eines Etikettierers

FEIGE. 3 ist eine schematische Darstellung einer Detailansicht einer Ausführungsform eines Etikettierers

FEIGE. 4 ist eine schematische Darstellung einer Ausführungsform der Verarbeitung durch einen menschlichen Etikettierer

FEIGE. 5 ist eine schematische Darstellung einer Ausführungsform eines ML-Etikettierers

FIG. 6A und 6B sind schematische Darstellungen einer Ausführungsform einer ML-Kennzeichnungsarchitektur und eines Verfahrens zum Optimieren der Leistung eines Kennzeichnungsmodells in der Architektur

FEIGE. 7 ist eine schematische Darstellung einer Konditionierungspipeline und einer Kernel-Logik für einen Kennzeichner für eine Ausführungsform eines Bildklassifizierungskennzeichners

FEIGE. 8 ist eine schematische Darstellung einer Ausführungsform eines Etikettierers, der konfiguriert ist, um eine Eingabeanforderung zu zerlegen

FEIGE. 9 ist eine schematische Darstellung einer anderen Ausführungsform eines Etikettierers, der konfiguriert ist, um eine Eingabeanforderung zu zerlegen

FEIGE. 10 ist eine schematische Darstellung einer Ausführungsform eines Etikettierers, der konfiguriert ist, um einen Ausgaberaum zu zerlegen

FEIGE. 11A , FIG. 11B , FIG. 11C , FIG. 11D veranschaulichen eine Ausführungsform von Plattformdiensten und -flüssen

FEIGE. 12 ist eine schematische Darstellung einer Ausführungsform zum Konfigurieren einer Etikettierplattform

FEIGE. 13A und FIG. 13B sind schematische Darstellungen einer deklarativen Konfiguration für eine Ausführungsform eines ML-Etikettierers

FEIGE. 14 ist eine schematische Darstellung einer deklarativen Konfiguration für eine Ausführungsform eines menschlichen Etikettierers

FEIGE. 15 ist eine schematische Darstellung einer deklarativen Konfiguration für eine Ausführungsform eines CDW-Etikettierers

FEIGE. 16 ist eine schematische Darstellung einer Ausführungsform zum Konfigurieren einer Etikettierungsplattform.

DETAILLIERTE BESCHREIBUNG

Ausführungsbeispiele und die verschiedenen Merkmale und vorteilhaften Einzelheiten davon werden ausführlicher unter Bezugnahme auf die nicht einschränkenden Ausführungsbeispiele erläutert, die in den beigefügten Zeichnungen dargestellt und in der folgenden Beschreibung detailliert sind. Beschreibungen bekannter Ausgangsmaterialien, Verarbeitungstechniken, Komponenten und Ausrüstung werden weggelassen, um die Ausführungsformen nicht unnötig im Detail zu verschleiern. Es versteht sich jedoch, dass die detaillierte Beschreibung und die spezifischen Beispiele nur zur Veranschaulichung und nicht zur Einschränkung angegeben werden. Verschiedene Ersetzungen, Modifikationen, Hinzufügungen und/oder Neuanordnungen innerhalb des Geistes und/oder Umfangs des zugrunde liegenden erfinderischen Konzepts werden Fachleuten aus dieser Offenbarung ersichtlich.

Hierin beschriebene Ausführungsformen stellen eine umfassende Datenkennzeichnungsplattform zum Kommentieren von Daten bereit. Die Plattform umfasst Etikettierer mit menschlichem und maschinellem Lernen (ML), um eine Vielzahl von Etikettierungsaufgaben auszuführen. Ausführungsformen der Plattform und ihrer Arbeitsabläufe sind für einzigartige Kennzeichnungsanforderungen konfigurierbar. Die Plattform unterstützt Workflows, in denen maschinelles Lernen die menschliche Intelligenz erweitert. Die Plattform ist auf eine Vielzahl von Bereichen des maschinellen Lernens erweiterbar, darunter Bildverarbeitung, Videoverarbeitung, Verarbeitung natürlicher Sprache, Entitätsauflösung und andere Bereiche des maschinellen Lernens.

Gemäß einem Aspekt der vorliegenden Offenbarung ermöglicht die Kennzeichnungsplattform einem Benutzer (einem „Konfigurierer“), Anwendungsfälle zu konfigurieren, wobei jeder Anwendungsfall die Konfiguration der Plattform beschreibt 102 zur Bearbeitung von Kennzeichnungsanfragen. Die Anwendungsfallkonfiguration kann zum Beispiel die Spezifizierung der Kernlogik des Labeler-Kerns und der zu verwendenden Konditionierungskomponenten, die Konfiguration aktiver Lernaspekte der Plattform, die Konfiguration der Bedingungslogik (die Fähigkeit, den Fluss der Beurteilungen während der Phasen zu steuern), die Konfiguration der Labeling-Anfrage umfassen Verteilung und Konfiguration anderer Aspekte der Plattform 102.

Gemäß einem weiteren Aspekt der vorliegenden Offenbarung stellt die Kennzeichnungsplattform einen hochflexiblen Mechanismus bereit, um eine Kennzeichnungsplattform für einen Anwendungsfall zu konfigurieren, bei dem der Anwendungsfall verwendet wird, um einen Verarbeitungsgraphen zu implementieren, der einen oder mehrere menschliche Kennzeichner, ML-Kennzeichner und/oder andere Etikettierer. Wenn eine Aufgabe an einen menschlichen Spezialisten verteilt wird, kann die Plattform die Verarbeitung an einem Knoten des Graphen stoppen, um auf eine Antwort des menschlichen Spezialisten zu warten, und dann die Verarbeitung basierend auf der Antwort fortsetzen. In einigen Fällen kann eine Konfiguration einen Verarbeitungsgraphen definieren, in dem die gekennzeichneten Daten, die von einem ML-Etikettierer oder menschlichen Etikettierer (oder einem anderen Etikettierer in dem Verarbeitungsgraphen) bereitgestellt werden, als Trainingsdaten in einen ML-Etikettierer des Verarbeitungsgraphen zurückgeschleift werden.

Die Konfiguration kann in jedem geeigneten Format angegeben werden. In einigen Ausführungsformen wird zumindest ein Teil der Konfiguration unter Verwendung einer deklarativen domänenspezifischen Sprache (DSL) ausgedrückt. Somit kann eine Konfiguration unter Verwendung eines deklarativen Modells implementiert werden, das von Menschen lesbar und maschinenlesbar ist, wobei das deklarative Modell die Definition eines Verarbeitungssystems für einen Anwendungsfall bereitstellt.

Gemäß einem anderen Aspekt der vorliegenden Offenbarung beinhaltet die Kennzeichnungsplattform Anwendungsfallvorlagen für verschiedene Arten von Kennzeichnungsproblemen (z. B. Bildklassifizierung, Videoklassifizierung, Verarbeitung natürlicher Sprache, Entitätserkennung usw.). Anwendungsfallvorlagen treffen Annahmen darüber, was in einer Konfiguration für einen Anwendungsfall enthalten sein sollte, und erfordern daher die geringste Eingabe durch den menschlichen Konfigurator. Die Plattform kann eine stärker datengesteuerte und anwendungsorientierte Interaktion mit dem Endbenutzer bieten als bisherige Kennzeichnungsansätze. Zum Beispiel wählt der Endbenutzer gemäß einer Ausführungsform die Art des Problems, das er hat (z. B. Bildklassifizierung, Verarbeitung natürlicher Sprache oder andere von der Plattform unterstützte Problemklasse), stellt Informationen über die Daten bereit, die er bereitstellen wird, definiert a kleine Menge von Einschränkungen (zB Zeit, Kosten, Qualität) und spezifiziert, welche Daten/Etiketten sie zurückbekommen. Gemäß einem Aspekt der vorliegenden Offenbarung kann die Plattform ein deklaratives Modell für einen Anwendungsfall speichern, wobei das deklarative Modell Konfigurationsannahmen umfasst, die durch eine Anwendungsfallvorlage spezifiziert werden, und die relativ kleine Konfigurationsmenge, die vom menschlichen Benutzer bereitgestellt wird.

Gemäß einem anderen Aspekt der vorliegenden Offenbarung umfasst die Plattform Aufgabenverteilungsfunktionalität. Die Aufgabenverteilung kann das Weiterleiten von Labeling-Anfragen/-Aufgaben an Machine-Learning-Labeler oder menschliche Labeler umfassen.Die Routing-Entscheidungen für eine Etikettierungsanfrage/-aufgabe können teilweise auf der aktiven Lernkonfiguration der ML-Etikettierer und der Qualifikation menschlicher Spezialisten basieren. Die Aufgabenverteilung kann auch die dynamische Verteilung von Aufgaben an ML-Beschrifter und menschliche Bezeichner basierend auf Konfidenzen umfassen.

Gemäß einem anderen Aspekt der vorliegenden Offenbarung implementiert die Plattform Qualitätsbewertungsmechanismen, um Labeler-Instanzen zu bewerten.

Gemäß einem anderen Aspekt der vorliegenden Offenbarung implementiert die Kennzeichnungsplattform ein Personalmanagement, einschließlich der Bewertung von Arbeitern im Laufe der Zeit in einem oder mehreren Kompetenzbereichen.

Gemäß einem anderen Aspekt der vorliegenden Offenbarung kann die Kennzeichnungsplattform mit Reputationssystemen interagieren. Reputationssysteme messen und zeichnen die Genauigkeit der Arbeit von Labeler-Instanzen auf und generieren Bewertungen für diese Labeler-Instanzen. Der Bewertungsansatz kann je nach Implementierung von Reputationssystemen variieren. Nicht einschränkende beispielhafte Ausführungsformen des Scorings sind in der zugehörigen vorläufigen Anmeldung Nr. 62/950,699, Anhang 1, Abschnitt III.B.2 Scoring and Measurement Accuracy beschrieben. Die Etikettierungsplattform interagiert mit solchen Reputationssystemen, um (1) Informationen bereitzustellen, einschließlich, aber nicht beschränkt auf die eindeutige Kennung eines Etikettierers, einen Deskriptor für die Art der durchgeführten Etikettierungsaufgabe, das bereitgestellte Etikett des Etikettierers und ein KORREKTES Etikett zum Vergleich und (2 ), um vom Reputationssystem erzeugte Informationen zu konsumieren, einschließlich der Bewertungen für bestimmte Instanzen des Labelerstellers und der Herkunftsbeschreibungen für die Berechnung dieser Bewertungen.

Für das Training und die Inferenz von ML-Modellen stehen viele Plattformen, Frameworks und Algorithmen zur Verfügung. Beispielsweise, aber nicht einschränkend, kann ein ML-Modell in einem DOCKER-Container trainiert werden (z. B. einem DOCKER-Container, der Bibliotheken zum Trainieren eines Modells enthält, oder auf einer Plattform wie AMAZON SAGEMAKER, GOOGLE AUTOML, KUBEFLOW (SAGEMAKER von Amazon Technologies , Inc., AUTOML von Google, DOCKER von Docker, Inc.) Darüber hinaus können verschiedene Modell-Frameworks verwendet werden (z -Mittel, logistische Regression, Support Vector Machines, Bayesian Algorithms, Perceptron, Convolutional Neural Networks. Schließlich gibt es für jede Kombination von Plattform, Framework und Algorithmus viele Datentransformationen und Konfigurationsparameter, die auf den Trainingsprozess mit angewendet werden können das Ziel, die Qualität des trainierten Modells zu erhöhen, die Menge der erforderlichen gekennzeichneten Trainingsdaten zu reduzieren, die für das Training erforderlichen Rechenressourcen zu reduzieren usw. Diese Konfigurationsoptionen werden allgemein als Hyperparameter bezeichnet Es wird oft experimentiert, um optimale Werte zu finden. Das Trainieren eines Modells erfordert in der Regel fundierte Kenntnisse über ML-Plattformen, Frameworks, Algorithmen sowie Datentransformationsoptionen und -techniken sowie Konfigurationsoptionen, die mit all den oben genannten verbunden sind.

Ebenso gibt es mehrere Plattformoptionen für die Verwendung eines Modells für die Inferenz. Darüber hinaus gibt es mehrere Möglichkeiten, mit einem Modell zu interagieren, sobald es trainiert wurde. Einige ML-Modell-APIs unterstützen beispielsweise das Senden von Kennzeichnungsanforderungen nacheinander, während andere APIs Stapel von Kennzeichnungsanforderungen unterstützen.

Somit stehen, wie ersichtlich ist, viele Optionen zum Trainieren von ML-Modellen oder Verwenden von ML-Modellen zur Inferenz zur Verfügung. Hierin beschriebene Ausführungsformen stellen eine Kennzeichnungsplattform bereit, die verschiedene ML-Integrationen (Plattformen, Frameworks oder Algorithmen) nutzen kann. Die Kennzeichnungsplattform abstrahiert den Konfigurationsprozess, so dass ein Endbenutzer eine Trainingskonfiguration für ein ML-Modell spezifizieren kann, die agnostisch gegenüber der Plattform, dem Framework oder dem Algorithmus ist, der für Training und Inferenz verwendet wird.

Wie oben erörtert, kann die Kennzeichnungsplattform einen Satz von Anwendungsfallvorlagen bereitstellen, wobei jede Anwendungsfallvorlage einem zu lösenden Kennzeichnungsproblem entspricht (z. B. „Bildklassifizierung“, „Videobildklassifizierung“ usw.) und eine ML' enthält Konfiguration des Etikettierers. Der Endbenutzer einer Kennzeichnungsplattform kann ein Kennzeichnungsproblem auswählen (z. B. eine Anwendungsfallvorlage auswählen), eine minimale Trainingskonfiguration bereitstellen und entsprechend dem Anwendungsfall zu kennzeichnende Daten bereitstellen. Die Anwendungsfallvorlage kann angeben, welche ML-Plattform, welches ML-Framework, welcher ML-Algorithmus, welche Datentransformationen und welche Hyperparameterwerte zum Trainieren eines ML-Modells für einen Problemtyp verwendet werden sollen. In einigen Fällen spezifiziert die Etikettierungsplattform a priori die Plattformen, Frameworks, Algorithmen, Datentransformationen und Hyperparameterwerte, die zum Trainieren von ML-Modellen für ein Etikettierungsproblem verwendet werden. In anderen Ausführungsformen kann die Kennzeichnungsplattform eine bestimmte Anzahl von zu verwendenden Plattformen, Frameworks, Algorithmen, Datentransformationen und Hyperparameterwerten spezifizieren, und die Kennzeichnungsplattform kann mit Daten experimentieren, die vom Endbenutzer bereitgestellt werden, um die beste Kombination zu finden, die für a . zu verwenden ist Anwendungsfall.

Zur Laufzeit richtet die Labeling-Plattform die angegebene ML-Plattform, das Framework, den Algorithmus, die Datentransformationen und die Hyperparameterwerte ein, um ein ML-Modell unter Verwendung der vom Endbenutzer bereitgestellten oder von der Plattform erzeugten Trainingsdaten zu trainieren. Der Endbenutzer muss die Details dieser Trainingselemente nicht kennen. Stattdessen verwendet die Etikettierungsplattform die von der Anwendungsfallvorlage bereitgestellte Konfiguration sowie Experimente, um ein qualitativ hochwertiges trainiertes Modell für den Anwendungsfall dieses Kunden zu erstellen.

Ausführungsformen bieten den Vorteil, dass der Endbenutzer nur eine kleine Menge an Konfigurationsinformationen für die Kennzeichnungsplattform angeben muss, um mehrere Modelle für einen Anwendungsfall zu trainieren, wobei möglicherweise mehrere ML-Plattformen, Frameworks, Algorithmen, Datentransformationen und Hyperparameterwerte verwendet werden. Die Etikettierungsplattform kann die mehreren Modelle basierend auf der Konfiguration für den Anwendungsfall kontinuierlich neu trainieren.

Diese und andere Aspekte einer Kennzeichnungsplattform können aus der folgenden Beschreibung besser verstanden werden.

FEIGE. 1 ist eine schematische Darstellung einer Ausführungsform einer Umgebung 100 zur Kennzeichnung von Trainingsdaten. In der dargestellten Ausführungsform ist die Kennzeichnungsumgebung 100 umfasst ein Etikettierplattformsystem, das über ein Netzwerk gekoppelt ist 175 zu verschiedenen Computergeräten. Netzwerk 175 umfasst beispielsweise ein drahtloses oder drahtgebundenes Kommunikationsnetz, das Internet oder ein Weitverkehrsnetz (WAN), ein lokales Netz (LAN) oder jede andere Art von Kommunikationsverbindung.

Beschriftungsplattform 102 auf einem Computer – zum Beispiel einem oder mehreren Servern – ausgeführt wird, wobei ein oder mehrere Prozessoren Anweisungen ausführen, die auf einem oder mehreren computerlesbaren Medien enthalten sind, wobei die Anweisungen konfiguriert sind, um zumindest einen Teil der mit Ausführungsformen der vorliegenden Erfindung verbundenen Funktionalität auszuführen. Diese Anwendungen können eine oder mehrere Anwendungen (Anweisungen, die auf einem computerlesbaren Medium enthalten sind) umfassen, die so konfiguriert sind, dass sie eine oder mehrere Schnittstellen implementieren 101 von Etikettierplattform genutzt 102 um Daten von ML-Plattformsystemen zu sammeln oder Daten an diese bereitzustellen 130, Human Labeler Computersysteme 140, Client-Computersysteme 150, oder andere Computersysteme. Es versteht sich, dass die jeweilige Schnittstelle 101 die in einem bestimmten Kontext verwendet wird, kann von der Funktionalität abhängen, die von der Kennzeichnungsplattform implementiert wird 102, die Art des Netzwerks 175 verwendet werden, um mit einer bestimmten Entität zu kommunizieren, die Art der zu erhaltenden oder darzustellenden Daten, das Zeitintervall, in dem Daten von den Entitäten erhalten werden, die Arten von Systemen, die bei den verschiedenen Entitäten verwendet werden usw. Somit können diese Schnittstellen z B. Webseiten, Webdienste, eine Dateneingabe- oder Datenbankanwendung, in die Daten von einem Betreiber eingegeben oder auf andere Weise darauf zugegriffen werden kann, APIs, Bibliotheken oder andere Arten von Schnittstellen, die in einem bestimmten Kontext verwendet werden sollen.

Im dargestellten Ausführungsbeispiel ist die Etikettierplattform 102 umfasst eine Reihe von Diensten, darunter einen Konfigurationsdienst 103, Eingabedienst 104, gerichteter Graphendienst 105, vertrauensorientierter Workflow-Service (CDW) 106, Scoring-Service 107, ML-Plattformdienst 108, Dispatcher-Service 109 und Ausgabedienst 115. Beschriftungsplattform 102 enthält außerdem die Kernlogik des Etikettierers 111 für mehrere Typen von Etikettierern und Konditionierungskomponenten 112 für verschiedene Arten der Datenaufbereitung. Wie unten diskutiert, ist die Kernlogik des Labelers 111 kombinierbar mit Konditionierungskomponenten 112 Etikettierer erstellen 110.

Beschriftungsplattform 102 verwendet einen Datenspeicher 114 betreibbar, um erhaltene Daten, verarbeitete Daten, die während des Betriebs bestimmt wurden, und Regeln/Modelle zu speichern, die auf erhaltene Daten oder verarbeitete Daten angewendet werden können, um weiterverarbeitete Daten zu erzeugen. Datenspeicher 114 kann eine oder mehrere Datenbanken, Dateisysteme, Kombinationen davon oder andere Datenspeicher umfassen. In einer Ausführungsform ist Datenspeicher 114 enthält Konfigurationsdaten 116, die eine Vielzahl von Konfigurationsdaten enthalten können, einschließlich, aber nicht beschränkt auf Konfigurationsdaten zum Konfigurieren des gerichteten Graphendienstes 105, Etikettierer 110 und andere Aspekte der Kennzeichnungsplattform 102. Konfigurationsdaten 116 kann „Anwendungsfälle“ beinhalten. Ein „Use Case“ ist in diesem Zusammenhang eine Konfiguration für einen Verarbeitungsgraphen. In einigen Ausführungsformen Etikettierungsplattform 102 kann Anwendungsfallvorlagen bereitstellen, um Endbenutzer bei der Definition von Anwendungsfällen zu unterstützen. Im dargestellten Ausführungsbeispiel Etikettierplattform 102 speichert auch Daten, um Modelle für maschinelles Lernen (ML) beizubehalten (Daten 119), Trainingsdaten 122 zum Trainieren von ML-Modellen verwendet 120, unbeschriftete Daten 124 zu kennzeichnen, Vertrauensdaten 128, Qualitätsmetrikdaten 129 (z. B. Scores von Labeler-Instanzen) und andere Daten.

Wie unten erörtert, kann die Kennzeichnungsplattform Daten an menschliche Benutzer verteilen, die gekennzeichnet werden sollen. Zu diesem Zweck ist die Datenkennzeichnungsumgebung 100 umfasst auch Human Labeler Computersysteme 140 die Benutzerschnittstellen (UI) bereitstellen, die menschlichen Benutzern zu kennzeichnende Daten präsentieren und Eingaben empfangen, die die von den menschlichen Benutzern eingegebenen Kennzeichnungen anzeigen.

Beschriftungsplattform 102 nutzt auch ML-Modelle 120 Daten zu beschriften. Beschriftungsplattform 102 kann seine eigene ML-Plattform implementieren oder externe ML-Plattformen oder Drittanbieter-ML-Plattformen nutzen, wie beispielsweise kommerziell erhältliche ML-Plattformen, die auf ML-Plattformsystemen gehostet werden 130. Daher ist die Datenkennzeichnungsumgebung 100 umfasst eine oder mehrere ML-Plattformen, in denen ML-Modelle 120 erstellt, trainiert und eingesetzt werden können. Beschriftungsplattform 102 kann zu kennzeichnende Daten an eine oder mehrere ML-Plattformen senden, damit Daten von einem oder mehreren ML-Modellen gekennzeichnet werden können 120.

Client-Computersysteme 150 Bereitstellung von Schnittstellen, um Endbenutzern, wie Agenten oder Kunden des Unternehmens, das die Kennzeichnungsplattform bereitstellt, zu ermöglichen 102, um Anwendungsfälle zu erstellen und Eingabedaten bereitzustellen. Gemäß einer Ausführungsform können Endbenutzer Anwendungsfälle definieren, wobei ein Anwendungsfall ein Satz von Konfigurationsinformationen zum Konfigurieren der Plattform ist 102 um nicht gekennzeichnete Daten zu verarbeiten 124. Ein Anwendungsfall kann beispielsweise einen Endpunkt zum Hochladen von Datensätzen, einen Endpunkt, von dem gekennzeichnete Datensätze heruntergeladen werden können, einen Endpunkt, von dem Ausnahmen heruntergeladen werden können, eine Liste von Ausgabelabels, Merkmale der nicht gekennzeichneten Daten (z. B. Medienmerkmale) , wie Größe, Format, Farbraum), Pipelines (z. B. Datenvalidierungs- und Vorbereitungspipelines), Merkmale des maschinellen Lernens (z. B. ML-Modelltypen, Modellebenenkonfiguration, aktive Lernkonfiguration, Trainingsdatenkonfiguration), vertrauensorientierte Workflow-Konfiguration ( B. Ziel-Konfidenzschwelle, Bestandteilskennzeichnungen, menschliches Fachpersonal, Aufgabenvorlagen für menschliche Eingaben), Kosten- und Qualitätsbeschränkungen oder andere Informationen. Gemäß einigen Ausführungsformen wird zumindest ein Teil eines Anwendungsfalls als deklaratives Modell des Anwendungsfalls beibehalten, wobei das deklarative Modell einen Verarbeitungsgraphen (Bezeichnungsgraphen) für den Anwendungsfall auf einer logischen Ebene beschreibt. Plattform 102 kann eine Vielzahl von Anwendungsfällen unterstützen.

In Betrieb, Beschriftungsplattform 102 implementiert einen Anwendungsfall, um die Daten zu kennzeichnen. Der Anwendungsfall kann beispielsweise auf eine Datenquelle (wie eine Datenbank, Datei, einen Cloud-Computing-Container usw.) verweisen und Konfigurationen für Etikettierer zum Etikettieren der Daten angeben. Gezielter Grafikservice 105 verwendet die Konfigurationen für Etikettierer und implementiert einen gerichteten Graphen von Etikettierern 110 (z. B. um den Anwendungsfall zu implementieren), um die Daten zu kennzeichnen. In einigen Fällen werden die Labeler in einem CDW implementiert, um die Daten zu kennzeichnen und gekennzeichnete Ergebnisdaten zu erzeugen 126, wobei der Workflow ein oder mehrere ML-Modelle und einen oder mehrere menschliche Benutzer umfasst, um die Daten zu kennzeichnen. Das CDW kann selbst als gerichteter Graph implementiert werden.

Während der Ausführung eines Graphen kann das gleiche zu kennzeichnende Datenelement (z. B. Bild, Video, Word-Dokument oder eine andere zu kennzeichnende diskrete Einheit) an eine oder mehrere ML-Kennzeichnungsplattformen gesendet werden, um von einem oder mehreren ML-Modellen verarbeitet zu werden 120 und an ein oder mehrere Computersysteme zur Kennzeichnung von Menschen 140 von einem oder mehreren menschlichen Benutzern gekennzeichnet werden. Basierend auf den Etiketten, die für das Datenelement von einem oder mehreren Etikettierern ausgegeben wurden 110, kann der Workflow ein beschriftetes Endergebnis ausgeben.

Die Grundbausteine ​​des gerichteten Graphen, der vom gerichteten Graphendienst implementiert wird 105 sind „Etikettierer“. Wie unten erörtert, umfassen einige Beispiele für Labeler, ohne darauf beschränkt zu sein, Labeler für ausführbaren Code, von Drittanbietern gehostete Endpunkt-Labeler, ML-Labeler und Human-Labeler und CDW-Labeler.

Unter Bezugnahme auf FIG. 2 , Etikettierer (z. B. Etikettierer 200) nehmen Sie Eingaben entgegen und reichern Sie die Eingabe mit Labels an, indem Sie eine oder mehrere Labeling-Instanzen verwenden 201. Ein Eingabeelement kann man sich als Kennzeichnungsanforderung oder Frage vorstellen. Anders ausgedrückt kann eine Kennzeichnungsanforderung ein zu kennzeichnendes Element umfassen (z. B. ein Bild oder eine andere Dateneinheit, die durch den Kennzeichnungsgeber gekennzeichnet werden kann). Ein gekennzeichnetes Ergebnis kann als Antwort auf diese Frage oder als Urteil angesehen werden.

Der Input wird dem Etikettierer über ein Input-Rohr zugeführt 202, und die beschriftete Ausgabe wird in einer Ausgabepipe platziert 204. Eingaben, die der Labeler nicht beschriften kann, werden in eine Ausnahme-Ausgabepipe (Exception-Pipe) platziert. 206. Einige Ausnahmen können wiederherstellbar sein. Diese drei Pipes können sowohl die Daten- als auch die Beschriftungsflusskontrolle übergeben. Jede dieser Pipes kann ein konfigurierbares Schema für erwartete Daten haben.

Eine Kennzeichnungsanforderung kann zugeordnete Flusssteuerungsdaten haben, wie z 200 bearbeitet die Anfrage. Beschriftete Ergebnisse von einem Etikettierer 200 sind das Ergebnis einer konditionierten Etikettieranforderung durch einen Etikettierer 200.

Die Antwort (Ausgabe mit dem Label result) wird durch eine Ausgabekonditionierungspipeline geleitet, wenn eine für den Labeler angegeben ist. Die Label-Ausgabe durch einen Labeler kann viele Formen haben, wie zum Beispiel, aber nicht beschränkt auf: Wertausgabe basierend auf einem Regressionsmodell, ein Klassenlabel, ein Begrenzungsrahmen um ein Objekt in einem Bild, eine Folge von Wörtern, die das . charakterisieren/beschreiben Eingabe (z. B. „Alt-Text“ für Bilder), eine Identifizierung der Segmentierung (z. B. „Aufteilen“ eines Satzes in Subjekt und Prädikat). In einigen Fällen kann ein Labeler auch ein selbstbewertetes Konfidenzmaß für ein Label ausgeben. Etikettierer 200 kann auch verschiedene andere Informationen ausgeben, die dem gekennzeichneten Ergebnis zugeordnet sind, wie beispielsweise die Kennzeichnungsinstanz, die die Kennzeichnungsanforderung verarbeitet hat.

Eine Ausführungsform der internen Struktur eines Etikettierers, wie beispielsweise Etikettierer 200, ist in Fig. 2 dargestellt. 3 . Ein Labeler kann als Wrapper für ausführbaren Code betrachtet werden. In einigen Fällen kann der ausführbare Code von Drittanbietern gehostete Endpunkte aufrufen. Die Konfiguration kann die zu verwendenden Endpunkte, Authentifizierungsinformationen und andere Konfigurationsinformationen angeben, damit der Etikettierer den Endpunkt verwenden kann. In der dargestellten Ausführungsform ist der Kern der Kernlogik des Etikettierers 302 ist von einer Konditionierungsschicht umgeben 304, die Eingabe-/Ausgabedaten von einer externen Domäne in die native Datendomäne des Kernels übersetzt. Es versteht sich, dass unterschiedliche Labeler unterschiedliche Kernel-Kernlogiken haben können 302 und Konditionierungsschichten 304. Einige Typen von Etikettierern können zusätzliche Schichten umfassen.

In einer Ausführungsform ist Plattform 102 umfasst menschliche Etikettierer und ML-Etikettierer. Humane Labeler und ML-Marker können zu CDWs kombiniert werden, die auch als eine Art Labeler angesehen werden können. Die Kernel-Kernlogik 302 eines menschlichen Labelers ist so konfiguriert, dass Labeling-Anfragen an einzelne menschliche Spezialisten verteilt werden, während die Kernel-Kernlogik 302 der ML-Etikettierer ist so konfiguriert, dass ML-Modelle zum Etikettieren von Daten genutzt werden. Als solche kann jeder menschliche Labeler und jeder ML-Marker als Schnittstelle zu einem Pool von einer oder mehreren Labeler-Instanzen dahinter betrachtet werden. Ein Labeler ist dafür verantwortlich, Labeling-Anfragen an bestimmte Labeler-Instanzen innerhalb seines Pools weiterzuleiten. Für einen menschlichen Kennzeichner sind die Kennzeichnerinstanzen einzelne Menschen, die über eine Benutzerschnittstelle arbeiten (z. B. menschliche Spezialisten). Bei einem ML-Labeler sind die Labeler-Instanzen ML-Modelle, die in Modellplattformen bereitgestellt werden. Die Labeler-Instanzen können unterschiedliche Vertrauensmetriken, Zeit- und Geldkosten haben.

Übersetzung durch Konditionierungsschicht 304 kann erforderlich sein, da die Datendomäne außerhalb der Kernel-Kernlogik liegt 302 kann sich von der Datendomäne des Kernels unterscheiden. In einer Ausführungsform kann die externe Datendomäne beispielsweise anwendungsfallspezifisch und technologieunabhängig sein, während die Datendomäne des Kernels technologiespezifisch und anwendungsfallunabhängig sein kann. Die Konditionierungsschicht 304 kann auch eine Validierung für eingehende Daten durchführen. Beispielsweise kann für einen Anwendungsfall ein durchgehend schwarzes Bild zum Trainieren/Ableiten gültig sein, während dies für andere Anwendungsfälle möglicherweise nicht der Fall ist. Ist dies nicht der Fall, wird die Konditionierungsschicht 304 kann beispielsweise einen Filter enthalten, um einfarbige schwarze Bilder zu entfernen. Alternativ kann es eine solche Eingabe ablehnen und eine Ausnahmeausgabe ausgeben.

Die Konditionierungsschicht 304 eines Etikettierers kann Eingabekonditionierung, erfolgreiche Ausgabekonditionierung und Ausnahmeausgabekonditionierung umfassen. Jede von diesen kann durch Anordnen von Konditionierungskomponenten in Rohrleitungen konstruiert werden. Konditionierungskomponenten führen Operationen wie Datentransformation, Filterung und (Dis-)Aggregation durch. Ähnlich wie Labeler kann die Konditionierungskomponente Dateneingabe-Pipes, Datenausgabe-Pipes und Ausnahme-Pipes haben.

Mehrere ML-Labeler, menschliche Labeler oder andere Labeler können nach Bedarf zu gerichteten Graphen zusammengesetzt werden, so dass jeder einzelne Labeler einen Teil eines Gesamtklassifizierungsproblems löst und die Ergebnisse zusammengefaßt werden, um die gekennzeichnete Gesamtausgabe zu bilden. Der Gesamtkennzeichnungsgraph für einen Anwendungsfall kann abstrakt als ein einzelner Kennzeichner betrachtet werden, und jeder Kennzeichner kann selbst als gerichteter Graph implementiert werden. Es kann Verzweigungen, Zusammenführungen, bedingte Logik und Schleifen in einem gerichteten Graphen geben. Jeder gerichtete Graph kann ein Fan-In zu einer einzelnen Ausgabeantwort oder Ausnahme pro Eingabeelement enthalten. Das Verfahren zum Modellieren der Markierung in solchen Ausführungsformen kann fraktal sein.Die für bestimmte Anwendungsfälle implementierten Kennzeichnungsdiagramme können variieren, wobei einige Diagramme ausschließlich auf ML-Kennzeichnungstools basieren und andere Diagramme ausschließlich auf menschlichen Kennzeichnungselementen basieren.

ML-Marker und menschliche Labeler und/oder andere Labeler können in einem CDW implementiert werden, der als Labeler angesehen werden kann, der eine Sammlung anderer Labeler einkapselt. Die gekapselten Etikettierer werden nacheinander konsultiert, bis ein konfigurierter Schwellenwert für die Vertrauenswürdigkeit der Antwort erreicht ist. Ein CDW kann die Zuverlässigkeit der Kennzeichnungsergebnisse erhöhen, indem dieselbe Kennzeichnungsanforderung an mehrere konstituierende Kennzeichnungseinrichtungen und/oder Kennzeichnungsinstanzen gesendet wird. Ein CDW kann einen ML-Etikettierer enthalten, der im Laufe der Zeit lernen kann, einen Anwendungsfall teilweise oder vollständig auszuführen, wodurch die Abhängigkeit von der menschlichen Etikettierung verringert wird und somit Zeit und Geldkosten für die Etikettierung von Daten reduziert werden.

Ausführbare Code-Labeler

Etikettierer für ausführbaren Code packen ausführbaren Code mit konfigurierbaren Parametern zusammen, um als Etikettierer für ausführbaren Code verwendet zu werden. Die Konfiguration für einen ausführbaren Code-Etikettierer umfasst alle Konfigurationsinformationen, die für den ausführbaren Code des Etikettierers relevant sind. Abgesehen von den allgemeinen Konfigurationsinformationen, die allen Etikettierern gemeinsam sind, ist die Konfiguration für einen ausführbaren Etikettierer spezifisch für den Code. Beispiele für Dinge, die konfiguriert werden könnten, sind unter anderem: S3-Bucket-Präfix, gewünschte Framerate, zu benachrichtigende E-Mail-Adresse, Batchgröße.

Labeler für gehostete Endpunkte von Drittanbietern

Ein von einem Drittanbieter gehosteter Endpunktkennzeichner kann als Sonderfall eines ausführbaren Codekennzeichners angesehen werden, bei dem der ausführbare Code einen gehosteten Endpunkt eines Drittanbieters aufruft. Die Konfiguration des von einem Drittanbieter gehosteten Endpunkts kann angeben, welcher Endpunkt erreicht werden soll (z. B. Endpunkt-URL), Authentifizierungsdaten, Zeitüberschreitung usw.

Menschliche Labeler

Ein Human Labeler fungiert als Tor zu einer menschlichen Fachkraft. Ein menschlicher Etikettierer kann eine Sammlung menschlicher Spezialisten mit ähnlichen Eigenschaften (Kosten/Kompetenz/Verfügbarkeit/usw.) kapseln sowie die Details der Weiterleitungsanforderungen an die einzelnen Personen und deren Ergebnisse zurück an das Kennzeichnungssystem kapseln. Menschliche Etikettierer verpacken die eingehende Etikettierungsanforderung mit konfigurierten Spezialistenauswahlregeln und einer Aufgaben-UI-Spezifikation in eine Aufgabe.

FEIGE. 4 veranschaulicht eine Ausführungsform der Verarbeitung durch einen menschlichen Etikettierer 400. In der dargestellten Ausführungsform sind menschliche Labeler 400 erhält eine Etikettierungsanfrage auf der Eingabepipe 402 und gibt ein gekennzeichnetes Ergebnis auf einer Ausgabepipe aus 404. Ausnahmen werden auf Ausnahmepipe ausgegeben 406. Wie oben diskutiert, menschliche Labeler 400 kann eine Konditionierungsschicht umfassen, um Kennzeichnungsanforderungen und -antworten zu konditionieren.

Menschlicher Etikettierer 400 wird gemäß einer Personalauswahlkonfiguration konfiguriert 410 und eine Aufgaben-UI-Konfiguration 412. Konfiguration der Personalauswahl 410 stellt Kriterien für die Auswahl menschlicher Spezialisten bereit, an die eine Kennzeichnungsanfrage weitergeleitet werden kann. Konfiguration der Personalauswahl 410 können zum Beispiel Plattformanforderungen, Personalanforderungen und individuelle Fachanforderungen umfassen. In einigen Ausführungsformen, Plattform 102 kann Aufgaben an menschliche Spezialisten über verschiedene Plattformen für menschliche Spezialisten senden (z. B. Amazon Mechanical Turk Marketplace und andere Plattformen). Konfiguration der Personalauswahl 410 kann somit die Plattform(en) festlegen, über die Aufgaben für den Etikettierer geroutet werden können. Human-Spezialisten-Plattformen können bestimmte Belegschaften (definierte Gruppen von Human-Spezialisten) haben. Konfiguration der Personalauswahl 410 kann die definierten Gruppen menschlicher Spezialisten spezifizieren, an die Aufgaben vom Labeler weitergeleitet werden können (d. h. Gruppen von menschlichen Labeler-Instanzen, an die Labeling-Aufgaben weitergeleitet werden können). Wenn eine Belegschaft in der Konfiguration deklariert ist 410 für einen Anwendungsfall muss ein menschlicher Spezialist zu dieser Belegschaft für Aufgaben für den Etikettierer gehören 400 an diesen menschlichen Spezialisten weitergeleitet werden. Konfiguration der Personalauswahl 410 kann auch Kriterien für die einzelnen Spezialisten festlegen, die eine Aufgabe an den Etikettierer weiterzuleiten 400. Beispielhaft, aber nicht einschränkend, Konfiguration der Personalauswahl 410 kann eine Fähigkeitserklärung enthalten, die die Fähigkeiten und Mindestfähigkeitsbewertungen angibt, die einzelne Arbeiter (menschliche Spezialisten) haben müssen, um die Etikettierungsaufgaben vom Etikettierer zu leiten. Ein Qualitätsüberwachungs-Subsystem (QMS) kann Fähigkeiten/Fähigkeiten für einzelne menschliche Spezialisten verfolgen.

Konfiguration der Aufgaben-UI 412 gibt eine Aufgaben-UI an, die für eine Beschriftungsaufgabe verwendet werden soll, und die in der UI verfügbaren Optionen. Gemäß einer Ausführungsform kann eine Anzahl von Aufgabenvorlagen für menschliche Kennzeichnerspezialisten definiert werden, wobei jede Aufgabenvorlage eine Benutzerschnittstelle ausdrückt, die verwendet wird, um einer Person eine Kennzeichnungsanforderung zum Kennzeichnen zu präsentieren und eine Kennzeichnung zu empfangen, die der Kennzeichnungsanforderung von der Person zugewiesen wurde. Konfiguration der Aufgaben-UI 412 kann die zu verwendende Vorlage und die Beschriftungsoptionen angeben, die in der Aufgaben-Benutzeroberfläche verfügbar gemacht werden sollen.

Wenn Etikettierer 400 erhält eine Etikettierungsanfrage, Etikettierer 400 verpackt die Kennzeichnungsanforderung mit der Personalauswahlkonfiguration 410 und Aufgaben-UI-Vorlagenkonfiguration 412 als Kennzeichnungsaufgabe und sendet die Aufgabe an den Dispatcher-Service 409 (z. B. Dispatcher-Dienst 109). Dispatcher-Service 109 ist ein hochgradig skalierbarer, langlebiger Dienst, der dafür verantwortlich ist, Aufgaben von vielen verschiedenen Etikettierern anzunehmen und sie an den entsprechenden Endpunkt weiterzuleiten, damit menschliche Spezialisten auf die Aufgabe zugreifen können. Sobald ein Mitarbeiter eine Aufgabe annimmt, bedient die Plattform (z. B. der Dispatcher-Dienst) die konfigurierte browserbasierte Aufgaben-UI 420, übernimmt dann das Aufgabenergebnis vom Spezialisten und validiert es, bevor es an den Etikettierer zurückgesendet wird.

Dieselbe Kennzeichnungsanfrage kann mehrmals an einen einzelnen menschlichen Kennzeichnungsersteller gesendet werden. In einigen Ausführungsformen wird jedoch garantiert, dass es nicht mehr als einmal demselben menschlichen Spezialisten (Etikettiererinstanz) präsentiert wird. Benutzerbezogene Aufgaben können auch das Erstellen eines Ausnahmeergebnisses mit einem Grund für die Ausnahme unterstützen.

Labeler für maschinelles Lernen

Wie oben besprochen, Etikettierungsplattform 102 kann ML-Labeler implementieren. FEIGE. 5 ist eine schematische Darstellung eines ML-Etikettierers. Die Kernlogik eines ML-Etikettierers kann ein ML-Modell implementieren oder sich mit einem ML-Framework verbinden, um ein ML-Modell im Framework zu trainieren oder zu verwenden. Da das vom ML-Labeler verwendete Modell neu trainiert werden kann, kann der ML-Labeler im Laufe der Zeit lernen, einen Anwendungsfall teilweise oder vollständig auszuführen.

Wie in FIG. In 5 verwendet ein ML-Labeler zwei zusätzliche Eingabepipes für Trainingsdaten und Qualitätsmetriken, die an seinem Trainingsfluss teilnehmen. Somit können die Pipes mit dem Kernel-Code verbunden werden (z. B. Kernel-Kernlogik 302) des ML-Etikettierers 500, ähnlich der in FIG. 3 .

Auf einer hohen Ebene kann man sich ML-Training und Inferenz als eine Pipeline von fünf Funktionsschritten vorstellen: Eingabedatenerfassung, Eingabedatenkonditionierung, Training, Modellbereitstellung und Modellinferenz.

Gemäß einer Ausführungsform wird die Erfassung von nicht gekennzeichneten Daten zum Etikettieren und gekennzeichneten Daten zum Training von der Plattform gehandhabt 102, im Gegensatz zum Etikettierer 500 selbst. Die Daten können direkt über einen Endpunkt übergeben, über eine Warteschlange wie SQS oder Kafka gestreamt oder als Link zu einem Standort in einem Blob-Speicher bereitgestellt werden. Der Etikettierer kann über einfache Standardbibliotheken auf die Daten zugreifen.

Daten können transformiert werden, um die Daten für das Training und/oder die Inferenz vorzubereiten. Häufig ist ein gewisses Maß an Transformation von rohen Eingabedaten in trainierbare/ableitbare Daten erforderlich. Dies kann eine Gültigkeitsprüfung, Bildmanipulation, Aggregation usw. umfassen. Wie der Fachmann erkennt, können die Transformationen von den Anforderungen des trainierten oder zur Inferenz verwendeten ML-Modells abhängen.

Training (und erneutes Training) ist der Prozess, bei dem konditionierte Trainingsdaten in ein ausführbares Modell umgewandelt oder ein Modell neu trainiert wird. Die Trainingsausgabe ist ein ML-Modell, das das beste derzeit herstellbare Modell unter Berücksichtigung der verfügbaren Trainingsdaten darstellt. Es ist anzumerken, dass in einigen Ausführungsformen, wie beispielsweise Ausführungsformen, die Ensemble-Ansätze verwenden, ein ML-Labeler mehrere durch Training erzeugte Modelle verwenden kann.

Trainingsdaten gehen in den ML-Labeler ein 500 über seine Trainingsdaten-Eingabepipe 502. Diese Pipe überträgt gemäß einer Ausführungsform nur Daten, keine Kennzeichnungsflusssteuerung. Das Schema der Trainingsdaten-Eingabepipe ist das gleiche wie das der beschrifteten Ausgabepipe. Als solches muss es möglicherweise konditioniert werden, um durch den Trainingsprozess konsumierbar zu sein. In einigen Ausführungsformen sammeln sich Trainingsdaten in einem Repository an, können jedoch konfigurierbaren Datenaufbewahrungsregeln unterliegen.

In einigen Fällen können vom Endbenutzer bereitgestellte Daten oder ein öffentlich verfügbarer Datensatz als Trainingsdatensatz verwendet werden. Neue Modelle können trainiert werden, wenn zusätzliche Trainingsdaten verfügbar werden. Zusätzlich oder alternativ können Trainingsdaten von einem „Orakel“-Labeler stammen (z. B. einem Oracle-ML-Labeler oder Oracle-Human-Labeler). Es wird davon ausgegangen, dass die Ausgabe des Oracle Labeler korrekt ist, oder zumindest auf welcher Plattform am korrektsten 102 hat Zugriff für einen Anwendungsfall.

Die Trainingsdatenerweiterung kann verwendet werden, um den Trainingsdatenkorpus durch Hinzufügen synthetischer Trainingsdaten zu verstärken und zu diversifizieren. Diese synthetischen Trainingsdaten können auf der Anwendung verschiedener Transformationen auf Trainingsrohdaten basieren.

Es gibt verschiedene Möglichkeiten, das Training auszulösen. Der Auslöser kann so einfach sein wie eine bestimmte Anzahl von Trainingsdatensätzen, die sich ansammeln, oder eine bestimmte prozentuale Änderung darin. Ein Trainingsauslöser kann auch Eingaben von einem Qualitätskontroll-Subsystem beinhalten. Auch die Zeit seit dem letzten Training kann berücksichtigt werden.

Ausgabeetiketten von einem ML-Etikettierer 500 sind das Ergebnis der Ausführung einer konditionierten Etikettenanforderung durch ein bereitgestelltes ML-Modell, um eine abgeleitete Antwort zu erhalten. Diese Inferenz kann nicht in einer Form vorliegen, die vom Rest des Beschriftungsgraphen (wie durch das Ausgabepipe-Schema angegeben) direkt konsumierbar ist. In diesem Fall wird sie durch eine Ausgabekonditionierungspipeline geleitet (z. B. in Konditionierungsschicht .). 304). Gemäß einer Ausführungsform wird das von einem ML-Etikettierer ausgegebene Etikettenergebnis 500, enthält die Eingabelabelanforderung, das abgeleitete Label und ein selbstbewertetes Konfidenzmaß.

FEIGE. 6A ist eine schematische Darstellung einer Ausführungsform der funktionalen Komponenten eines maschinenlernenden Etikettierers 500. Eine von einem Anwendungsfall bereitgestellte ML-Etikettiererkonfiguration kann eine Konfiguration jeder der Funktionskomponenten spezifizieren.

FEIGE. 6A veranschaulicht auch ein Beispiel für Datenkennzeichnungs- und Trainingsabläufe. In der Ausführungsform von FIG. 6A , der ML-Etikettierer 600 enthält ein Eingangsrohr 602, Ausgangsrohr 604, Trainingsdaten-Eingabepipe 606 und eine Eingabepipe für Qualitätsmetriken 608. Um das Diagramm zu vereinfachen, ist die Ausnahmeausgabepipe in Fig. 2 nicht gezeigt. Es versteht sich jedoch, dass, wenn bei der Ausführung des Etikettierers eine Fehlerbedingung angetroffen wird, dies auf der Ausnahmeausgabepipe signalisiert wird.

Ein ML-Etikettierer enthält Code zum Implementieren oder Verwenden eines ML-Modells. In einigen Ausführungsformen kann der ML-Labeler als Wrapper für ein ML-Modell auf einer Modelllaufzeitplattform implementiert sein 650 lokal oder auf einem entfernten ML-Plattformsystem (z. B. einem ML-Plattformsystem) 130). Die ML-Etikettiererkonfiguration (die unten in Verbindung mit 13A und 13B ausführlicher erörtert wird) kann einen zu verwendenden ML-Algorithmus spezifizieren. Basierend auf dem spezifizierten ML-Algorithmus ist die Kennzeichnungsplattform 102 konfiguriert den Etikettierer mit dem Code, um sich mit der entsprechenden ML-Plattform zu verbinden 650 um den angegebenen ML-Algorithmus zu trainieren und zu verwenden.

Die Konfiguration für den ML-Etikettierer umfasst eine allgemeine Konfiguration und eine ML-Etikettierertyp-spezifische Konfiguration. Die ML-Kennzeichnungstyp-spezifische Konfiguration kann eine ML-Algorithmuskonfiguration, eine Trainingspipe-Konfiguration und eine Trainingskonfiguration umfassen. Die ML-Algorithmuskonfiguration spezifiziert einen zu verwendenden ML-Algorithmus oder eine ML-Plattform und eine andere Konfiguration für den ML-Algorithmus oder die ML-Plattform (zu verwendende Schichten usw.). In einigen Fällen kann ein Teil der ML-Algorithmuskonfiguration für den ML-Algorithmus oder die ML-Plattform spezifisch sein. Die Trainingskonfiguration kann eine aktive Lernkonfiguration, Hyperparameterbereiche, Grenzen und Trigger umfassen. Ein Teil der Trainingskonfiguration kann vom deklarierten ML-Algorithmus oder der deklarierten Plattform abhängen. Die ML-Labeler-Konfiguration kann auch Konditionierungspipelines für die Eingabe-, Ausgabe-, Trainings- oder Ausnahmepipes angeben.

ML-Etikettierer 600 enthält einen aktiven Lerndatensatz-Selektor 630 um Datensätze für aktives Lernen auszuwählen. Aktive Lerndatensatzauswahl konfigurieren 630 kann zum Beispiel das Festlegen einer aktiven Lernstrategie (z. B. niedrigste Genauigkeit, FIFO oder eine andere Auswahltechnik) und einer Batchgröße von Datensätzen umfassen, die zur weiteren Kennzeichnung und eventuellen Verwendung als Trainingsdaten für ML-Kennzeichnungstools weitergegeben werden 600.

Gemäß einer Ausführungsform ist der aktive Lerndatensatz-Selektor 630 wählt alle nicht gekennzeichneten Datensätze (oder eine bestimmte Anzahl davon) für einen Anwendungsfall aus (Datensätze, die noch nicht vom ML-Labeler gekennzeichnet wurden) und lässt diejenigen vom ML-Modell kennzeichnen 620. Das ML-Modell 620 bewertet seine Ergebnisse (z. B. gibt Vertrauen in seine Ergebnisse). Aktive Lerndatensatzauswahl 630 wertet die Ergebnisse aus (zum Beispiel kann es die mit den Ergebnissen verbundenen Konfidenzen auswerten) und leitet eine Teilmenge der Ergebnisse an die anderen Labeler in der Grafik und/oder einen Oracle-Labeler zur erweiterten Kennzeichnung weiter. Die erweiterte Kennzeichnung umfasst das Erzeugen von Kennzeichnungen für die zugeordneten Bilder oder andere Daten, die Konfidenzen aufweisen, die spezifizierte Kriterien erfüllen. Die erweiterte Kennzeichnung kann zu einer Korrektur der mit den Bildern oder anderen Daten verknüpften Kennzeichnung führen, oder die durch die erweiterte Kennzeichnung erzeugte Hochsicherheitskennzeichnung kann dieselbe wie die durch das ML-Modell generierte Kennzeichnung sein 620. Eine Teilmenge der vom ML-Modell generierten Ergebnisse 620 kann alternativ dazu bestimmt werden, ausreichend hohe Konfidenzen zu haben, dass keine verstärkte Kennzeichnung dieser Ergebnisse erforderlich ist. Die ausgewählten Datensätze mit ihren endgültigen, hochgradig zuverlässigen (z 620).

Ein ML-Etikettierer kann eine Konditionierungsschicht umfassen, die Daten aufbereitet, die von dem ML-Etikettierer verwendet werden. Ausführungsformen können beispielsweise eine Anforderungskonditionierungspipeline zum Konditionieren von Eingabeanforderungen, eine Inferenzkonditionierungspipeline zum Konditionieren gekennzeichneter Ergebnisse und/oder eine Trainingsanforderungs- und Labelkonditionierungspipeline zum Konditionieren von Trainingsdaten umfassen. Jede Konditionierungspipeline, falls enthalten, kann eine oder mehrere Konditionierungskomponenten umfassen. Die Konfiguration des ML-Etikettierers kann die Konditionierungskomponenten angeben, die für die Anforderungskonditionierung, Inferenzdekonditionierung und das Training und die Anforderungskonditionierung verwendet werden sollen, und kann angeben, wie die Komponenten konfiguriert sind (z Größenänderungskomponente sollte die Größe von Bildern ändern).

Bei der in FIG. 6A , ML-Etikettierer 600 enthält eine Konditionierungsschicht, die Komponenten zur Konditionierung von Kennzeichnungsanforderungen, Inferenzen und Trainingsdaten enthält. Konditionierungspipeline anfordern 632 Bedingt Eingabebeschriftungsanforderungen, die über die Eingabepipe empfangen werden 602 durch aktive Lerndatensatzauswahl 630 um sie aus der Datendomäne des aktiven Lerndatensatz-Selektors zu übersetzen 630 zum Datenbereich des Championmodells 620. Nach Meistermodell 620 erzeugt Rückschlüsse, die den Kennzeichnungsanforderungen entsprechen, die Rückschlüsse und Kennzeichnungsanforderungen werden dekonditioniert, um sie zurück in die Datendomäne des aktiven Lerndatensatz-Selektors zu übersetzen 630.

Die dekonditionierten Kennzeichnungsanforderungen und Schlussfolgerungen können auf der Ausgabepipe bereitgestellt werden 604 zu einem gerichteten Graphen (in der Figur nicht gezeigt), der so funktioniert, dass er eine Schwellenkonfidenz erreicht, wodurch ein Label mit hoher Konfidenz erzeugt wird. Dies kann unter anderem Labeler für ausführbaren Code, von Drittanbietern gehostete Endpunkt-Labeler, ML-Labeler und Human-Labeler sowie CDW-Labeler umfassen. Während einige der vom Champion-Modell erzeugten Schlussfolgerungen eine ausreichend hohe selbsteingeschätzte Vertrauenswürdigkeit aufweisen können, damit sie Kunden bereitgestellt oder als Trainingsdaten an das System zurückgesendet werden können, haben andere eine geringere zugehörige Vertrauenswürdigkeit. Diese Kennzeichnungsanforderungen und Schlussfolgerungen mit geringerer Genauigkeit werden von dem/den Hochsicherheitskennzeichnungs- bzw. -kennzeichnungsmodul(en) verarbeitet, um hochgenaue Kennzeichnungen zu erzeugen, und die Datensätze mit ihren entsprechenden Hochsicherheitskennzeichnungen (z. B. erweiterte Ergebnisse) werden in der Trainingsdaten-Eingabepipe bereitgestellt 606 zur Trainingsanforderungskonditionierungspipeline 610 als Trainingsdaten.

Konditionierungspipeline für Schulungsanfragen 610 wird zum Konditionieren von Trainingsdaten bereitgestellt, damit sie zum Trainieren von Challenger-ML-Modellen verwendet werden können. Konditionierte Trainingsdaten 612 wird in einem Trainingsdatenspeichergerät akkumuliert und von diesem Speichergerät abgerufen, wenn es zum Trainieren eines oder mehrerer ML-Modelle benötigt wird. In dieser Ausführungsform Trainingsanforderungskonditionierungspipeline 610 ist Teil der Konditionierungsschicht, die außerdem die Anforderungskonditionierungspipeline enthält 632 die Eingabeanforderungen konditioniert, und Pipeline zur Inferenzkonditionierung 634 welche Bedingungen sich aus dem Championmodell ergeben (Inferenzen). Jede Konditionierungspipeline, falls enthalten, kann eine oder mehrere Konditionierungskomponenten umfassen, wie in der Konfiguration des ML-Etikettierers angegeben.

ML-Etikettierer 600 beinhaltet eine Trainingskomponente 615 die ausführbar ist, um einen ML-Algorithmus zu trainieren. Trainingskomponente 615 kann für die Verbindung mit der entsprechenden ML-Plattform konfiguriert werden 650 um einen ML-Algorithmus zu trainieren, um ein ML-Modell zu erstellen. In dieser Ausführungsform Trainingskomponente 615 beinhaltet einen Experimentierkoordinator 616 die eine Schnittstelle zur Modelllaufzeitplattform bietet 650 mehrere Challenger-Modelle zu trainieren. Jedes Challenger-Modell wird unter Verwendung eines entsprechenden Satzes von Hyperparametern oder anderen Mechanismen konfiguriert, um mehrere unterschiedliche Kandidatenmodelle (Challenger-Modelle) zu trainieren, von denen jedes seine eigenen einzigartigen Eigenschaften hat, die sich auf die Kennzeichnung von Anforderungen auswirken. Die ML-Kennzeichnungskonfiguration kann während des Trainings zu verwendende Hyperparameterbereiche und -grenzen spezifizieren. Jedes der Challenger-Modelle stellt daher ein Experiment dar, um die Kennzeichnungsleistung zu bestimmen, die sich aus den verschiedenen ML-Modellkonfigurationen ergibt. Die Typen von Hyperparametern und anderen Mechanismen, die zum Trainieren der Kandidatenmodelle verwendet werden, können die in der Technik bekannten umfassen.

Die ML-Labeler-Konfiguration kann Trainings-Trigger (Trigger-Ereignisse) angeben, sodass, wenn die Trainingskomponente 615 erkennt einen Trainingsauslöser, die Trainingskomponente 615 initiiert (Neu-)Training des ML-Algorithmus, um ein aktuelles aktives Modell zu bestimmen. Trainingsauslöser können zum Beispiel auf einer Menge von Trainingsdaten basieren, die von dem Etikettierer empfangen werden, Qualitätsmetriken, die von dem Etikettierer empfangen werden, verstrichener Zeit oder anderen Kriterien.

Nachdem der Experimentkoordinator die verschiedenen ML-Kandidatenmodelle trainiert hat, wird ein Herausforderermodellbewerter 618 wertet die ML-Kandidatenmodelle gegeneinander und gegen das aktuelle aktive Modell (das Champion-Modell) aus, um zu bestimmen, welches das aktuelle aktive Modell zum Ableiten von Antworten auf Kennzeichnungsanforderungen sein sollte. Diese Bestimmung kann auf der Grundlage verschiedener unterschiedlicher Bewertungsmetriken erfolgen, die die Leistung der Kandidatenmodelle messen. Die Bestimmung kann auch die Kosten des Ersetzens des Championmodells berücksichtigen (z. B. kann in einigen Ausführungsformen ein Herausforderermodell nicht befördert werden, um das Championmodell zu ersetzen, es sei denn, die Leistung des Herausforderermodells übersteigt die des Championmodells um einen Schwellenwert, anstatt einfach größer zu sein als die Leistung des Championmodells). Die Ausgabe der Trainingskomponente 615 ist ein Champion-ML-Modell, das angesichts der verfügbaren Trainingsdaten und experimentellen Konfigurationen das „beste“ Modell darstellt, das derzeit herstellbar ist. Die Trainingskomponente 615 bestimmt somit das ML-Modell, das als aktuell aktives Modell (das Champion-Modell) zum Ableiten von Antworten auf Kennzeichnungsanforderungen verwendet werden soll.

FEIGE. 6B ist eine schematische Darstellung einer Ausführungsform eines Verfahrens zum Optimieren eines ML-Etikettierermodells in dem ML-Etikettierer von 1 . 6A.

Wie oben erwähnt, ist der ML-Etikettierer 600 arbeitet, um das Modell zu optimieren, das verwendet wird, um Schlussfolgerungen zu erzeugen, die den Kennzeichnungsanforderungen entsprechen. Dieser Prozess beginnt damit, dass Etikettierungsanforderungen in der Eingabepipe des ML-Etikettierers empfangen werden (Schritt 662). In dieser Ausführungsform werden die Kennzeichnungsanforderungen durch den aktiven Lerndatensatz-Selektor empfangen, aber dies könnte in einer alternativen Ausführungsform durch eine andere Komponente durchgeführt werden. Die Kennzeichnungsanforderungen können durch die Konfiguration des ML-Etikettierers definiert werden, auf die weiter unten in Verbindung mit den Figuren 1 und 2 näher eingegangen wird. 13A und 13B (siehe z. B. 13A , 1310 ).

Die Kennzeichnungsanforderungen werden vom aktiven Lerndatensatz-Selektor an die Anforderungskonditionierungspipeline der Konditionierungsschicht bereitgestellt, sodass die Kennzeichnungsanforderungen konditioniert werden können, bevor sie dem Championmodell bereitgestellt werden (Schritt 664). In einer Ausführungsform besteht die Konditionierung darin, die Kennzeichnungsanforderung von einer ursprünglichen Datendomäne in die Datendomäne des Championmodells zu übersetzen, so dass das Championmodell die Kennzeichnungsanforderung „versteht“ (siehe z. B. Fig. 13A, 1318, 1320 ). . Beispielsweise kann eine Kennzeichnungsanforderung als Eingabe für den ML-Kennzeichnungser einen zugeordneten Namen haben, aber das Championmodell kann so konfiguriert sein, dass es mit einem Index anstelle eines Namens arbeitet. In diesem Fall übersetzt die Konditionierungspipeline den Namen der Anforderung in einen Index, damit die Anforderung vom Championmodell verarbeitet werden kann. Das Konditionieren kann auch Operationen beinhalten, wie zum Beispiel das Ändern der Größe eines Bildes oder das Konvertieren des Bildes von Farbe in Graustufen (siehe z. B. 13A , 1316 ).

Die konditionierten Anfragen werden vom Championmodell verarbeitet, um ein Ergebnis (eine Inferenz) für die Anfrage zu generieren (Schritt 666). In dieser Ausführungsform ist das Championmodell auch dazu konfiguriert, einen selbstbewerteten Konfidenzindikator zu erzeugen, der ein Wert ist, der ein Konfidenzniveau angibt, das der Inferenz zugeordnet ist. Der Konfidenzindikator kann anzeigen, dass das Championmodell ein hohes Konfidenzniveau im Zusammenhang mit der generierten Inferenz aufweist (dh das Modell bewertet die Inferenz als höchstwahrscheinlich als genau) oder es kann anzeigen, dass das Modell ein niedrigeres Konfidenzniveau aufweist (dh das Modell bewertet die Schlussfolgerung als weniger wahrscheinlich genau). Die verarbeitete Anfrage und die zugehörige Inferenz werden mit dem Konfidenzindikator an die Dekonditionierungspipeline geliefert, damit sie aus der Datendomäne der Championmodelle zurück in die Datendomäne der ursprünglichen Kennzeichnungsanfrage übersetzt werden können (Schritt 668). Die dekonditionierten Anforderungen und Schlussfolgerungen werden dann dem aktiven Lerndatensatz-Selektor bereitgestellt.

Der aktive Lerndatensatz-Selektor ist so konfiguriert, dass er eine Teilmenge der verarbeiteten Datensätze auswählt, die zum Trainieren der Challenger-Modelle und zum Bewerten ihrer Leistung gegenüber dem Champion-Modell verwendet werden soll (Schritt ). 666). Die Etikettierungsanforderungen werden gemäß einer aktiven Lernstrategie ausgewählt, die durch die Konfiguration des ML-Etikettierers bestimmt wird. In einigen Ausführungsformen kann der Etikettierer zum Beispiel Strategien implementieren, bei denen die Datensätze, von denen angenommen wird, dass sie die niedrigste Genauigkeit, das niedrigste selbsteingeschätzte Vertrauen oder die niedrigste Verteilungsdarstellung in dem aktuellen Trainingsdatensatz aufweisen, für das Training ausgewählt werden können (siehe , zB 13A , 1322 ). Die implementierte Strategie kann die Auswahl dieser Rekorde vorschreiben, da es sich um die Rekorde handelt, bei denen das Championmodell die schlechteste Leistung oder die schlechteste Selbsteinschätzung gezeigt hat und die daher die Art(en) von Rekorden darstellen, auf die sich das Training konzentrieren sollte, um sich zu verbessern die Leistung des Modells, das verwendet wird, um die Inferenzen zu generieren. Im Beispiel von FIG. In 13A ist der Aktiv-Lerndatensatz-Selektor dazu konfiguriert, Datensätze zu akkumulieren und dann eine bestimmte Anzahl (z. B. 512) der Datensätze auszuwählen, die weiter verarbeitet und als Trainingsdaten verwendet werden sollen. Die Auswahlstrategie, die Anzahl der ausgewählten Anforderungen und verschiedene andere Parameter zur Auswahl der Anforderungen sind entsprechend der Konfiguration des ML-Etikettierers konfigurierbar.

Die vom aktiven Lerndatensatz-Selektor ausgewählten Datensätze werden einem oder mehreren hochpräzisen Labelern bereitgestellt, die Teil eines vertrauensorientierten Labeling-Dienstes sein können (Schritt 672). Die Etikettierer mit hohem Vertrauen können automatisierte Etikettierer und menschliche Etikettierer umfassen. Die Etikettierer mit hoher Genauigkeit erzeugen für jeden der Datensätze ein Etikettergebnis mit hoher Zuverlässigkeit. Da die Datensätze in diesem Beispiel als die Datensätze mit der niedrigsten Genauigkeit ausgewählt wurden, können sich die von den Labelern mit hoher Konfidenz erzeugten Labels durchaus von den vom Championmodell erzeugten Inferenzen unterscheiden, aber wenn die Genauigkeit des Championmodells selbst hoch ist, generierte Labels können mit den Inferenzen des Championmodells übereinstimmen. Wenn die Labels mit hoher Vertrauenswürdigkeit für die ausgewählten Datensätze generiert wurden, werden die generierten Label-Ergebnisse an die Trainingsdaten-Eingabepipe geliefert 606 damit sie für Trainings- und Auswertungszwecke verwendet werden können (Schritt 674).

Die über die Trainingsdaten-Eingabepipe eingegebenen Ergebnisse mit hoher Vertrauenswürdigkeit werden an eine Trainingskonditionierungspipeline geliefert 610, die im Wesentlichen die gleiche Funktion wie die Anforderungskonditionierungspipeline ausführt 632 (Schritt 676). Die konditionierten Anforderungen und entsprechenden Labels werden dann in einem Trainingsdatenspeicher abgelegt 612, wo sie zur Verwendung durch die Trainingskomponente des ML-Labelers gesammelt werden können (Schritt 678). In dieser Ausführungsform werden die Anforderungen und die entsprechenden Labels gespeichert, bis ein Triggerereignis erkannt wird. Das Triggerereignis wird von einem Trainingstrigger erkannt, der Informationen überwacht, die Qualitätsmetriken, die Menge der gesammelten Trainingsdaten oder verschiedene andere Parameter umfassen können (Schritt 680). Wenn die überwachten Informationen eine oder mehrere Bedingungen erfüllen, die ein Triggerereignis definieren, wird ein Teil der gesammelten Trainingsdaten dem Experimentkoordinator der Trainingskomponente bereitgestellt (Schritt 682).

Das Triggerereignis wird auch vom Experimentkoordinator der Trainingskomponente verwendet, um ein oder mehrere Experimente zu initiieren, von denen jedes einen entsprechenden Satz von Hyperparametern verwendet, um ein entsprechendes Challenger-Modell zu konfigurieren (Schritt 684). Jedes der experimentellen Challenger-Modelle ist einzigartig konfiguriert, um einzigartige Challenger-Modelle zu entwickeln, die mit dem Champion-Modell verglichen werden können, um zu bestimmen, ob die Leistung des Champion-Modells verbessert werden kann. Jedes dieser experimentellen Challenger-Modelle wird mit denselben Trainingsdaten trainiert, die dem Experimentkoordinator aus dem Trainingsdatenspeicher bereitgestellt werden (Schritt 686). Die trainierten Challenger-Modelle können dann bewertet werden, um zu bestimmen, ob sie befördert werden sollten, um das Champion-Modell zu ersetzen.

Nachdem die experimentellen Challenger-Modelle mit dem ersten Teil der Trainingsdaten trainiert wurden, werden sie mit einem zweiten Teil der Trainingsdaten ausgewertet, der im Trainingsdatenspeicher reserviert ist (688). Normalerweise überlappt sich der zweite Teil der Daten nicht mit dem ersten Teil der Trainingsdaten. Während der erste Teil der Daten (der zum Trainieren der Challenger-Modelle verwendet wird) normalerweise nur kürzlich gespeicherte Trainingsdaten enthält, kann der zweite Teil der Trainingsdaten außerdem ältere, historische Trainingsdaten enthalten. Der zweite Teil der Trainingsdaten wird von jedem der trainierten Challenger-Modelle sowie dem Champion-Modell verarbeitet, um entsprechende Ergebnisse/Inferenzen zu generieren (Schritt 688). Die Ergebnisse der verschiedenen Modelle werden gegeneinander bewertet, um ihre jeweilige Leistung zu bestimmen. Die Bewertung kann mehrdimensional sein, wobei mehrere verschiedene Aspekte der Leistung jedes Modells separat unter Verwendung verschiedener Metriken verglichen werden, anstatt nur eine einzige Evaluierungsmetrik zu verwenden. Die spezifischen Metriken, die für die Bewertung verwendet werden, sind konfigurierbar und können von einer Ausführungsform zur anderen variieren.

Nach dem Vergleich der Leistung jedes der Modelle wird bestimmt, ob eines der Herausforderer-Modelle eine verbesserte Leistung gegenüber der des Champion-Modells zeigt. Wenn dies der Fall ist, kann das Herausforderermodell mit der größten Leistung befördert werden, um das Championmodell zu ersetzen. In einigen Ausführungsformen kann es wünschenswert sein, das Champion-Modell nur dann zu ersetzen, wenn die Leistung des Herausforderer-Modells die des Champion-Modells um einen vorbestimmten Betrag übersteigt. Mit anderen Worten, wenn das Herausforderermodell nur eine geringfügig höhere Leistung als das Championmodell aufweist, können die mit dem Ersetzen des Championmodells verbundenen Gemeinkosten die Leistungsverbesserung überwiegen, in welchem ​​Fall das Herausforderermodell möglicherweise nicht gefördert wird.

CDVV-Etikettierer für vertrauensgesteuerte Arbeitsabläufe

Ein CDW ist ein Etikettierer, der eine Sammlung von Etikettierern derselben Art kapselt, die nacheinander konsultiert werden, bis ein konfigurierter Vertrauensschwellenwert für die Antwort erreicht ist. Auf hoher Ebene steigern mehrere übereinstimmende Urteile über dieselbe Kennzeichnungsanfrage das Vertrauen in die Antwort. Andererseits verringert ein abweichendes Urteil das Vertrauen. Ausführungsformen von CDW-Etikettierern werden in der zugehörigen vorläufigen Anmeldung Nr. 62/950.699, Anhang 1 diskutiert.

Die Konfiguration für einen CDW-Etikettierer kann beispielsweise eine Angabe der konstituierenden Etikettierer umfassen. Die CDW-Konfiguration für einen konstituierenden Etikettierer kann angeben, ob der Etikettierer als blinder Beurteilungsetikettierer oder als offener Beurteilungsetikettierer behandelt werden sollte. Es versteht sich, dass dieselbe Etikettierungsanforderung als Teil einer CDW erneut an einen Etikettierer übermittelt werden kann. Zum Beispiel kann die gleiche Kennzeichnungsanforderung an einen menschlichen Kennzeichnungsgeber zur Kennzeichnung durch zwei verschiedene Kennzeichnungsinstanzen gesendet werden. Die CDW-Konfiguration eines konstituierenden Etikettierers kann die Häufigkeit beschränken, mit der dieselbe Etikettierungsanforderung als Teil einer CDW an den Etikettierer gesendet werden kann.

Die CDW-Konfiguration kann somit verwendet werden, um den Workflow-Orchestrator eines CDW-Etikettierers zu konfigurieren.

Konditionierungskomponenten

Wie oben erörtert, können Labeler intern aus einem Kernverarbeitungskern bestehen, der von einer Konditionierungsschicht umgeben ist, die Eingabekonditionierung, erfolgreiche Ausgabekonditionierung und Ausnahmeausgabekonditionierung umfassen kann. Die Konditionierungsschicht kann durch Anordnen von Konditionierungskomponenten (z. B. Konditionierungskomponenten 112) in Rohrleitungen gemäß der Konfiguration eines Etikettierers. Eine beispielhafte Bildklassifizierungs-Eingabekonditionierungspipeline und Kernel-Kernlogik für einen Bildklassifizierungs-Etikettierer ist in 1 dargestellt. 7.

Konditionierungskomponenten führen Operationen wie Datentransformation, Filterung und (Dis-)Aggregation durch. Ähnlich wie Etikettierer kann die Konditionierungskomponente Dateneingabepipes, Datenausgabepipes und Ausnahmepipes aufweisen, aber während Etikettierer ein Etikettierungsergebnis aus einer Etikettierungsanforderung erzeugen, führen Konditionierungskomponenten einfach eine Eingabekonditionierung, Ausgabekonditionierung oder Interstitialkonditionierung durch.

In einigen Fällen können Konditionierungskomponenten verwendet werden, um eine Eingabeanforderung zu zerlegen. In einigen Anwendungsfällen kann beispielsweise die gesamte Kennzeichnungsanforderung in eine Sammlung kleinerer Kennzeichnungsanforderungen desselben Typs zerlegt werden. Diese Art der Zersetzung kann innerhalb eines einzigen Etikettierers erreicht werden, indem Transformatoren in der Konditionierungsschicht verwendet werden. Ein Beispiel hierfür ist das Klassifizieren von Frames in einem Video. Es ist im Allgemeinen viel einfacher, ein Modell zu trainieren, ein einzelnes Einzelbild zu klassifizieren, als alle Einzelbilder in einem Video mit variabler Länge in einer einzigen Aufnahme zu klassifizieren. In diesem Fall kann die Datenkonditionierungsschicht mit einem Splitter konfiguriert werden, um das Video in Frames zu zerlegen, jeden Frame durch einen ML-Bildklassifizierungskern zu führen und die Ausgabe pro Video zu kombinieren.

Der Splitter kann in der Konditionierungsschicht auf der Eingabepipe und der Trainingspipe des Etikettierers implementiert werden und ist so konfiguriert, dass er das Video in einzelne Frames aufteilt. Der Label+Konfidenz-Aggregator ist in der Konditionierungsschicht auf der Ausgabepipe implementiert und aggregiert die Labels und Konfidenzen für die einzelnen Frames, um ein Label und Konfidenz für das Video zu bestimmen.

FEIGE. Fig. 8 ist beispielsweise eine schematische Darstellung eines Teils einer Ausführungsform eines ML-Etikettierers zum Klassifizieren eines Videos. Im dargestellten Ausführungsbeispiel ist ein Splitter 804 das die Videoeingabe in einzelne Frames zerlegt, wird in der Konditionierungsschicht auf der Eingabepipe und der Trainingspipe implementiert. Ein Label und ein Vertrauensaggregator 806 wird in der Konditionierungsschicht auf dem Ausgaberohr implementiert. Wenn in Bezug auf ein Video eine Labeling- oder Trainingsanfrage eingeht, wird Splitter 804 zerlegt das Video in Frames und sendet Labeling-Requests oder Trainings-Requests an den Bildklassifikations-Kernel 802 auf Einzelbildbasis. Label- und Vertrauensaggregator 806 aggregiert Schlussfolgerungen und Konfidenzen, die vom Bildklassifizierungskernel ausgegeben werden 802 für die einzelnen Frames, um ein Label und eine Konfidenz für ein Video zu bestimmen. FEIGE. 9 zeigt ähnlich einen Splitter 904 und Aggregator 906 implementiert in der Konditionierungsschicht für einen CDW-Etikettierer 902.

Zusätzlich oder alternativ kann es wünschenswert sein, den Ausgabeetikettenraum zu zerlegen. Wenn beispielsweise der Ausgabeetikettenraum zu groß ist, um ein einzelnes ML-Modell für das gesamte Problem zu trainieren, kann der Etikettenraum in Shards aufgeteilt und jedem Shard ein fokussierterer ML-Etikettierer zugewiesen werden. Betrachten Sie einen Anwendungsfall für die Lokalisierung und Klassifizierung von Einzelhandelsprodukten in einem Bild, bei dem Hunderte von möglichen Produkttypen vorhanden sind. In einem solchen Fall kann der Etikettenraum nach breiteren Produktkategorien aufgeteilt werden.

FEIGE. 10 ist eine schematische Darstellung eines Teils einer Ausführungsform eines ML-Etikettierers, der mehrere interne ML-Etikettierer umfasst. Im dargestellten Ausführungsbeispiel ist ein Splitter 1004 wird in der Konditionierungsschicht auf dem Eingangsrohr und dem Trainingsrohr implementiert. Hier teilt der Splitter eine Anfrage zum Beschriften eines Bildes (oder Bildtrainingsdaten) in Anfragen an konstituierende ML-Beschrifter auf 1002ein, 1002B, 1002C, 1002D, bei dem jeder einzelne ML-Etikettierer für eine bestimmte Produktkategorie geschult wird. Zum Beispiel Splitter 1004 leitet die Etikettierungsanfrage an i) labeler 1002ein um das Bild mit allen Werkzeugen zu beschriften, die beschriftet werden 1002ein im Bild erkennt, ii) Etikettierer 1002B um das Bild mit Fahrzeugen zu beschriften, die Labeler haben 1002B im Bild erkennt, iii) Etikettierer 1002C um das Bild mit Kleidungsstücken zu beschriften, die beschriftet werden 1002C im Bild erkennt, und iv) Labeler 1002D um das Bild mit Lebensmitteln zu beschriften, die der Etikettierer 1002D im Bild erkennt. Ein Label und ein Vertrauensaggregator 1006 wird in der Konditionierungsschicht auf der Ausgabepipe implementiert, um die Inferenzen und Konfidenzen zu aggregieren, die von Labelern ausgegeben werden 1002ein, 1002B, 1002C, und 1002D um die auf das Bild anwendbaren Label(s) und Konfidenz(e) zu bestimmen.

    • Auffächern der Etikettierungsanforderung, um dieselbe Etikettierungsanforderung an jeden einzelnen Produktbereichs-Etikettierer weiterzuleiten
    • Etikettierergebnis-Fan-In, um Etikettierergebnisse von jedem einzelnen Etikettierer zu einem Gesamtetikettierergebnis zusammenzufügen
    • Trainingsdaten-Auffächerung, um die Trainingsdaten-Labels nach Produkttyp aufzuteilen und die entsprechenden Label-Sets an die richtigen einzelnen Labeler weiterzuleiten

    Splitting oder Slicen kann durch Etikettensplitterkomponenten erreicht werden, die in den jeweiligen Aufbereitungsleitungen implementiert sind. Das Auffächern kann konfiguriert werden, indem die Anforderungspipes mehrerer Etikettierer mit einer einzigen Ergebnispipeline einer Konditionierungskomponente verknüpft werden. Fan-In kann erreicht werden, indem mehrere Ausgabe-Pipes mit einer einzigen Eingabe-Pipe einer Aggregator-Konditionierungskomponente verbunden werden. Der Aggregator kann mit einem Aggregationsschlüssel-Identifikator konfiguriert werden, der angibt, welche Bestandteilsdaten aggregiert werden sollen, einer Schablone, die angibt, wie die Schlussfolgerungen von mehreren Labelern zu kombinieren sind, und einem Algorithmus zum Aggregieren der Konfidenzen.

    Systemarchitektur

    FEIGE. 11A veranschaulicht eine Ausführungsform von Konfigurations-, Kennzeichnungs- und Qualitätskontrollabläufen in der Kennzeichnungsplattform 102, FEIGE. 11B veranschaulicht eine Ausführungsform eines Konfigurationsflusses in der Etikettierplattform 102, FEIGE. 11C veranschaulicht eine Ausführungsform eines Kennzeichnungsflusses in der Kennzeichnungsplattform 102 und FIG. 11D veranschaulicht eine Ausführungsform eines Qualitätskontrollflusses in einer Etikettierplattform 102.

      • Es sollte einfach sein, eine Konfiguration als kleine Änderung gegenüber einer vorherigen Konfiguration anzugeben.
      • Es sollte schwer sein, manuelle Fehler, Auslassungen oder Versehen zu machen.
      • Der Unterschied in der Konfiguration zwischen zwei Anwendungsfällen sollte visuell leicht zu erkennen sein.
      • Es sollte einfach sein, grundlegende Fakten über die Konfiguration automatisch zu bestätigen und zu überprüfen: Anzahl der verwendeten Funktionen, transitive Schließung von Datenabhängigkeiten usw.
      • Ungenutzte oder redundante Einstellungen sollten erkennbar sein.
      • Es sollte einfach sein, die Auswirkungen von Konfigurationsentscheidungen zu testen.
      • Konfigurationen sollten einer vollständigen Codeüberprüfung unterzogen und in ein Repository eingecheckt werden.

      Unter Bezugnahme auf FIG. In 12 kann die Konfiguration mehrere Abstraktionsebenen umfassen, wie in 12 dargestellt. 12. Die physische Konfiguration ist die expliziteste Ebene und beschreibt die physische Architektur für einen Anwendungsfall. Es zielt auf eine spezifische Laufzeitinfrastruktur ab und konfiguriert Dinge wie DOCKER-Container, KAFKA-Themen, Cloud-Ressourcen wie AWS SQS und S3, ML-Subsysteme wie AWS SAGEMAKER und KUBEFLOW und Data Provenance-Subsysteme wie PACHYDERM (AWS SQS, S3 und SAGEMAKER von Amazon Technologies) , Inc., KUBEFLOW von Google, LLC, PACHYDERM von Pachyderm, Inc., DOCKER von Docker, Inc., KAFKA von The Apache Software Foundation) (alle Marken sind Eigentum ihrer jeweiligen Inhaber).

      In der Ausführungsform von FIG. In 12 gibt es eine Schicht über der physischen Konfiguration, die eine Konfiguration umfasst, die sowohl von Menschen als auch von Maschinen leicht gelesen und manipuliert werden kann. Gemäß einer Ausführungsform zum Beispiel Plattform 102 unterstützt einen deklarativen Sprachansatz für die Konfiguration (die deklarative domänenspezifische Sprache wird hier als DSL bezeichnet). Eine gemäß einer deklarativen Sprache ausgedrückte Konfiguration kann als „deklaratives Modell“ des Anwendungsfalls bezeichnet werden.

      Plattform 102 kann Anwendungsfallvorlagen enthalten. Use-Case-Vorlagen treffen Annahmen darüber, was in einem Use-Case enthalten sein sollte, und erfordern daher am wenigsten Eingaben vom menschlichen Konfigurator. Unter Verwendung einer Anwendungsfallvorlage kann der menschliche Benutzer relativ wenig Konfiguration eingeben. Die Plattform kann ein deklaratives Modell für einen Anwendungsfall speichern, wobei das deklarative Modell Konfigurationsannahmen enthält, die durch eine Anwendungsfallvorlage spezifiziert werden, und die relativ kleine Konfigurationsmenge, die vom menschlichen Benutzer bereitgestellt wird.

      Die DSL beschreibt die logische Architektur für den Anwendungsfall auf eine Weise, die unabhängig davon ist, welche bestimmten Infrastrukturen/Tools zur Laufzeit verwendet werden. Das heißt, die DSL spezifiziert den Beschriftungsgraphen auf der logischen Ebene. Während DSL darauf abzielt, laufzeitunabhängig zu sein, versteht es sich, dass unterschiedliche Laufzeitplattformen und Tools unterschiedliche Fähigkeiten aufweisen und die DSL angepasst werden kann, um einige laufzeitspezifische Konfigurationsinformationen zu unterstützen. Die laufzeitspezifische Konfiguration in der DSL kann in benannte Abschnitte gekapselt werden, um die Laufzeitspezifität leicht erkennbar zu machen.

      Die DSL wird in einem menschen- und maschinenfreundlichen Format ausgedrückt. Ein solches Format, YAML, wird hier beispielhaft verwendet. Es versteht sich jedoch, dass ein deklaratives Modell unter Verwendung anderer Formate und Sprachen ausgedrückt werden kann.

      Die DSL-Ausgabe des Systems erfolgt in kanonischer Form. Obwohl die Reihenfolge für Elemente mit derselben Einrückungsebene in einem YAML-Dokument normalerweise keine Rolle spielt, weist ein kanonisches DSL-Dokument eine vorhersehbare Reihenfolge und Abstände auf. Ein Vorteil der Erzeugung einer solchen kanonischen Darstellung besteht darin, den Vergleich zwischen verschiedenen Konfigurationen zu unterstützen.

        • A. Getrennte Eingabepipe für die Beschriftungsanforderung oder Ergebnisausgabepipe
        • B. Schema der verbundenen Rohrleitungen stimmt nicht überein
        • C. Nichtübereinstimmung zwischen dem Request-Input-Pipe-Schema, der internen Konfiguration und dem Ergebnis-Output-Pipe-Schema

        Zur Unterstützung der Datenherkunft können Versionen von versionierbaren Komponenten explizit aufgerufen werden. Gemäß einer Ausführungsform werden Versionsmakros wie „neueste“ nicht unterstützt. In einer solchen Ausführungsform kann das System einen Bediener proaktiv warnen, wenn neue Versionen verfügbar sind.

        Gemäß einer Ausführungsform definiert ein deklaratives Modell eine Konfiguration für jeden Etikettierer, so dass jeder Etikettierer als eigenständig betrachtet werden kann (dh die gesamte logische Konfiguration des Etikettierers ist in einem einzelnen DSL-Block (oder einer anderen identifizierbaren Struktur) spezifiziert, die spezifiziert: welche Daten der Etikettierer verbraucht, wie der Etikettierer arbeitet und welche Daten der Etikettierer produziert).

        Die Konfiguration für einen Labeler kann als Sammlung von Schlüssel-Wert-Paaren (Feld-Wert-Paare, Attribut-Wert-Paare, Name-Wert-Paare) angegeben werden. Gemäß einer Ausführungsform ist Plattform 102 ist konfiguriert, um die Namen im Kontext der Struktur des deklarativen Modells zu interpretieren, um den Beschriftungsgraphen zu konfigurieren.

          • Name (eindeutig in der Grafik)
          • Typ (Typ des Etikettierers)
          • Anfragerohr (Eingangsrohr)
            • name (normalerweise ein Verweis auf eine zuvor definierte Ergebnispipe)
            • Schema
            • Name
            • Schema
            • Name
            • Liste der Ausnahmetypen

            Das deklarative Modell kann auch eine spezifische Konfiguration des Etikettierertyps spezifizieren (z. B. Konfigurationsschlüssel, die für den Etikettierertyp spezifisch sind). Etikettierer können eine zusätzliche Konfiguration haben, die je nach Typ variiert.

            Abgesehen von den allgemeinen Konfigurationsinformationen, die allen Etikettierern gemeinsam sind, ist beispielsweise die Konfiguration für einen ausführbaren Etikettierer spezifisch für den Code. Beispiele für Dinge, die konfiguriert werden könnten, sind unter anderem: S3-Bucket-Präfix, gewünschte Framerate, zu benachrichtigende E-Mail-Adresse, Batchgröße. Die Konfiguration für einen ausführbaren Etikettierer kann beliebige Konfigurationsinformationen enthalten, die für den ausführbaren Code des Etikettierers relevant sind. Die Konfiguration des von einem Drittanbieter gehosteten Endpunkts kann angeben, welcher Endpunkt erreicht werden soll (z. B. Endpunkt-URL), Authentifizierungsdaten, Zeitüberschreitung usw.

            Wie oben erörtert, kann die Konfiguration für einen ML-Etikettierer die Konfiguration für verschiedene funktionale Komponenten des ML-Etikettierers bereitstellen. Ein Beispiel eines DSL-Blocks für einen ML-Etikettierer ist in Fig. 1 dargestellt. 13A und FIG. 13B. Wie dargestellt, enthält der DSL-Block für den ML-Etikettierer eine allgemeine Etikettiererkonfiguration. Die allgemeine Labeler-Konfiguration enthält einen Labeler-Namen (z. B. „scene-classification.ml“) (Schlüssel-Wert-Paar 1302), die Art des Labelers (z. B. maschinelles Lernen) (Schlüssel-Wert-Paar 1304) und ein Schlüssel-Wert-Paar für den Anwendungsfall 1306. Der Wert des Schlüssel-Wert-Paares für den Anwendungsfall 1306 gibt an, ob der DSL-Block aus einer Use-Case-Vorlage erstellt wurde und wenn ja, aus der Use-Case-Vorlage, aus der er erstellt wurde. In diesem Beispiel wird der DSL-Block aus einer Bildklassifizierungs-Use-Case-Vorlage erstellt.

            Bei Label-Space-Deklaration 1308, deklariert der DSL-Block den Beschriftungsraum für den ML-Beschrifter. In diesem Fall wird der Wert des Schlüssel-Wert-Paares „labels“ als Liste von Klassen ausgedrückt.

            Am Eingang Pipe Deklaration 1310, deklariert der DSL-Block die Etikettierungsanforderungs-Eingangspipe für den Etikettierer und weist der Eingangspipe einen Namen zu. Der DSL-Block deklariert ferner das Eingabepipe-Schema. Beispielsweise kann der DSL-Block ein JSON-Schema enthalten (z. B. gemäß der JSON-Schema-Spezifikation der Internet Engineering Task Force, verfügbar unter https://json-schema.org). Das JSON-Schema kann beispielsweise erwartete Felder, Felddatentypen angeben, ob ein bestimmtes Feld erforderlich ist (nullierbar) usw.

            Zur Laufzeit wird der Dienst für gerichtete Graphen 105 erkennt die Eingabepipe des ersten Labelers im Labeling-Graphen für einen Anwendungsfall und leitet Labeling-Anfragen an diese Eingabepipe weiter. Die Input-Pipes nachfolgender Labeler im Graphen können mit den Output-Pipes anderer Labeler verbunden werden.

            Bei Ergebnispipe-Deklaration 1312, deklariert der DSL-Block den Namen und das Schema der Ausgabepipe. Der DSL-Block kann beispielsweise ein JSON-Schema enthalten. Das JSON-Schema kann zum Beispiel erwartete Felder, Felddatentypen angeben, ob ein bestimmtes Feld erforderlich ist (nullbar) usw. Im Allgemeinen kann die Ausgabepipe eines Labelers mit der Eingabepipe eines anderen Labelers verbunden werden. Beim letzten Etikettierer in einem Beschriftungsdiagramm ist die Ausgabepipe jedoch nicht mit der Eingabepipe eines anderen Etikettierers verbunden.

            Es ist zu beachten, dass in einigen Fällen die Verbindungen zwischen Output-Pipes und Input-Pipes dynamisch zur Laufzeit ermittelt und nicht im deklarativen Modell deklariert werden. In anderen Fällen werden die Verbindungen zwischen Input-Pipes und Output-Pipes im deklarativen Modell deklariert.

            Ein ML-Etikettierer kann Trainingsdaten verwenden, um einen ML-Algorithmus zu trainieren, und als solcher kann eine Trainingspipe deklariert werden. Im Beispiel-DSL von FIG. In 13A wird die Trainingspipe durch einen YAML-Alias ​​für das Element „training-pipe→name“ der Trainingspipe-Deklaration bezeichnet 1314. In einigen Fällen können die Trainingsdaten von einem CDW-Etikettierer bereitgestellt werden, der den ML-Etikettierer enthält.

            ML-Etikettierer können mit einer Reihe von Konditionierungspipelines konfiguriert werden, wobei jede Konditionierungspipeline eine oder mehrere Konditionierungskomponenten umfasst, die Daten in der Pipeline transformieren. Eingabekonditionierungsdeklaration 1316 deklariert die Transformationen, die an Daten ausgeführt werden, die in der Eingabepipe und der Trainingspipe des ML-Labelers empfangen wurden. Im Beispiel von FIG. In 13A gibt die Eingabekonditionierungsdeklaration an, dass der ML-Etikettierer "Szenenklassifizierung-ml" eine Bildgrößenänderungstransformation anwenden soll, um die Größe von Bildern auf 128 × 128 zu ändern, und eine Graustufentransformation anzuwenden, um Bilder in Graustufen umzuwandeln. Also, wenn Plattform 102 den Etikettierer „Szenenklassifizierung-ml“ implementiert, enthält er eine Größenanpassungskomponente und eine Graustufenanpassungskomponente in der Aufbereitungsschicht des Etikettierers, wobei die Anpassungskomponente für die Größenanpassung konfiguriert ist, um die Größe von Bildern auf 128 × 128 zu ändern. In diesem Beispiel wird dann die Anforderungskonditionierung 632 und Anfrage+Label-Konditionierung 610 von FIG. 6A würde die konfigurierte Größenänderungs-Konditionierungskomponente und die Graustufen-Konditionierungskomponente umfassen.

            Zielkonditionierungserklärung 1318 deklariert Transformationen, die auf die unter angegebenen Labels angewendet werden sollen 1308. Im Beispiel von FIG. 13A , zum Beispiel Zielkonditionierungsdeklaration 1318 gibt an, dass die bei . deklarierten Labels 1308 sind in Indexwerte umzuwandeln. Wenn also Plattform 102 implementiert den "Szenen-Klassifizierungs-ml"-Etikettierer gemäß der Konfiguration von FIG. 13A und FIG. 13B enthält, wird es eine Label-zu-Index-Konditionierungskomponente in der Konditionierungsschicht für das Trainingsrohr enthalten, wobei die Label-zu-Index-Konditionierungskomponente konfiguriert ist, um die Labels in Indexwerte umzuwandeln (z. B. Outdoor→0, Küche→1 . . . ). In diesem Beispiel die Anforderung+Label-Konditionierung 610 von FIG. 6A würde die Etikett-zu-Index-Konditionierungskomponente enthalten.

            Zieldeklaration zur Dekonditionierung 1320 deklariert Transformationen, die auf die Ausgabe des ML-Modells angewendet werden sollen. Zum Beispiel kann ein Indexwert 0-4, der vom ML-Algorithmus für ein Bild ausgegeben wird, in die Labelspace-Deklaration at . umgewandelt werden 1308. Wenn also Plattform 102 implementiert den "Szenen-Klassifizierungs-ml"-Etikettierer gemäß der Konfiguration von FIG. 13A und FIG. In 13B enthält sie eine Index-zu-Label-Konditionierungskomponente in der Konditionierungsschicht für die Ausgabepipe, wobei die Index-zu-Label-Konditionierungskomponente konfiguriert ist, um Indexwerte in Labels umzuwandeln (z. B. 0 → Außen, 1 → Küche . . . ). In diesem Beispiel ist die Inferenzkonditionierung 634 von FIG. 6A würde die Dekonditionierung vom Index zum Etikett einschließen.

            ML-Typ-Labeler kapseln oder repräsentieren eine ML-Plattform, ein ML-Framework und/oder einen ML-Algorithmus. Als solche ist eine ML-Algorithmus-Deklaration 1350 deklariert die ML-Plattform, das ML-Framework und/oder den ML-Algorithmus, die vom ML-Labeler verwendet werden sollen. Jede Art von ML-Algorithmus, die von der Plattform unterstützt wird 102 (z. B. jeder ML-Algorithmus, der von den Modell-Frameworks von ML-Plattformsystemen unterstützt wird 130 angegeben werden können). Beispiele für ML-Algorithmen umfassen, sind aber nicht beschränkt auf: K-Means, Logistic Regression, Support Vector Machines, Bayesian Algorithmen, Perceptron und Convolutional Neural Networks. Im dargestellten Beispiel wird ein Tensorflow-basierter Algorithmus spezifiziert. Somit wird ein ML-Etikettierer, der basierend auf der Konfiguration von FIG. 13A und FIG. 13B würde ein Modell darstellen, das unter Verwendung des TensorFlow-Frameworks von Google, LLC, Mountain View, Kalifornien, trainiert wurde (TENSORFLOW ist eine Marke von Google, LLC).

            Darüber hinaus können ML-Algorithmen Konfigurationen aufweisen, die im DSL-Block für den ML-Labeler über benannte Datenelemente deklariert werden können. Beispielsweise lassen sich Modelle für maschinelles Lernen in TensorFlow als Zusammensetzung und Stapelung relativ einfacher Ebenen ausdrücken. Somit wird eine Anzahl von Schichten für den Tensorflow-basierten Algorithmus als deklariert 1352. Es versteht sich jedoch, dass Schichten für einige Modelle des maschinellen Lernens relevant sein können, andere jedoch nicht. Daher kann ein DSL-Block für einen ML-Etikettierer, der einen Algorithmus verwendet, der keine Schichten verwendet, das Schichtdatenelement weglassen. Darüber hinaus können andere ML-Algorithmen zusätzliche oder alternative Konfigurationen aufweisen, die über entsprechend benannte Datenelemente in DSL ausgedrückt werden können.

            Die Trainingskonfiguration für Algorithmen kann aktives Lernen, Hyperparameterbereiche, Grenzen und Trigger umfassen. Aktive Lernerklärung 1322 wird verwendet, um den aktiven Lerndatensatz-Selektor des ML-Etikettierers zu konfigurieren. Aktives Lernen versucht, das Modell des maschinellen Lernens des ML-Labelers zu trainieren, um so schnell wie möglich eine hohe Genauigkeit zu erreichen, und eine aktive Lernstrategie ist eine Strategie zur Auswahl von Datensätzen, die mit Labels versehen werden sollen (z als Trainingsdaten für den ML-Etikettierer verwenden), wobei die Datensätze zum Trainieren des ML-Etikettierers verwendet werden.

            Plattform 102 kann mehrere Strategien unterstützen, wie zufällige, niedrigste Genauigkeit oder andere Strategien. Im Beispiel von FIG. In 13A sind eine Strategie „niedrigster Genauigkeit“ und eine „Batchgröße“ von 512 angegeben. Während der Laufzeit wertet der aktive Datensatzselektor ausstehende akkumulierte Kennzeichnungsanforderungen aus, um zu ermitteln, welche davon am vorteilhaftesten wären, um vom Rest des Kennzeichnungsdiagramms gekennzeichnet und dann als Trainingsdatensätze verwendet zu werden. „Am vorteilhaftesten“ bedeutet in diesem Zusammenhang, den größten positiven Einfluss auf die Modellqualität zu haben. Unterschiedliche Auswahlstrategien verwenden unterschiedliche Methoden, um den erwarteten Nutzen abzuschätzen. Um mit dem Beispiel fortzufahren, verwendet die Strategie mit der niedrigsten Genauigkeit das aktuell aktive Modell, um Rückschlüsse auf die ausstehenden akkumulierten Kennzeichnungsanforderungen zu erhalten, sortiert diese Rückschlüsse nach der selbstbewerteten Konfidenz des Modells und sendet dann die 512 („Batch-Größe“) Datensätze mit dem niedrigsten Rang auf den Rest des Beschriftungsdiagramms. Eine geringe Konfidenz bei einer Inferenz ist ein Indikator dafür, dass das Modell nicht mit genügend Beispielen trainiert wurde, die dieser Kennzeichnungsanforderung ähneln. Wenn die Plattform die endgültigen Labels für diese Datensätze bestimmt hat, werden sie als Trainingsdaten an den ML-Labeler zurückgegeben.

            Schlüssel-Wert-Paare 1353 Deklarieren von Hyperparameterbereichen definieren den Raum für experimentelles Hyperparameter-Tuning. Die Hyperparameterbereiche können beispielsweise verwendet werden, um Experimente/Kandidatenmodellbewertung zu konfigurieren. Es versteht sich, dass die zum Trainieren eines ML-Algorithmus verwendeten Hyperparameter von dem ML-Algorithmus abhängen können.

            Trainingsgrenzen 1354 deklariert werden, um die vom Trainingsprozess verbrauchten Ressourcen einzuschränken. Trainingslimits können als Begrenzung der Trainingsdatenmenge oder Trainingszeitlimits angegeben werden.

            Erklärung zum Trainingsauslöser 1356 deklariert Trigger, die Plattform verursachen 102 ein Modell ausbilden/umschulen. Beispiele sind unter anderem: eine ausreichende Menge an Trainingsdaten ist eingetroffen, ein bestimmter Zeitraum ist verstrichen, Qualitätsüberwachungsmetriken fallen unter einen Schwellenwert oder driften um mehr als einen bestimmten Betrag (z. B. der ML-Algorithmus-Score bestimmt durch das QMS nimmt ab).

            Ein Beispiel eines DSL-Blocks für einen menschlichen Etikettierer ist in Fig. 1 dargestellt. 14. Hier wird der Etikettierertyp mit „hl“ angegeben, was darauf hinweist, dass der Etikettierer in diesem Zusammenhang ein menschlicher Etikettierer ist.

            Eine Aufgabenvorlagendeklaration 1402 gibt eine Aufgabenvorlage an. Die Aufgabenschablone drückt eine Benutzerschnittstelle aus, die verwendet wird, um einem Menschen eine Kennzeichnungsanforderung zum Etikettieren zu präsentieren und eine Kennzeichnung zu empfangen, die der Mensch der Kennzeichnungsanforderung zugewiesen hat. Ein Beispiel für eine Aufgabenvorlage ist in der zugehörigen vorläufigen Anmeldung Nr. 62/950.699, Anlage 2 enthalten.

            Marktplatzerklärung 1404 gibt die Plattform(en) an, an die Aufgaben vom Etikettierer weitergeleitet werden können. „mturk“ steht beispielsweise für den Amazon Mechanical Turk-Marktplatz und „portal“ steht für ein Mitarbeiterportal, das von der Etikettierungsplattform bereitgestellt wird 102. Für einige Arten der Beschriftung (z. B. 3D-Punktwolkenbeschriftung) können hochspezialisierte Beschriftungswerkzeuge auf dem Markt existieren. Aus verschiedenen Gründen (z. B. Kosten, Markteinführungszeit) können wir uns dafür entscheiden, diese Tools in die Etikettierungsplattform zu integrieren 102 als eigenständiger Marktplatz im Gegensatz zur Einbettung des Tools in unser eigenes Portal.

            Belegschaftserklärung 1406 spezifiziert die definierten Gruppen menschlicher Spezialisten, an die Aufgaben vom Labeler weitergeleitet werden können (d. h. Gruppen von menschlichen Labeler-Instanzen, an die Labeling-Aufgaben weitergeleitet werden können). Wenn eine Belegschaft für einen Anwendungsfall deklariert wird, muss ein menschlicher Spezialist ein Mitglied dieser Belegschaft sein, damit mit dem Anwendungsfall verbundene Kennzeichnungsanforderungen an diesen menschlichen Spezialisten weitergeleitet werden können.

            Fähigkeitserklärung 1408 gibt die Fähigkeiten und Mindestqualifikationspunkte an, die einzelne Arbeiter (menschliche Spezialisten) haben müssen, um die Etikettierungsaufgaben vom Etikettierer zu leiten. Das QMS kann Fähigkeiten/Kompetenzbewertungen für einzelne menschliche Spezialisten verfolgen.

            Eine vertrauensgesteuerte Workflow-Konfiguration umfasst eine Liste von Bestandteilskennzeichnern, die am CDW teilnehmen. Jedes Mitglied der Liste gibt einen Alias ​​für die Labeler-Definition sowie CDW-spezifische Metadaten (z. B. vorherige Ergebnisinjektion, maximale Anforderungen und Kosten) an.

            Ein Beispiel eines DSL-Blocks für einen CDW-Etikettierer ist in Fig. 1 dargestellt. fünfzehn . Es ist zu beachten, dass die Ergebnis-Pipe-Konfiguration für den CDW-Labeler ein Schlüssel-Wert-Paar enthält 1500 Gibt an, dass zur Laufzeit gekennzeichnete Ergebnisse in der Ausgabepipe des Szenenklassifizierungs-CDW-Beschrifters in die Trainingspipe des Szenenklassifizierungs-ml-Beschrifters kopiert werden (siehe Trainingspipe-Deklaration 1314).

            Portion 1508 listet die konstituierenden Etikettierer auf. Die CDW-Konfiguration für einen konstituierenden Etikettierer kann angeben, ob der Etikettierer als blinder Beurteilungsetikettierer oder als offener Beurteilungsetikettierer behandelt werden sollte. In der veranschaulichten Ausführungsform enthält die CDW-Konfiguration beispielsweise ein Schlüssel-Wert-Paar (z. B. Schlüssel-Wert-Paar 1510). Wenn der Wert falsch ist, zeigt dies an, dass der Etikettierer als Etikettierer mit blinder Beurteilung behandelt wird. Wenn der Wert wahr ist, wird der Labeler als Labeler für offene Urteile behandelt.

            Es versteht sich, dass dieselbe Etikettierungsanforderung als Teil einer CDW erneut an einen Etikettierer übermittelt werden kann. Zum Beispiel kann die gleiche Kennzeichnungsanforderung an einen menschlichen Kennzeichnungsspezialisten zur Kennzeichnung durch zwei verschiedene Kennzeichnungsfachkräfte übermittelt werden. Die CDW-Konfiguration eines konstituierenden Etikettierers kann die Häufigkeit beschränken, mit der dieselbe Etikettierungsanforderung als Teil einer CDW an den Etikettierer gesendet werden kann. Beispiel: Schlüssel-Wert-Paar 1512 gibt an, dass jede Labeling-Anfrage nur einmal an den Labeler scene-classification-ml gesendet werden soll, während Schlüssel-Wert-Paar 1514 gibt an, dass dieselbe Kennzeichnungsanforderung bis zu zweimal an den Kennzeichnungsdienst scene-classification-hl-blind gesendet werden kann. Die CDW-Konfiguration kann somit verwendet werden, um den Workflow-Orchestrator eines CDW-Etikettierers zu konfigurieren.

            Es sei darauf hingewiesen, dass die vorstehenden Beispiele von DSL-Blöcken für Etikettierer beispielhaft, jedoch nicht einschränkend, bereitgestellt werden. Darüber hinaus können DSL-Blöcke für andere Etikettierer oder Aufbereitungskomponenten spezifiziert werden.

            Wie oben besprochen, Plattform 102 kann Anwendungsfallvorlagen enthalten, um die Konfiguration für Endbenutzer zu vereinfachen. Use-Case-Vorlagen können Annahmen darüber treffen, was in einem deklarativen Modell für einen Use-Case enthalten sein sollte, und erfordern daher minimale Eingaben vom menschlichen Konfigurator. Die Plattform kann ein deklaratives Modell für einen Anwendungsfall speichern, wobei das deklarative Modell Konfigurationsannahmen enthält, die durch eine Anwendungsfallvorlage spezifiziert werden, und die relativ kleine Konfigurationsmenge, die vom menschlichen Benutzer bereitgestellt wird.

              • Medieneigenschaften
                • Größe
                • Format
                • Farbraum
                • Modelltyp
                • Konfiguration der Modellschicht
                • Aktive Lernkonfiguration
                • Trainingstrigger-Konfiguration
                • Ziel-Konfidenzschwellenwert
                • Bestandteil-Etikettierer
                • menschliches Fachpersonal
                • Aufgabenvorlage für menschliche Eingaben
                • Beratungsgrenzen

                Beispielhafte Anwendungsfallvorlagen umfassen, sind aber nicht beschränkt auf: Bildklassifizierung, Objektlokalisierung und -klassifizierung innerhalb von Bildern, Videoframe-Klassifizierung, Objektlokalisierung und -klassifizierung innerhalb von Videos, Verarbeitung natürlicher Sprache und Entitätserkennung. Gemäß einer Ausführungsform werden die immer und gemeinsam konfigurierten Elemente mit einer umfangreichen Benutzeroberfläche für Kunden- oder Kundendienstmitarbeiter unterstützt, während andere Elemente verborgen bleiben.

                In Fällen, in denen eine Anwendungsfallvorlage nicht den Anforderungen eines Endbenutzers entspricht, kann ein Konfigurator die Anwendungsfallkonfiguration auf DSL-Ebene ändern.

                Die Definition und Verwendung von Anwendungsfallvorlagen unterstützt die Wiederverwendung gängiger Konfigurationen. Konfigurationsänderungen können revisionsgesteuert werden, und die Benutzeroberfläche kann das Durchsuchen des Änderungsverlaufs und Diff unterstützen. Durch die Beschränkung der Elemente, die auf dieser Ebene geändert werden können, ist die interne Konsistenz der Konfiguration viel einfacher zu überprüfen.

                FEIGE. 16 veranschaulicht eine Ausführungsform des Konfigurierens einer Plattform für einen Anwendungsfall unter Verwendung einer Anwendungsfallvorlage. Einem Benutzer, wie beispielsweise einem Benutzer bei einem Kunden einer Entität, die die Kennzeichnungsplattform bereitstellt, oder einem anderen Endbenutzer kann eine UI bereitgestellt werden, um es dem Benutzer zu ermöglichen, einen neuen Anwendungsfall zu definieren. Die UI kann es dem Benutzer ermöglichen, einen Anwendungsfalltyp anzugeben, wobei jeder Anwendungsfalltyp einer Anwendungsfallvorlage entspricht. Im dargestellten Ausführungsbeispiel entspricht beispielsweise der Use-Case-Typ "Image-Classification" dem Use-Case-Template "Image-Classification", das alle Konfigurationsinformationen bis auf die Ausgabelabels für einen ML-Labeler, einen Human-Labeler (blind Urteil), einen menschlichen Etikettierer (offenes Urteil) und einen CDW-Etikettierer. Somit kann die UI Tools präsentieren, die es dem Benutzer ermöglichen, die fehlenden Konfigurationsinformationen bereitzustellen. Hier hat der Nutzer die Bezeichnungen „Outdoor“, „Küche“, „Bad“, „Sonstiges“ ausgefüllt. In derselben Schnittstelle oder einer anderen Schnittstelle können dem Benutzer Werkzeuge bereitgestellt werden, um eine Datenquelle für Trainingsdaten und/oder Inferenzdaten für den Anwendungsfall anzugeben.

                In diesem Beispiel wird ein deklaratives Modell für „My_Use_Case“ mit Konfigurationsinformationen aus dem Use-Case-Template „image-classification“ und den vom Nutzer bereitgestellten zusätzlichen Konfigurationsinformationen (z. B. die Labels) gefüllt und für den Use Case gespeichert. Zur Laufzeit wird das deklarative Modell verwendet, um den Beschriftungsgraphen zum Beschriften von Daten zu konfigurieren oder ein ML-Modell zu trainieren, das mit „My_Use_Case“ verknüpft ist.

                Die Verwendung von DSL und Anwendungsfällen wird als Beispiel bereitgestellt, und Konfigurationen zum Beschriften von Graphen können durch jeden geeigneten Mechanismus bereitgestellt werden.

                Zurück zu FIG. 11B , Konfigurationsdienst 103 bietet Schnittstellen zum Empfangen von Konfigurationen einschließlich Kosten- und Vertrauensbeschränkungen. Zum Beispiel, gemäß einer Ausführungsform, Konfigurationsdienst 103 stellt eine Benutzeroberfläche bereit, die es einem Benutzer ermöglicht, einen Anwendungsfall zu erstellen, eine Anwendungsfallvorlage auszuwählen und anwendungsfallspezifische Konfigurationsinformationen für den Anwendungsfall bereitzustellen. Konfigurationsdienst 103 erhält somit eine Konfiguration für einen Anwendungsfall (z. B. unter Verwendung von DSL oder einem anderen Format zum Definieren eines Anwendungsfalls). Wie oben erörtert, kann der Anwendungsfall Konfigurationsinformationen für Etikettierer und Konditionierungskomponenten umfassen. Ein Anwendungsfall kann beispielsweise einen Endpunkt zum Hochladen von Datensätzen, einen Endpunkt, an dem auf markierte Datensätze zugegriffen werden soll, einen Endpunkt, an dem auf Ausnahmen zugegriffen werden soll, eine Liste von Ausgabelabels, Merkmale der nicht gekennzeichneten Daten (z. Medienmerkmale wie Größe, Format, Farbraum), Pipelines (z. B. Datenvalidierungs- und Vorbereitungspipelines), maschinelle Lernmerkmale (z. B. ML-Modelltypen, Modellschichtkonfiguration, aktive Lernkonfiguration, Trainingsdatenkonfiguration), vertrauensgesteuerter Workflow Konfiguration (z. B. Ziel-Konfidenzschwellenwert, Bestandteilskennzeichnungen, menschliches Fachpersonal, Aufgabenvorlagen für menschliche Eingaben), Kosten- und Qualitätsbeschränkungen oder andere Informationen.

                Wenn ein Endbenutzer einen Anwendungsfall ausführen möchte, wird der Konfigurationsdienst 103 interagiert mit dem Eingabedienst 104, gerichteter Graphendienst 105, vertrauensorientierter Workflow-Service 106, Scoring-Service 107, ML-Plattform 108 und Dispatcher-Service 109 um einen Workflow zu erstellen, der vom Anwendungsfall konfiguriert wurde. Dem Arbeitsablauf kann eine Arbeitsablauf-ID zugewiesen werden.

                In Bezug auf den Eingabedienst 104, kann es mehrere Mechanismen geben, um der Plattform zu kennzeichnende Daten bereitzustellen 102, z. B. eine Web-API, ein S3-Bucket, ein KAFKA-Thema usw. Konfigurationsdienst 103 bietet Eingabedienst 104 mit den Endpunktinformationen für den Endpunkt, der zum Empfangen von zu beschriftenden Datensätzen verwendet werden soll. Die Konfigurationsinformationen können Authentifizierungsinformationen für den Endpunkt und andere Informationen umfassen.

                Gezielter Grafikservice 105 erstellt gerichtete Graphen für die Labeler des Anwendungsfalls. Gemäß einer Ausführungsform enden alle gerichteten Graphen in einem Erfolgsknoten oder einem Fehlerknoten. Wenn der gerichtete Graph bei Erfolg beendet wird, wird das Ergebnis an den Ausgabedienst gesendet 115. Der gerichtete Graph-Dienst 105 erstellt gerichtete Graphen von Komponenten, um Labeler zu erstellen (z. B. Labeler 110). Wie oben erörtert, kann ein bestimmter Labeler eine Reihe von Komponenten umfassen, die Komponenten (z. B. Filter, Splitter, Joiner, Aggregatoren) und funktionale Komponenten (z. B. aktive Datensatzselektoren, ML-Trainingskomponente, ML-Modell, menschliche Labeler-Instanz, an die eine Aufgabe Schnittstelle bereitgestellt werden). Gezielter Grafikservice 105 bestimmt den gerichteten Graphen der Komponenten und deren Ausführungsreihenfolge, um Etikettierer gemäß der Konfiguration zu erstellen. Es ist anzumerken, dass einige Etikettierer andere Etikettierer umfassen können. Somit kann ein bestimmter Labeler selbst ein Graph innerhalb eines anderen Labeler-Graphen sein.

                Konfigurationsdienst 103 besteht den gerichteten Graphendienst 105 die Konfigurationen für die einzelnen Human-, ML- und anderen Labeler eines Anwendungsfalls, so dass ein gerichteter Graph-Dienst 105 können die verschiedenen Komponenten zu den angegebenen Etikettierern zusammenstellen. Gemäß einer Ausführungsform ist der Konfigurationsdienst 103 übergibt Labeler-DSL-Blöcke an den Directed-Graph-Service 105.

                Ein CDW kann verschiedene konstituierende Labeler umfassen. Für einen Anwendungsfall, der einen CDW-Labeler verwendet, einen gerichteten Graphendienst 105 erstellt gerichtete Graphen für jeden der konstituierenden Labeler des CDW- und CDW-Dienstes 106 bestimmt den nächsten konstituierenden Labeler, an den eine Eingabeanforderung weitergeleitet werden soll – d. h. CDW-Dienst 106 stellt den Workflow-Orchestrator für einen CDW-Labeler bereit. Konfigurationsdienst 103 besteht den CDW-Dienst 106 der Pool von Etikettierern in einem CDW, einschließlich statischer Merkmale dieser Etikettierer wie ihre Eingabe- und Ausgabepipes, Beschränkungsinformationen (Zeit, Preis, Vertrauen). Es übergibt auch die Konfiguration, wo nicht-statische Informationen für die Etikettierer zu erhalten sind, z. aktuelle Beratungskosten, aktuelle Latenz und Durchsatz sowie aktuelle Qualität. Gemäß einer Ausführungsform ist der Konfigurationsdienst 103 übergibt den DSL-Block für einen CDW-Labeler an den CDW-Dienst 106.

                Wertungsdienst 107 kann das Qualitätsüberwachungs-Subsystem (QMS) für den Anwendungsfall implementieren. In einigen Ausführungsformen sind die Algorithmen, die zum Bewerten von Labeler-Instanzen verwendet werden, als Teil eines Anwendungsfalls konfigurierbar. Zum Beispiel für einen Anwendungsfall zum Beschriften von Bildern, bei dem mehrere Beschriftungen angewendet werden können, den Konfigurationsdienst 103 kann dem Konfigurierer die Möglichkeit bieten, auszuwählen, wie die Ergebnisse bewertet werden, wenn eine Kennzeichnungsinstanz teilweise korrekt ist (z. ). Konfigurationsdienst 103 kann Scoring-Dienst konfigurieren 107 mit einem Hinweis auf den für den Anwendungsfall zu verwendenden Bewertungsmechanismus.

                Wenn ein Etikettierer für einen Anwendungsfall ein ML-Etikettierer ist, Konfigurationsdienst 103 übergibt modellspezifische Informationen an den Modellplattformdienst 108 B. mit dem ML-Algorithmus usw. Der ML-Modellplattformdienst 108 kann sich mit der entsprechenden ML-Modellplattform verbinden.

                Dispatcher-Service 109 ist verantwortlich für die Interaktion mit menschlichen Spezialisten. Dispatcher-Service 109 leitet Aufgaben und Aufgabenschnittstellen an menschliche Spezialisten weiter und empfängt die Kennzeichnungsausgabe für menschliche Spezialisten. Konfigurationsdienst 103 stellt Konfigurationsinformationen für menschliche Etikettierer für den Dispatcher-Service bereit 109, z. Zum Beispiel Konfigurationsdienst 103 kann die DSL-Blöcke für menschliche Etikettierer dem Dispatcher-Dienst bereitstellen 109 damit der Dispatcher-Service 109 Aufgaben richtig verteilen können.

                Wenden wir uns der FIG. 11C , Eingabedienst 104 empfängt zu kennzeichnende Eingabedatensätze und generiert Kennzeichnungsanforderungen an den gerichteten Graphendienst 105. Die Anforderungen sind mit der Workflow-ID verknüpft. Wenn eine Labeling-Anfrage von einem CDW-Labeler verarbeitet wird, Directed Graph Service 105 sendet die Anfrage an den CDW-Dienst 106, bestimmt der CDW-Dienst den nächsten konstituierenden Etikettierer, der die Eingabeanforderung verarbeiten soll. Gezielter Grafikservice 105 führt den gerichteten Graphen für den ausgewählten Labeler aus und die Labeling-Anfrage wird an die ML-Plattform gesendet 108 oder der Dispatcher-Service 109 je nachdem, ob der Etikettierer ein ML-Etikettierer oder ein Human-Etikettierer ist. Nachdem die Etikettierungsanfrage vollständig vom Workflow verarbeitet wurde, wird das Etikettierungsergebnis dem Endbenutzer über den Ausgabedienst zur Verfügung gestellt 115.

                Wie oben besprochen, Scoring-Service 107 kann ein Subsystem zur Qualitätsüberwachung bereitstellen. Wertungsdienst 107 ist verantwortlich für die Pflege der aktuellen Scores für die Labeler-Instanzen (z. B. einzelne Modelle oder menschliche Spezialisten). Somit ist, wie in FIG. 11D kann der Scoring-Server Scoring-Informationen an den CDW-Dienst übermitteln 106, ML-Plattformdienst 108 und Dispatcher-Service 109.

                Obwohl die Erfindung in Bezug auf spezifische Ausführungsformen davon beschrieben wurde, sind diese Ausführungsformen lediglich veranschaulichend und die Erfindung nicht einschränkend. Die Beschreibung hier (einschließlich der Offenbarung der zugehörigen vorläufigen US-Anmeldung Nr. 62/950,699) soll nicht erschöpfend sein oder die Erfindung auf die hierin offenbarten genauen Formen beschränken (und insbesondere die Aufnahme einer bestimmten Ausführungsform, eines Merkmals oder einer Funktion). soll den Umfang der Erfindung nicht auf solche Ausführungsformen, Merkmale oder Funktionen beschränken). Vielmehr soll die Beschreibung veranschaulichende Ausführungsformen, Merkmale und Funktionen beschreiben, um einem Durchschnittsfachmann das Verständnis der Erfindung zu ermöglichen, ohne die Erfindung auf eine besonders beschriebene Ausführungsform, ein Merkmal oder eine Funktion zu beschränken. Während spezifische Ausführungsformen und Beispiele für die Erfindung hier nur zu illustrativen Zwecken beschrieben werden, sind verschiedene äquivalente Modifikationen innerhalb des Gedankens und Umfangs der Erfindung möglich, wie der Fachmann erkennen und anerkennen wird. Wie angegeben, können diese Modifikationen an der Erfindung im Lichte der vorstehenden Beschreibung von veranschaulichten Ausführungsformen der Erfindung vorgenommen werden und sollen im Geist und Umfang der Erfindung enthalten sein.

                Obwohl die Erfindung hierin unter Bezugnahme auf bestimmte Ausführungsformen davon beschrieben wurde, sind somit in den vorstehenden Offenbarungen ein Spielraum für Modifikationen, verschiedene Änderungen und Ersetzungen beabsichtigt, und es versteht sich, dass in einigen Fällen einige Merkmale von Ausführungsformen der Erfindung ohne eine entsprechende Verwendung anderer Merkmale verwendet werden, ohne vom Schutzumfang und Geist der Erfindung, wie dargelegt, abzuweichen. Daher können viele Modifikationen vorgenommen werden, um eine bestimmte Situation oder ein bestimmtes Material an den wesentlichen Umfang und Geist der Erfindung anzupassen.

                Die Bezugnahme in dieser gesamten Beschreibung auf „eine Ausführungsform“, „eine Ausführungsform“ oder „eine spezifische Ausführungsform“ oder eine ähnliche Terminologie bedeutet, dass ein bestimmtes Merkmal, eine Struktur oder ein Merkmal, das in Verbindung mit der Ausführungsform beschrieben wurde, in mindestens einer Ausführungsform enthalten ist und möglicherweise nicht notwendigerweise in allen Ausführungsformen vorhanden sein. Somit beziehen sich jeweilige Auftritte der Ausdrücke „in einer Ausführungsform“, „in einer Ausführungsform“ oder „in einer spezifischen Ausführungsform“ oder einer ähnlichen Terminologie an verschiedenen Stellen in dieser Beschreibung nicht notwendigerweise auf dieselbe Ausführungsform. Darüber hinaus können die bestimmten Merkmale, Strukturen oder Eigenschaften einer bestimmten Ausführungsform auf jede geeignete Weise mit einer oder mehreren anderen Ausführungsformen kombiniert werden. Es versteht sich, dass andere Variationen und Modifikationen der hier beschriebenen und veranschaulichten Ausführungsformen im Lichte der Lehren hierin möglich sind und als Teil des Wesens und Umfangs der Erfindung zu betrachten sind.

                Darüber hinaus sind hierin angegebene Beispiele oder Darstellungen in keiner Weise als Beschränkungen, Beschränkungen oder ausdrückliche Definitionen von Begriffen oder Begriffen, mit denen sie verwendet werden, zu betrachten. Stattdessen sind diese Beispiele oder Darstellungen als in Bezug auf eine bestimmte Ausführungsform beschrieben und nur illustrativ zu betrachten. Der Durchschnittsfachmann wird erkennen, dass jeder Begriff oder alle Begriffe, mit denen diese Beispiele oder Veranschaulichungen verwendet werden, andere Ausführungsformen umfassen, die damit oder an anderer Stelle in der Beschreibung angegeben werden können oder nicht, und alle diese Ausführungsformen sollen in der Beschreibung enthalten sein Geltungsbereich dieses Begriffs oder dieser Begriffe. Sprache, die solche nicht einschränkenden Beispiele und Veranschaulichungen bezeichnet, beinhaltet, ist aber nicht beschränkt auf: „zum Beispiel“, „zum Beispiel“, „z. B.“, „in einer Ausführungsform“.

                In der Beschreibung hierin werden zahlreiche spezifische Details bereitgestellt, wie beispielsweise Beispiele von Komponenten und/oder Verfahren, um ein gründliches Verständnis von Ausführungsformen der Erfindung zu ermöglichen. Ein Fachmann wird jedoch erkennen, dass eine Ausführungsform ohne eines oder mehrere der spezifischen Details oder mit anderen Vorrichtungen, Systemen, Baugruppen, Verfahren, Komponenten, Materialien, Teilen und/oder den mögen. In anderen Fällen werden wohlbekannte Strukturen, Komponenten, Systeme, Materialien oder Operationen nicht speziell gezeigt oder im Detail beschrieben, um zu vermeiden, dass Aspekte von Ausführungsformen der Erfindung verschleiert werden. Während die Erfindung unter Verwendung einer bestimmten Ausführungsform veranschaulicht werden kann, beschränkt dies die Erfindung nicht und beschränkt sie nicht auf eine bestimmte Ausführungsform, und ein Durchschnittsfachmann wird erkennen, dass zusätzliche Ausführungsformen leicht verständlich sind und ein Teil dieser Erfindung sind.

                Der Fachmann wird erkennen, dass Ausführungsformen in einer Vielzahl von Computersystemkonfigurationen implementiert oder praktiziert werden können, einschließlich, ohne Einschränkung, Mehrprozessorsysteme, Netzwerkvorrichtungen, Minicomputer, Großrechner, Datenprozessoren und dergleichen. Ausführungsformen können in verteilten Computerumgebungen verwendet werden, in denen Aufgaben oder Module von entfernten Verarbeitungsgeräten ausgeführt werden, die über ein Kommunikationsnetzwerk wie ein LAN, WAN und/oder das Internet verbunden sind. In einer verteilten Computerumgebung können sich Programmmodule oder Subroutinen sowohl in lokalen als auch in entfernten Speichergeräten befinden. Diese Programmmodule oder Subroutinen können beispielsweise auf computerlesbaren Medien gespeichert oder verteilt, als Firmware in Chips gespeichert sowie elektronisch über das Internet oder über andere Netzwerke (einschließlich drahtloser Netzwerke) verteilt werden. Beispielchips können elektrisch löschbare programmierbare Nur-Lese-Speicher-(EEPROM)-Chips umfassen.

                Hierin beschriebene Ausführungsformen können in Form einer Steuerlogik in Software oder Hardware oder einer Kombination von beiden implementiert werden. Die Steuerlogik kann in einem Informationsspeichermedium, wie beispielsweise einem computerlesbaren Medium, als eine Vielzahl von Anweisungen gespeichert sein, die geeignet sind, eine Informationsverarbeitungsvorrichtung anzuweisen, einen Satz von Schritten auszuführen, die in den verschiedenen Ausführungsformen offenbart sind. Basierend auf der Offenbarung und den Lehren, die hier bereitgestellt werden, wird ein Durchschnittsfachmann andere Wege und/oder Verfahren zum Implementieren der Erfindung erkennen. Hier beschriebene Schritte, Operationen, Verfahren, Routinen oder Teile davon werden unter Verwendung einer Vielzahl von Hardware implementiert, wie etwa CPUs, anwendungsspezifische integrierte Schaltkreise, programmierbare Logikvorrichtungen, feldprogrammierbare Gate-Arrays, optische, chemische, biologische, quanten- oder nanotechnologische Systeme oder andere Mechanismen.

                Softwareanweisungen in Form von computerlesbarem Programmcode können ganz oder teilweise, vorübergehend oder dauerhaft auf einem nicht flüchtigen computerlesbaren Medium gespeichert werden. Der computerlesbare Programmcode kann von einem Prozessor bearbeitet werden, um hierin beschriebene Schritte, Operationen, Verfahren, Routinen oder Teile davon durchzuführen. Ein "computerlesbares Medium" ist ein Medium, das Daten in einem von einem Computer lesbaren Format speichern kann und kann jede Art von Datenspeichermedium umfassen, das von einem Prozessor gelesen werden kann. Beispiele für nichtflüchtige computerlesbare Medien können unter anderem flüchtige und nichtflüchtige Computerspeicher wie RAM, ROM, Festplatten, Solid-State-Laufwerke, Datenkassetten, Magnetbänder, Disketten, Flash-Speicher sein Laufwerke, optische Datenspeichergeräte, Compact-Disc-Festwertspeicher. In einigen Ausführungsformen können sich computerlesbare Anweisungen oder Daten in einem Datenarray befinden, wie beispielsweise einem Direktanschlussarray oder einem anderen Array. Die computerlesbaren Anweisungen können von einem Prozessor ausführbar sein, um Ausführungsformen der Technologie oder Teile davon zu implementieren.

                Ein „Prozessor“ umfasst jedes Hardwaresystem, jeden Mechanismus oder jede Komponente, die Daten, Signale oder andere Informationen verarbeitet. Ein Prozessor kann ein System mit einer Allzweck-Zentralverarbeitungseinheit, mehreren Verarbeitungseinheiten, einer dedizierten Schaltung zum Erzielen von Funktionalität oder anderen Systemen umfassen. Die Verarbeitung muss nicht auf einen geografischen Standort beschränkt sein oder zeitlich begrenzt sein. Zum Beispiel kann ein Prozessor seine Funktionen in „Echtzeit“, „Offline“, in einem „Stapelmodus“ usw. ausführen. Teile der Verarbeitung können zu unterschiedlichen Zeiten und an unterschiedlichen Orten von unterschiedlichen (oder gleichen) Verarbeitungssysteme bzw.

                Es können verschiedene Programmiertechniken verwendet werden, wie zum Beispiel prozedural oder objektorientiert. Jede geeignete Programmiersprache kann verwendet werden, um die Routinen, Verfahren oder Programme von Ausführungsformen der hierin beschriebenen Erfindung zu implementieren, einschließlich R, Python, C, C++, Java, JavaScript, HTML oder jeden anderen Programmier- oder Skriptcode usw.Kommunikationen zwischen Computern, die Ausführungsformen implementieren, können unter Verwendung beliebiger elektronischer, optischer, Hochfrequenzsignale oder anderer geeigneter Verfahren und Kommunikationswerkzeuge in Übereinstimmung mit bekannten Netzwerkprotokollen durchgeführt werden. Jede bestimmte Routine kann auf einem einzelnen Computerverarbeitungsgerät oder mehreren Computerverarbeitungsgeräten, einem einzelnen Computerprozessor oder mehreren Computerprozessoren ausgeführt werden. Daten können in einem einzigen Speichermedium gespeichert oder über mehrere Speichermedien verteilt werden. In einigen Ausführungsformen können Daten in mehreren Datenbanken, mehreren Dateisystemen oder einer Kombination davon gespeichert werden.

                Obwohl die Schritte, Operationen oder Berechnungen in einer bestimmten Reihenfolge dargestellt werden können, kann diese Reihenfolge in verschiedenen Ausführungsformen geändert werden. In einigen Ausführungsformen können einige Schritte weggelassen werden. Ferner können in einigen Ausführungsformen zusätzliche oder alternative Schritte durchgeführt werden. In einigen Ausführungsformen können, sofern in dieser Beschreibung mehrere Schritte als sequentiell gezeigt sind, einige Kombinationen solcher Schritte in alternativen Ausführungsformen gleichzeitig ausgeführt werden. Die hierin beschriebene Abfolge von Operationen kann durch einen anderen Prozess, wie etwa ein Betriebssystem, einen Kernel usw., unterbrochen, ausgesetzt oder auf andere Weise gesteuert werden. Die Routinen können in einer Betriebssystemumgebung oder als eigenständige Routinen arbeiten. Hierin beschriebene Funktionen, Routinen, Verfahren, Schritte und Operationen können in Hardware, Software, Firmware oder einer beliebigen Kombination davon ausgeführt werden.

                Es versteht sich, dass eines oder mehrere der in den Zeichnungen/Figuren dargestellten Elemente auch getrennter oder integrierter implementiert oder in bestimmten Fällen sogar entfernt oder als funktionsunfähig gemacht werden können, wie es gemäß einer bestimmten Anwendung nützlich ist. Außerdem sollten alle Signalpfeile in den Zeichnungen/Figuren nur als beispielhaft und nicht einschränkend angesehen werden, sofern nicht ausdrücklich anders angegeben.

                Wie hierin verwendet, sollen die Begriffe „umfasst“, „umfassend“, „beinhaltet“, „einschließlich“, „hat“, „habend“ oder jede andere Variation davon eine nicht ausschließliche Aufnahme abdecken. Zum Beispiel ist ein Prozess, Produkt, Artikel oder eine Vorrichtung, die eine Liste von Elementen umfasst, nicht notwendigerweise auf diese Elemente beschränkt, sondern kann andere Elemente enthalten, die nicht ausdrücklich aufgeführt sind oder einem solchen Prozess, Produkt, Artikel oder einer solchen Vorrichtung innewohnen.

                Darüber hinaus soll der Begriff „oder“, wie hierin verwendet, im Allgemeinen „und/oder“ bedeuten, sofern nicht anders angegeben. Eine Bedingung A oder B wird beispielsweise durch eine der folgenden Bedingungen erfüllt: A ist wahr (oder vorhanden) und B ist falsch (oder nicht vorhanden), A ist falsch (oder nicht vorhanden) und B ist wahr (oder vorhanden) , und sowohl A als auch B sind wahr (oder vorhanden). Wie hierin verwendet, umfasst ein Begriff, dem „ein“ oder „ein“ vorangestellt ist (und „der“, wenn die vorangehende Basis „ein“ oder „ein“ ist) sowohl den Singular als auch den Plural eines solchen Begriffs, es sei denn, im Anspruch wird ausdrücklich etwas anderes angegeben (dh , dass der Hinweis „a“ oder „an“ eindeutig nur den Singular oder nur den Plural bezeichnet). Wie in der Beschreibung hierin und in der gesamten Bedeutung von „in“ verwendet, umfasst auch „in“ und „an“, sofern der Kontext nicht eindeutig etwas anderes vorschreibt.

                Obwohl die vorstehende Beschreibung spezifische Ausführungsformen beschreibt, werden zahlreiche Änderungen in den Details der hierin offenbarten Ausführungsformen und zusätzlichen Ausführungsformen für den Durchschnittsfachmann unter Bezugnahme auf diese Offenbarung offensichtlich und können von diesen vorgenommen werden. In diesem Zusammenhang sind die Beschreibung und die Figuren eher veranschaulichend als einschränkend zu betrachten, und alle derartigen Modifikationen sollen im Umfang dieser Offenbarung enthalten sein.


                Neueste Salesforce.com-Patente:

                Ein Teil der Offenbarung dieses Patentdokuments enthält Material, das dem Urheberrechtsschutz unterliegt. Der Urheberrechtsinhaber hat keine Einwände gegen die Faksimile-Reproduktion des Patentdokuments oder der Patentoffenbarung, wie sie in der Patentakte oder -aufzeichnungen des US-Patent- und Markenamts erscheinen, behält sich jedoch ansonsten alle Urheberrechte vor.

                TECHNISCHEN BEREICH

                Eine oder mehrere Implementierungen beziehen sich allgemein auf Datenbanksysteme und Cloud-Computing-Systeme und insbesondere auf Anwendungsprogrammierschnittstellen (APIs) zur Interaktion mit solchen Datenbank- und Cloud-Computing-Systemen.

                Mandantenfähige Datenbanksysteme ermöglichen es Mandanten, Datenbankressourcen in einer logischen Datenbank gemeinsam zu nutzen. Die Datenbanken selbst werden normalerweise gemeinsam genutzt, und jeder Mandant ist normalerweise mit einer Spalte oder einem Feld für die Organisationskennung (Organisations-ID) verknüpft, die verwendet werden kann, um Zeilen oder Datensätze zu identifizieren, die zu jedem Mandanten gehören. Jeder Mandant kann seine eigenen benutzerdefinierten Daten bereitstellen, die das Definieren von benutzerdefinierten Objekten und benutzerdefinierten Feldern sowie das Festlegen eines oder mehrerer benutzerdefinierter Felder als benutzerdefinierte Indexfelder umfassen können.

                Einige Mieter betreiben ihre eigenen Plattformen, um ihren eigenen Abonnenten oder Benutzern Dienste bereitzustellen. Beispielsweise können solche Plattformen E-Commerce-Anwendungen und -Dienste wie digitale Einzelhandelsanwendungen und Auftrags- und Zahlungsverarbeitungsanwendungen (z. B. Einkaufswagenanwendungen) umfassen. Diese Mieter können Anwendungen entwickeln, die mit dem mandantenfähigen Datenbanksystem interagieren oder sich darin integrieren und Daten aus einem zugeordneten Mieterbereich verwenden. Die Mieterplattformen/-anwendungen können basierend auf verschiedenen Benutzerinteraktionen mit den Anwendungen/Plattformen auf Mieterdaten zugreifen und/oder diese aktualisieren. Häufig wird die Integration in das mandantenfähige Datenbanksystem über anwendungsbasierte Anwendungsprogrammierschnittstellen (APIs) erreicht.

                KURZE BESCHREIBUNG DER ZEICHNUNGEN

                Die enthaltenen Zeichnungen dienen zu Veranschaulichungszwecken und dienen dazu, Beispiele möglicher Strukturen und Operationen für die offenbarten erfinderischen Systeme, Vorrichtungen, Verfahren und computerlesbaren Speichermedien bereitzustellen. Diese Zeichnungen schränken in keiner Weise irgendwelche Änderungen in Form und Detail ein, die von einem Fachmann vorgenommen werden können, ohne vom Geist und Umfang der offenbarten Implementierungen abzuweichen.

                FEIGE. 1A zeigt eine beispielhafte Umgebung, in der ein On-Demand-Datenbankdienst gemäß verschiedenen Ausführungsformen verwendet werden kann. FEIGE. 1B zeigt eine beispielhafte Implementierung von Elementen von FIG. 1A und beispielhafte Verbindungen zwischen diesen Elementen gemäß verschiedenen Ausführungsformen. FEIGE. 2A zeigt eine beispielhafte Architektur einer On-Demand-Datenbankdienstumgebung gemäß verschiedenen Ausführungsformen. FEIGE. 2B zeigt beispielhafte Architekturkomponenten der On-Demand-Datenbankdienstumgebung von 1 . 2A gemäß verschiedenen Ausführungsformen.

                FEIGE. 3 veranschaulicht eine beispielhafte Auftragsverwaltungsarchitektur gemäß verschiedenen Ausführungsformen.

                FEIGE. 4 zeigt ein beispielhaftes Datenmodell zum Praktizieren verschiedener hierin erörterter Ausführungsformen.

                FIG. Die 5 – 19 veranschaulichen verschiedene beispielhafte grafische Benutzerschnittstellen (GUIs), die die Bestell-APIs gemäß verschiedenen hierin erörterten Ausführungsformen implementieren. Insbesondere zeigen die Fign. 5 – 8 zeigen verschiedene Instanzen einer beispielhaften GUI in verschiedenen Stadien des Stornierens einer aktiven Bestellung. 9 – 12 zeigen verschiedene Instanzen einer beispielhaften GUI in verschiedenen Stadien des Anwendens eines Rabatts auf eine Bestellsumme. 13 – 16 zeigen verschiedene Instanzen einer beispielhaften GUI in verschiedenen Stadien des Anwendens eines Rabatts auf einzelne Artikel und FIG. 17-19 zeigen verschiedene Instanzen einer Beispiel-GUI in verschiedenen Phasen der Anwendung eines Rabatts auf Versandkosten.

                FIG. 20 – 21 zeigen beispielhafte Prozesse zum Ausführen der verschiedenen hierin erörterten Ausführungsformen.

                DETAILLIERTE BESCHREIBUNG

                Offenbarte Ausführungsformen beziehen sich auf Auftragsverwaltung und E-Commerce-bezogene Dienste. Auftragsverwaltungssysteme sind Anwendungen und Dienste zur Auftragserfassung und -abwicklung. Eine Bestellung ist ein Objekt (z. B. ein Datenbankobjekt), das eine Vereinbarung zwischen einem Produkt-/Dienstleistungsanbieter und einem Verbraucher darstellt, Dienstleistungen zu erbringen oder Produkte in bekannter Menge, Preis und zu einem bestimmten Datum zu liefern. Die Auftragsverwaltung umfasst die Behandlung der Ereignisse, die während des Lebenszyklus einer Bestellung auftreten, wie z. B.: Auftragserstellung (z an einen externen Zahlungsabwickler gesendet), Zuordnung (z. B. werden ein oder mehrere Versandauftragsdatensätze erstellt und ihnen werden Artikel im Kundenauftrag aus dem Bestand zugeordnet), Fulfillment (z. B. Kommissionierung, Verpackung und Versand des gekauften Artikels), und Rückgabe/Umtausch. Auftragsobjekte in Datenbanksystemen (z. B. Mieterdatenbanksystemen und dergleichen) sind unveränderlich, um die geschäftliche und finanzielle Integrität zu wahren, insbesondere zu Prüfungszwecken.

                Derzeit ist es schwierig, Auftragsobjekte nach ihrer Aktivierung zu ändern. Um einen bestehenden Auftrag zu ändern, muss der Benutzer einen Änderungsauftrag abgeben, bei dem es sich im Wesentlichen um einen anderen Auftrag handelt, den der Benutzer auf den ursprünglichen Auftrag bezieht. Die zugrunde liegende Logik wertet den Änderungsauftrag und den ursprünglichen Auftrag aus und wendet die Änderung an. Am Ende können zahlreiche Änderungsaufträge an das Mietersystem übermittelt werden, um beispielsweise einen Fehler zu beheben, der in einem früheren Änderungsauftrag gemacht wurde, einen Rabatt oder Steuern auf eine Bestellung anzuwenden und dergleichen. Die Ausführung der Transaktionen für diese überflüssigen Änderungsaufträge verbraucht jedoch Rechen-, Speicher- und Netzwerkressourcen.

                Zu den Ausführungsformen gehören Auftrags-APIs, die verwendet werden, um Änderungen und Stornierungen an bestehenden Auftragsobjekten vorzunehmen (z. B. nach der Aktivierung des ursprünglichen Auftrags). Die Bestell-APIs umfassen eine Bestellabruf-API und eine Bestelländerungs-API. Die API zum Abrufen von Bestellungen kann verwendet werden, um den aktuellen Status einer Bestellung abzurufen, den zusammengefassten Status einer Bestellung zu einem bestimmten Datum abzurufen (z. B. ein ausgewähltes Datum, Monat, Quartal, Ende eines Geschäftsjahres oder dergleichen), und Abrufen eines potenziellen Status einer Bestellung zusammen mit bestimmten Änderungen (z. B. Änderungen an Werbebuchungen usw.). Auf diese Weise können Benutzer vorhandene Aufträge mit gewünschten Änderungen anzeigen, ohne diese Änderungen in die zugrunde liegende Datenbank zu schreiben. Diese Fähigkeit kann beispielsweise für Finanzberichtszwecke, die Verarbeitung von Buchungen, die Aktualisierung einer Einkaufswagenanwendung basierend auf hinzugefügten oder gelöschten Artikeln und/oder geänderten Versandorten und/oder dergleichen von Vorteil sein.

                Die Auftragsänderungs-API verarbeitet die Geschäftslogik zur Verarbeitung von Auftragsänderungen, einschließlich Änderungen der Menge einer bestehenden Bestellung (z. B. aufgrund von Auftragsstornierungen oder Rücksendungen) und Anwenden von Positionsänderungen auf eine bestehende Bestellung. Die Mengenänderungen können beispielsweise Bestellpositionsreduzierungen, Bestellstornierungen, Bestellpositionserhöhungen und dergleichen umfassen. Die Positionsänderungen können beispielsweise Artikelpreisrabatte, Versandkostenerhöhungen/-senkungen, Steueranpassungen und/oder ähnliche Anpassungen umfassen. Die Geschäftslogik verarbeitet Auftragspositionsänderungen, indem sie beispielsweise Artikel identifiziert, die aufgrund des Erfüllungsstatus der Bestellung stornierbar sind, bestimmt, ob Versandkosten angepasst oder storniert werden sollen, bestimmt, ob Rabatte angewendet oder storniert werden sollen, wenn die Bestellung zu Preisänderungen berechtigt ist, einschließlich Erhöhungen oder Senkungen, und Berechnung von Bestellpositionen, Steuern und Anpassungspreisen. Andere Ausführungsformen können beschrieben und/oder offenbart werden.

                Wie bereits erwähnt, kann das Senden zahlreicher Anfragen zum Aktualisieren von Auftragsobjekten rechenintensiv sein und große Mengen an Rechen-, Speicher- und Netzwerkressourcen verbrauchen, zumindest aus Sicht des Cloud-Computing- oder Datenbanksystems. Die von der vorliegenden Offenbarung beschriebenen Auftrags-API-Ausführungsformen reduzieren den Ressourcenverbrauch, indem sie es Benutzern ermöglichen, einen Auftragsobjektstatus mit ausgewählten Änderungen anzuzeigen, ohne diese Änderungen an den zugrunde liegenden Daten festzuschreiben. Die hierin erörterten Ausführungsformen sind eine technologische Verbesserung, da die Ausführungsformen die Gesamtzahl der zu verarbeitenden Transaktionen reduzieren, was es dem Cloud-Computing- und/oder Datenbanksystem ermöglicht, den Netzwerk-, Speicher- und Rechenressourcen-Overhead im Zusammenhang mit dem Empfangen, Verarbeiten, und Ausführen der Transaktionen.

                Beispiele für Systeme, Vorrichtungen, computerlesbare Speichermedien und Verfahren gemäß den offenbarten Implementierungen werden in diesem Abschnitt beschrieben. Diese Beispiele werden lediglich bereitgestellt, um Kontext hinzuzufügen und das Verständnis der offenbarten Implementierungen zu unterstützen. Dem Fachmann ist somit klar, dass die offenbarten Implementierungen ohne einige oder alle der bereitgestellten spezifischen Details praktiziert werden können. In anderen Fällen wurden bestimmte Prozess- oder Verfahrensoperationen, die hier auch als "Blöcke" bezeichnet werden, nicht im Detail beschrieben, um eine unnötige Verdunkelung der offenbarten Implementierungen zu vermeiden. Andere Implementierungen und Anwendungen sind ebenfalls möglich, und als solche sollten die folgenden Beispiele weder im Umfang noch im Umfang als endgültig oder einschränkend angesehen werden.

                In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil der Beschreibung bilden und in denen zur Veranschaulichung spezifische Implementierungen gezeigt sind. Obwohl diese offenbarten Implementierungen ausreichend detailliert beschrieben sind, um es einem Fachmann zu ermöglichen, die Implementierungen zu praktizieren, versteht es sich, dass diese Beispiele nicht einschränkend sind, so dass andere Implementierungen verwendet werden können und Änderungen an den offenbarten Implementierungen vorgenommen werden können, ohne dass von ihrem Geist und Umfang abweichen. Zum Beispiel werden die Blöcke der hier gezeigten und beschriebenen Verfahren nicht notwendigerweise in der Reihenfolge ausgeführt, die in einigen anderen Implementierungen angegeben ist. Außerdem umfassen die offenbarten Verfahren in einigen anderen Implementierungen mehr oder weniger Blöcke als beschrieben. Als weiteres Beispiel können einige hierin als separate Blöcke beschriebene Blöcke in einigen anderen Implementierungen kombiniert werden. Umgekehrt kann das, was hier als einzelner Block beschrieben werden kann, in einigen anderen Implementierungen in mehreren Blöcken implementiert werden. Darüber hinaus ist die Konjunktion „oder“ hierin gegebenenfalls im einschließenden Sinne gemeint, sofern nicht anders angegeben, d. h. der Ausdruck „A, B oder C“ soll die Möglichkeiten von „A“, „B“, „C“ einschließen. „A und B“, „B und C“, „A und C“ und „A, B und C“.

                Beispielhafte Ausführungsformen der vorliegenden Offenbarung können in Bezug auf eine mandantenfähige und/oder Cloud-Computing-Architektur oder -Plattform beschrieben werden. Cloud Computing bezieht sich auf ein Paradigma zur Ermöglichung des Netzwerkzugriffs auf einen skalierbaren und elastischen Pool gemeinsam nutzbarer Computerressourcen mit Self-Service-Bereitstellung und Verwaltung nach Bedarf und ohne aktive Verwaltung durch Benutzer. Computerressourcen (oder einfach „Ressourcen“) sind alle physischen oder virtuellen Komponenten oder die Verwendung solcher Komponenten mit begrenzter Verfügbarkeit innerhalb eines Computersystems oder Netzwerks. Beispiele für Ressourcen umfassen Nutzung/Zugriff auf Server, Prozessor(en), Speichergeräte, Speichergeräte, Speicherbereiche, Netzwerke, Strom, Eingabe-/Ausgabegeräte (Peripheriegeräte), mechanische Geräte, Netzwerkverbindungen ( B. Kanäle/Links, Ports, Netzwerk-Sockets usw.), Betriebssysteme, virtuelle Maschinen (VMs), Software/Anwendungen, Computerdateien und/oder dergleichen. Cloud-Computing stellt Cloud-Computing-Dienste (oder Cloud-Dienste) bereit, bei denen es sich um eine oder mehrere Fähigkeiten handelt, die über Cloud-Computing angeboten werden und die unter Verwendung einer definierten Schnittstelle (z. B. einer API oder dergleichen) aufgerufen werden. Mandantenfähigkeit ist eine Funktion des Cloud Computing, bei der physische oder virtuelle Ressourcen so zugewiesen werden, dass mehrere Mandanten und ihre Berechnungen und Daten voneinander isoliert und nicht zugänglich sind. Wie hierin verwendet, bezieht sich der Begriff „Mandant“ auf eine Gruppe von Benutzern (z. B. Cloud-Dienstbenutzer), die einen gemeinsamen Zugriff mit spezifischen Privilegien auf eine Softwareinstanz und/oder einen Satz von Computerressourcen teilen. Mandanten können Einzelpersonen, Organisationen oder Unternehmen sein, die Kunden oder Benutzer eines Cloud-Computing-Dienstes oder einer Cloud-Plattform sind. Eine bestimmte Cloud-Service-Kundenorganisation kann jedoch viele verschiedene Mandanten haben, wobei ein einzelner Cloud-Service-Provider verschiedene Gruppen innerhalb der Organisation repräsentiert. Eine mandantenfähige Plattform oder Architektur, wie die hierin erörterten, kann einem Mandanten einen dedizierten Anteil einer Softwareinstanz bereitstellen, der typischerweise eines oder mehrere mandantenspezifische Daten, Benutzerverwaltung, mandantenspezifische Funktionalität, Konfiguration, Anpassungen, nicht- funktionale Eigenschaften, zugehörige Anwendungen usw. Multi-Tenancy steht im Gegensatz zu Multi-Instanz-Architekturen, bei denen separate Software-Instanzen für verschiedene Mandanten arbeiten.

                In einigen Implementierungen sind die hierin beschriebenen Benutzer Benutzer (oder „Mitglieder“) eines interaktiven Online-„Sozialen Unternehmensnetzwerks“, hier auch als „Social-Networking-System des Unternehmens“, ein „kollaboratives Unternehmensnetzwerk“ oder einfacher als ein „Unternehmensnetzwerk“. Solche Online-Unternehmensnetzwerke werden zunehmend zu einem gebräuchlichen Weg, um die Kommunikation zwischen Personen zu erleichtern, von denen jeder als Unternehmensbenutzer erkannt werden kann. Ein Beispiel für ein soziales Online-Unternehmensnetzwerk ist Chatter®, bereitgestellt von salesforce.com, Inc. in San Francisco, Kalifornien Datenbankverwaltungsdienste, auf die jeder in Verbindung mit den hierin offenbarten Techniken in einigen Implementierungen zugegriffen und diese verwendet werden kann. Diese verschiedenen Dienste können in einer Cloud-Computing-Umgebung bereitgestellt werden, wie hierin beschrieben, beispielsweise im Kontext eines mandantenfähigen Datenbanksystems. Einige der beschriebenen Techniken oder Prozesse können implementiert werden, ohne dass Software lokal installiert werden muss, d. h. auf Computergeräten von Benutzern, die mit über die Cloud verfügbaren Diensten interagieren. Während die offenbarten Implementierungen mit Bezug auf Chatter® und allgemeiner auf soziale Netzwerke von Unternehmen beschrieben werden können, sollte der Durchschnittsfachmann verstehen, dass die offenbarten Techniken weder auf Chatter® noch auf andere von Vertriebsmitarbeitern bereitgestellte Dienste und Systeme beschränkt sind. com, Inc. und kann im Kontext verschiedener anderer Datenbanksysteme wie Cloud-basierter Systeme implementiert werden, die nicht Teil eines mandantenfähigen Datenbanksystems sind oder die keine sozialen Netzwerkdienste für Unternehmen bereitstellen.

                I. Beispielsystemübersicht

                FEIGE. 1A zeigt ein Beispiel für eine Umgebung 10 in dem On-Demand-Dienste (z. B. Cloud-Computing-Dienste und/oder Datenbankdienste) gemäß verschiedenen Ausführungsformen verwendet werden können. Die Umgebung 10 umfasst Benutzersysteme 12, ein Netzwerk 14, System 16 (hier auch als „cloudbasiertes System“, „Datenbanksystem“, „Cloud-Computing-Dienst“ oder dergleichen bezeichnet) und eine oder mehrere Kundenplattformen (CPs) 50. Das Cloud-System 16 beinhaltet ein Prozessorsystem 17, eine Anwendungsplattform 18, eine Netzwerkschnittstelle 20, Mieterdatenbank (DB) 22 zum Speichern von Mieterdaten 23 (siehe z. B. Fig. 1B), System DB' 24 zum Speichern von Systemdaten 25 (siehe Fig. 1B), Programmcode 26 zur Implementierung verschiedener Funktionen des Systems 16und Prozessraum 28 zum Ausführen von DB-Systemprozessen und mandantenspezifischen Prozessen, z. B. zum Ausführen von Anwendungen als Teil eines Anwendungshostingdienstes. In einigen anderen Implementierungen, Umgebung 10 möglicherweise nicht alle dieser Komponenten oder Systeme oder andere Komponenten oder Systeme anstelle oder zusätzlich zu den oben aufgeführten.

                Das System 16 kann ein DB-System und/oder ein Cloud-Computing-Dienst sein, der ein Netzwerk oder eine andere Verbindung von Computersystemen (z. B. Server, Speichergeräte, Anwendungen usw Zugriff auf einen Pool physischer und/oder virtueller Ressourcen. In einigen Implementierungen ist das System 16 ist ein mandantenfähiges DB-System und/oder eine mandantenfähige Cloud-Computing-Plattform. In einigen Implementierungen ist das System 16 bietet Communications as a Service (CaaS), Compute as a Service (CompaaS), Database as a Service (DaaS), Data Storage as a Service (DSaaS), Firewall as a Service (FaaS), Infrastructure as a Service (IaaS) , Network as a Service (NaaS), Platform as a Service (PaaS), Security as a Service, Software as a Service (SaaS) und/oder ähnliche Cloud-Dienste.

                In einigen Implementierungen ist die Umgebung 10 ist eine Umgebung, in der ein On-Demand-DB-Dienst vorhanden ist. Ein On-Demand-DB-Service, wie er mit dem System implementiert werden kann 16, ist ein Dienst, der Benutzern außerhalb des/der Unternehmen(s) zur Verfügung gestellt wird, die das System besitzen, warten oder Zugriff darauf gewähren 16. Wie oben beschrieben, müssen sich diese Benutzer im Allgemeinen nicht um den Aufbau oder die Wartung des Systems kümmern 16. Stattdessen werden vom System bereitgestellte Ressourcen 16 kann für die Verwendung durch solche Benutzer verfügbar sein, wenn die Benutzer Dienste benötigen, die vom System bereitgestellt werden 16 das heißt, auf Nachfrage der Benutzer. Einige On-Demand-DB-Dienste können Informationen von einem oder mehreren Mandanten in Tabellen eines gemeinsamen DB-Image speichern, um ein mandantenfähiges DB-System (MTS) zu bilden. Der Begriff „mehrmandantenfähiges DB-System“ kann sich auf solche Systeme beziehen, in denen verschiedene Elemente der Hardware und Software eines DB-Systems von einem oder mehreren Kunden oder Mietern gemeinsam genutzt werden können. Zum Beispiel kann ein gegebener Anwendungsserver gleichzeitig Anfragen für eine große Anzahl von Kunden verarbeiten, und eine gegebene DB-Tabelle kann Datenzeilen speichern, wie beispielsweise Feedelemente für eine potenziell viel größere Anzahl von Kunden. Ein DB-Image kann ein oder mehrere DB-Objekte enthalten. Ein relationales DB-Managementsystem (RDBMS) oder ein Äquivalent kann das Speichern und Abrufen von Informationen für das/die DB-Objekt(e) ausführen.

                Bewerbungsplattform 18 kann ein Rahmen sein, der die Anwendungen des Systems ermöglicht 16 auszuführen, wie die Hardware- oder Software-Infrastruktur des Systems 16. In einigen Implementierungen ist die Anwendungsplattform 18 ermöglicht die Erstellung, Verwaltung und Ausführung einer oder mehrerer Anwendungen, die vom Anbieter des On-Demand-DB-Dienstes entwickelt wurden, Benutzer, die über Benutzersysteme auf den On-Demand-DB-Dienst zugreifen 12, oder Anwendungsentwickler von Drittanbietern, die über Benutzersysteme auf den On-Demand-DB-Dienst zugreifen 12.

                In einigen Implementierungen ist das System 16 implementiert ein webbasiertes Customer-Relationship-Management (CRM)-System. In einigen dieser Implementierungen ist das System beispielsweise 16 umfasst Anwendungsserver, die so konfiguriert sind, dass sie CRM-Softwareanwendungen implementieren und ausführen sowie zugehörige Daten, Code, Formulare, renderbare Webseiten und Dokumente und andere Informationen an und von Benutzersystemen bereitstellen 12 und um auf ein DB-System bezogene Daten, Objekte und Webseiteninhalte zu speichern und daraus abzurufen. In einigen MTS-Implementierungen können Daten für mehrere Mandanten in demselben physischen DB-Objekt in der Mandanten-DB gespeichert werden 22. In einigen dieser Implementierungen sind Mieterdaten in dem/den Speichermedium(en) der Mieter-DB angeordnet 22 damit die Daten eines Mieters logisch von denen anderer Mieter getrennt werden, so dass ein Mieter keinen Zugriff auf die Daten eines anderen Mieters hat, es sei denn, diese Daten werden ausdrücklich weitergegeben. Das System 16 implementiert auch andere Anwendungen als oder zusätzlich zu einer CRM-Anwendung. Zum Beispiel das System 16 kann Mandantenzugriff auf mehrere gehostete (Standard- und benutzerdefinierte) Anwendungen bereitstellen, einschließlich einer CRM-Anwendung. Anwendungen von Benutzern (oder Drittentwicklern), die CRM enthalten oder nicht, können von der Anwendungsplattform unterstützt werden 18. Die Bewerbungsplattform 18 verwaltet die Erstellung und Speicherung der Anwendungen in einem oder mehreren DB-Objekten und die Ausführung der Anwendungen in einer oder mehreren virtuellen Maschinen im Prozessraum des Systems 16. Die Anwendungen der Anwendungsplattform 18 können mit beliebigen geeigneten Programmiersprachen und/oder Entwicklungswerkzeugen entwickelt werden, wie beispielsweise den hierin erörterten. Die Anwendungen können unter Verwendung eines plattformspezifischen und/oder proprietären Entwicklungstools und/oder Programmiersprachen erstellt werden, wie beispielsweise die hierin erörterten.

                In Ausführungsformen ist der Mieterdatenspeicher 22, die Systemdatenspeicherung 24, und/oder ein anderer Datenspeicher (nicht gezeigt) beinhalten Daten zum Extrahieren-Laden-Transformieren (ELT) oder Extrahieren-Transformieren-Laden (ETL)-Daten, die Rohdaten sein können, die aus verschiedenen Quellen extrahiert und normalisiert (z. B. indiziert, partitioniert) sind , Augmented, Canonicalized, etc.) für Analysen und andere Transformationen. In einigen Ausführungsformen können die Rohdaten in den Mieterdatenspeicher geladen werden 22, die Systemdatenspeicherung 24, und/oder einem anderen Datenspeicher (nicht gezeigt) und als Schlüssel-Wert-Paare gespeichert, was es ermöglichen kann, dass die Daten in einer größtenteils nativen Form gespeichert werden, ohne dass eine wesentliche Normalisierung oder Formatierung erforderlich ist.

                Gemäß einigen Implementierungen ist jedes System 16 ist konfiguriert, um Webseiten, Formulare, Anwendungen, Daten und Medieninhalte für Benutzer-(Client-)Systeme bereitzustellen 12 um den Zugriff durch Benutzersysteme zu unterstützen 12 als Mieter des Systems 16. Als solches System 16 bietet Sicherheitsmechanismen, um die Daten jedes Mandanten getrennt zu halten, es sei denn, die Daten werden geteilt. Wenn mehr als ein MTS verwendet wird, können sie sich in unmittelbarer Nähe zueinander befinden (z. B. in einer Serverfarm in einem einzelnen Gebäude oder Campus) oder sie können an voneinander entfernten Standorten verteilt sein (z mehrere Server in Stadt A und ein oder mehrere Server in Stadt B). Wie hierin verwendet, könnte jeder MTS einen oder mehrere logisch oder physisch verbundene Server umfassen, die lokal oder über einen oder mehrere geografische Standorte verteilt sind. Darüber hinaus soll sich der Begriff „Server“ auf ein Computergerät oder -system beziehen, einschließlich Verarbeitungshardware und Prozessraum(en), ein zugehöriges Speichermedium wie ein Speichergerät oder eine DB und in einigen Fällen eine DB-Anwendung ( B. OODBMS oder RDBMS), wie in der Technik wohlbekannt ist. Es sollte auch verstanden werden, dass „Serversystem“ und „Server“ hierin oft austauschbar verwendet werden. In ähnlicher Weise können die hier beschriebenen DB-Objekte (DBOs) als Teil einer einzelnen DB, einer verteilten DB, einer Sammlung verteilter DBs, einer DB mit redundanten Online- oder Offline-Backups oder anderen Redundanzen usw DB oder Speichernetzwerk und zugehörige Verarbeitungsintelligenz.

                Das Netzwerk 14 kann ein beliebiges Netzwerk oder eine Kombination von Netzwerken von Systemen oder Geräten sein oder umfassen, die miteinander kommunizieren. Zum Beispiel das Netzwerk 14 kann ein beliebiges oder eine beliebige Kombination aus einem lokalen Netzwerk (LAN), einem drahtlosen LAN (WLAN), einem Weitverkehrsnetz (WAN), einem Telefonnetz, einem drahtlosen Netzwerk, einem Mobilfunknetz, einem Punkt-zu-Punkt-Netzwerk, einem Sternnetzwerk sein oder enthalten , Token-Ring-Netzwerk, Hub-Netzwerk oder eine andere geeignete Konfiguration, einschließlich proprietärer und/oder Unternehmensnetzwerke oder Kombinationen davon. Das Netzwerk 14 kann ein Transfer Control Protocol- und Internet Protocol (TCP/IP)-Netzwerk umfassen, wie beispielsweise das globale Netzwerk von Netzwerken, das oft als „Internet“ (mit einem großen „I“) bezeichnet wird. Das Internet wird in vielen der Beispiele hierin verwendet. Es versteht sich jedoch, dass die Netzwerke, die die offenbarten Implementierungen verwenden können, nicht darauf beschränkt sind, obwohl TCP/IP ein häufig implementiertes Protokoll ist. Das Netzwerk 14 kann ein oder mehrere Netzwerkelemente umfassen, von denen jedes einen oder mehrere Prozessoren, Kommunikationssysteme (z. B. einschließlich Netzwerkschnittstellencontroller, einen oder mehrere Sender/Empfänger, die mit einer oder mehreren Antennen verbunden sind usw.) und computerlesbare Medien umfassen kann. Beispiele für solche Netzwerkelemente können drahtlose APs (WAPs), ein Heim-/Geschäftsserver (mit oder ohne Funkfrequenz-(RF)-Kommunikationsschaltung), Router, Switches, Hubs, Funkbaken, (Makro- oder Kleinzellen-)Basisstationen, Server (z. B. eigenständig, Rack-montiert, Blade usw.) und/oder andere ähnliche Geräte/Systeme. Verbindung zum Netzwerk 14 kann über eine drahtgebundene oder eine drahtlose Verbindung unter Verwendung eines oder mehrerer der verschiedenen unten diskutierten Kommunikationsprotokolle erfolgen. Wie hierin verwendet, kann sich ein drahtgebundenes oder drahtloses Kommunikationsprotokoll auf einen Satz standardisierter Regeln oder Anweisungen beziehen, die von einem Kommunikationsgerät/-system implementiert werden, um mit anderen Geräten zu kommunizieren, einschließlich Anweisungen zum Paketieren/Entpacken von Daten, Modulieren/Demodulieren von Signalen, Implementierung von Protokollstapeln , und dergleichen. Verbindung zum Netzwerk 14 kann erfordern, dass die verschiedenen Geräte und Netzwerkelemente Softwareroutinen ausführen, die beispielsweise die sieben Schichten des Open Systems Interconnection (OSI)-Modells von Computernetzwerken oder Äquivalenten in einem drahtlosen Netzwerk ermöglichen.

                Die Benutzersysteme 12 kann mit dem System kommunizieren 16 Verwendung von TCP/IP und auf einer höheren Netzwerkebene andere gängige Internetprotokolle zur Kommunikation, wie Hypertext Transfer Protocol (HTTP), File Transfer Protocol (FTP), Andrew File System (AFS), Wireless Application Protocol (WAP), Internet Protocol (IP), Internet Protocol Security (IPsec), Session Initiation Protocol (SIP) mit Real-Time Transport Protocol (RTP oder Secure RTP (SRTP), Internet Control Message Protocol (ICMP), User Datagram Protocol (UDP), QUIC ( manchmal auch als „Quick UDP Internet Connections“ bezeichnet), Stream Control Transmission Protocol (SCTP), Web-based Secure Shell (SSH), Extensible Messaging and Presence Protocol (XMPP), WebSocket-Protokoll, Internet Group Management Protocol (IGMP), Internet Control Message Protocol (ICMP) usw. In einem Beispiel, in dem HTTP verwendet wird, muss jedes Benutzersystem 12 kann einen HTTP-Client umfassen, der allgemein als „Webbrowser“ oder einfach als „Browser“ bezeichnet wird, um HTTP-Signale zu und von einem HTTP-Server (auch als „Webserver“ bezeichnet) des Systems zu senden und zu empfangen 16. In diesem Beispiel ist jedes Benutzersystem 12 kann HTTP-Nachrichten senden und empfangen, wobei ein Header jeder Nachricht verschiedene Betriebsparameter enthält und der Text dieser Nachrichten Code- oder Quellcodedokumente enthalten kann (z. B. HTML, XML, JSON, Apex®, CSS, JSP, MessagePack™, Apache ® Thrift™, ASN.1, Google® Protocol Buffers (protobuf), DBOs oder ähnliche Objekte/Dokumente). Ein solcher HTTP-Server kann als alleinige Netzwerkschnittstelle implementiert werden 20 zwischen dem System 16 und das Netzwerk 14, aber andere Techniken können zusätzlich oder anstelle dieser Techniken verwendet werden. In einigen Implementierungen ist die Netzwerkschnittstelle 20 zwischen dem System 16 und das Netzwerk 14 enthält Funktionen zur Lastverteilung, wie z. B. Round-Robin-HTTP-Anforderungsverteiler, um Lasten auszugleichen und eingehende HTTP-Anforderungen gleichmäßig auf eine Reihe von Servern zu verteilen. Bei MTS-Implementierungen kann jeder der Server Zugriff auf die MTS-Daten haben, jedoch können stattdessen andere alternative Konfigurationen verwendet werden.

                Die Benutzersysteme 12 kann als beliebige(s) Computergerät(e) oder andere Datenverarbeitungsgeräte oder -systeme implementiert werden, die von Benutzern für den Zugriff auf das System verwendet werden können 16. Zum Beispiel eines der Benutzersysteme 12 kann ein Desktop-Computer, eine Arbeitsstation, ein Laptop-Computer, ein Tablet-Computer, ein tragbares Computergerät (z. B. Personal Data Assistants (PDAs), Pager, tragbarer Mediaplayer usw.), ein Mobiltelefon (z. B „Smartphone“) oder ein anderes WiFi-fähiges Gerät, WAP-fähiges Gerät oder ein anderes Computergerät, das direkt oder indirekt eine Verbindung zum Internet oder einem anderen Netzwerk herstellen kann (z. B. Netzwerk 14). Die Begriffe „Benutzersystem“, „Computergerät“, „Computersystem“ oder dergleichen können hierin untereinander und mit dem Begriff „Computer“ austauschbar verwendet werden.

                Wie in FIG. 1A , das Benutzersystem 12 beinhaltet ein Prozessorsystem 12A, die jede geeignete Kombination von einem oder mehreren Prozessoren umfassen kann, wie beispielsweise einer oder mehreren Zentraleinheiten (CPUs), einschließlich Einkern- oder Mehrkernprozessoren (wie die hierin erörterten), Grafikverarbeitungseinheiten (GPUs), reduziert Instruction Set Computing (RISC) Prozessoren, Acorn RISC Machine (ARM) Prozessoren, Complex Instruction Set Computing (CISC) Prozessoren, Digital Signal Processors (DSP), Programmable Logic Devices (PLDs), Field Programmable Gate Arrays (FPGAs), Application Specific Integrierte Schaltungen (ASICs), System-on-Chips (SoCs) und/oder programmierbare SoCs, Mikroprozessoren oder Controller oder andere elektronische Schaltungen, die Programmcode und/oder Softwaremodule ausführen können, um arithmetische, logische und/oder Eingabe-/ Ausgabeoperationen oder eine beliebige geeignete Kombination davon. Als Beispiel das Prozessorsystem 12A kann Intel® Pentium®- oder Core™-basierte Prozessoren, AMD Zen® Core Architecture-Prozessoren, wie Ryzen®-Prozessoren oder Accelerated Processing Units (APUs), MxGPUs oder dergleichen umfassen A, S, Prozessor(en) der W- und T-Serie von Apple® Inc. Snapdragon™-Prozessor(en) von Qualcomm® Technologies, Inc., Texas Instruments, Inc.® Open Multimedia Applications Platform (OMAP)™-Prozessor(en) MIPS Warrior M- -Klasse, Warrior I-Klasse und Warrior P-Klasse Prozessor(en) bereitgestellt von MIPS Technologies, Inc. ARM Cortex-A-, Cortex-R- und Cortex-M-Prozessorfamilie(n) gemäß Lizenz von ARM Holdings, Ltd. GeForce®, Tegra®, Titan X®, Tesla®, Shield® und/oder andere ähnliche GPUs, die von Nvidia® und/oder dergleichen bereitgestellt werden.

                Das Gedächtnissystem 12B kann jede geeignete Kombination von einem oder mehreren Speichergeräten beinhalten, wie z. B. flüchtigen Speichergeräten (z. B. Arbeitsspeicher (RAM), dynamischem RAM (DRAM) usw.) und nichtflüchtigen Speichergeräten (z. B. Nur-Lese-Speicher ( ROM), Flash-Speicher usw.). Das Gedächtnissystem 12B kann Programmcode für verschiedene Anwendungen speichern (z. B. Anwendung(en) 12ja und/oder andere hierin erörterte Anwendungen) zum Ausführen der Prozeduren, Prozesse, Verfahren usw. der hierin erörterten Ausführungsformen sowie ein Betriebssystem (OS) 12x und eine oder mehrere DBs oder DBOs (nicht gezeigt).

                Die Anwendung(en) 12ja (auch als „App“ bezeichnet 12ja“ oder „Apps 12ja”) ist/sind eine Softwareanwendung, die auf dem Benutzersystem ausgeführt werden soll 12 und wird verwendet, um auf die vom System gespeicherten Daten zuzugreifen 16. Die Apps 12ja kann plattformspezifisch sein, z. B. wenn das Benutzersystem 12 ist in einem mobilen Gerät implementiert, wie beispielsweise einem Smartphone, Tablet-Computer und dergleichen. Die Apps 12ja kann eine native Anwendung, eine Webanwendung oder eine Hybridanwendung (oder Varianten davon) sein. Eine solche App 12ja kann der zuvor besprochene HTTP-Client sein, zum Beispiel ein Webbrowser- (oder einfach „Browsing-“) Programm, wie ein Webbrowser basierend auf der WebKit-Plattform, Microsofts Internet Explorer-Browser, Apples Safari, Googles Chrome, Operas Browser oder Mozillas Firefox-Browser und/oder dergleichen, um Webanwendungen auszuführen und zu rendern, die es einem Benutzer (z. B. einem Abonnenten von vom System bereitgestellten On-Demand-Diensten) ermöglichen 16) des Benutzersystems 12 um auf Informationen, Seiten, Schnittstellen (z.B. UI 30 in FIG. 1B) und Anwendung(en) 12ja steht ihm vom System zur Verfügung 16 über das Netzwerk 14. In anderen Implementierungen ist jedes Benutzersystem 12 kann eine Web- oder Benutzer-App betreiben 12ja entwickelt, um mit Anwendungen der Anwendungsplattform zu interagieren 18 einem Benutzer (z. B. einem Abonnenten von On-Demand-Diensten, die vom System bereitgestellt werden) 16) des Benutzersystems 12 um auf Informationen, Seiten, Schnittstellen (z.B. UI 30 in FIG. 1B ) und Apps 12ja steht ihm vom System zur Verfügung 16 über das Netzwerk 14. In einigen Fällen ist ein Eigentümer/Betreiber des Systems 16 haben möglicherweise die Web- oder Benutzer-Apps vorgefertigt 12ja zur Verwendung durch Kunden, Kunden und/oder Agenten einer Mieterorganisation (Organisation), um auf einen Mieterbereich oder ein soziales Unternehmensnetzwerk dieser Mieterorganisation zuzugreifen. In einigen Fällen können Entwickler, die einer Mandantenorganisation zugeordnet sind (z. B. CP 50) können benutzerdefinierte Anwendungen für die Interaktion mit den Mieterdaten erstellen. Die Anwendung(en) des Benutzers (oder der Drittpartei) können native Anwendung(en) sein (z. B. ausgeführt und in einem Container gerendert) oder hybride Anwendung(en) (z. B. Webanwendungen, die in einem Container oder Skelett ausgeführt/gerendert werden). Die Anwendung(en) des Benutzers (oder Drittanbieters) können plattformspezifisch sein oder für den Betrieb auf einem bestimmten Typ von Benutzersystem entwickelt werden 12 oder eine bestimmte (Hardware und/oder Software) Konfiguration eines Benutzersystems 12. Der Begriff „plattformspezifisch“ kann sich auf die vom Benutzersystem implementierte Plattform beziehen 12, die vom System implementierte Plattform 16, und/oder eine Plattform eines Drittsystems/einer Plattform. Die Web-, Benutzer- oder Drittanbieteranwendung(en) 12ja die hierin erörterten können eine Software, ein Programmcode, Logikmodule, Anwendungspakete usw. sein, die unter Verwendung einer oder mehrerer Programmiersprachen und/oder Entwicklungstools erstellt werden, wie beispielsweise die hierin erörterten. Darüber hinaus können solche Anwendungen eine geeignete Abfragesprache verwenden, um Informationen in einem zugeordneten Mieterraum abzufragen und zu speichern, wie beispielsweise die verschiedenen hier erörterten Abfragesprachen oder dergleichen. Die Apps 12ja kann unter Verwendung einer beliebigen geeigneten Programmiersprache und/oder Entwicklungswerkzeugen entwickelt werden, wie beispielsweise einer der hierin erörterten. In einigen Implementierungen sind die Apps 12ja können unter Verwendung plattformspezifischer Entwicklungstools und/oder Programmiersprachen entwickelt werden, wie beispielsweise die hierin erörterten.

                In einem Beispiel sind die Benutzersysteme 12 kann Web-, Benutzer- oder Drittanbieter-Apps implementieren 12ja um Daten vom System anzufordern und zu erhalten 16und rendern grafische Benutzeroberflächen (GUIs) in einem Anwendungscontainer oder Browser. Diese GUIs können mit GUI korrespondieren 12v und/oder Benutzeroberfläche 30 gezeigt und beschrieben mit Bezug auf FIG.1B. In einigen Implementierungen können die GUIs eine Datenanalyse-GUI enthalten, wie beispielsweise das Salesforce® Wave™-Dashboard, das visuelle Darstellungen von Daten (auch als visuelle Darstellungen bezeichnet) bereitstellen kann 12v oder dergleichen), die sich in einer Unternehmens-Cloud oder in einer Umgebung für On-Demand-Dienste befinden (z. B. ein Mieterraum innerhalb des Systems). 16). Die GUIs können eine oder mehrere Komponenten umfassen (z. B. grafische Bedienelemente (GCE), Registerkarten, Berichte, Dashboards, Widgets, Seiten usw.). Beispiele solcher Komponenten können Audio-/Videoanrufkomponenten, Nachrichtenübermittlungskomponenten (z. B. Chat, Instant Messaging, Kurznachrichtendienst (SMS)/Multimedia-Nachrichtendienst (MMS)-Nachrichtenübermittlung, E-Mail usw.) und Visualisierungskomponenten umfassen. Die Visualisierungskomponenten können einem Benutzer eines Benutzersystems ermöglichen, 12 um Visualisierungsparameter (auch als „Linsenparameter“ oder „Filter“ bezeichnet) zum Anzeigen von Daten aus einem oder mehreren Datensätzen auszuwählen. Ein Datensatz kann eine bestimmte Ansicht oder Transformation von Daten aus einer oder mehreren Datenquellen sein (z. B. einem Mieterbereich von DB 22, etc.). Die Visualisierungsparameter können beispielsweise eine Auswahl von Daten oder Datentypen umfassen, um aus einem oder mehreren Datensätzen ein bestimmtes Diagramm, Diagramm oder eine Karte anzuzeigen, in dem die ausgewählten Datenfarbschemata für die Diagramme/Diagramme/Karten eine Position anzuzeigen sind, oder Ausrichtung der Graphen/Diagramme/Karten innerhalb einer bestimmten GUI usw. Die anzuzeigenden Graphen/Diagramme/Karten können als „Linse“ oder „Dashboard“ bezeichnet werden. Eine Linse kann eine bestimmte Ansicht von Daten aus einem oder mehreren Datensätzen sein, und ein Dashboard kann eine Sammlung von Linsen sein. In einigen Implementierungen kann eine GUI Linsen, Dashboards und/oder Bedienfelder anzeigen, um die Linsen/Dashboards zu ändern oder neu anzuordnen. Darüber hinaus können die verschiedenen hierin erörterten Anwendungen auch dem Benutzersystem ermöglichen, 12 um dem System Authentifizierungsdaten (z. B. Benutzerkennung (user_id), Passwort, persönliche Identifikationsnummer (PIN), digitale Zertifikate usw.) bereitzustellen 16 damit das System 16 kann die Identität eines Benutzers des Benutzersystems authentifizieren 12.

                Jedes Benutzersystem 12 enthält normalerweise ein Betriebssystem (OS) 12x um Computerhardware- und -softwareressourcen zu verwalten und gemeinsame Dienste für verschiedene Apps bereitzustellen 12ja. Das Betriebssystem 12x enthält einen oder mehrere Treiber und/oder APIs, die eine Schnittstelle zu Hardwaregeräten bereitstellen und dadurch das Betriebssystem ermöglichen 12x und Anwendungen, um auf Hardwarefunktionen zuzugreifen. Das Betriebssystem 12x umfasst Middleware, die zwei oder mehr separate Anwendungen oder Apps verbindet 12ja mit zugrunde liegenden Hardwarekomponenten, die über die von den Treibern/APIs des Betriebssystems verfügbaren hinausgehen 12x. Das Betriebssystem 12x kann ein Allzweck-Betriebssystem oder ein plattformspezifisches Betriebssystem sein, das speziell für das Benutzersystem geschrieben und darauf zugeschnitten ist 12.

                Das Eingabesystem 12C kann jede geeignete Kombination von Eingabegeräten umfassen, wie etwa Touchscreen-Schnittstellen, Touchpad-Schnittstellen, Tastaturen, Mäuse, Trackballs, Scanner, Kameras, einen Stift oder Eingabestift oder dergleichen, oder Schnittstellen zu Netzwerken. Die Eingabegeräte des Eingabesystems 12C kann für die Interaktion mit einer GUI verwendet werden, die vom Browser/Anwendungscontainer auf einer Anzeige des Ausgabesystems bereitgestellt wird 12D (z. B. ein Monitorbildschirm, Flüssigkristallanzeige (LCD), Leuchtdiodenanzeige (LED) u. a.) des Benutzersystems 12 in Verbindung mit Seiten, Formularen, Anträgen und anderen vom System bereitgestellten Informationen 16 oder andere Systeme oder Server. Beispielsweise kann das Benutzerschnittstellengerät verwendet werden, um auf Daten und Anwendungen zuzugreifen, die vom System gehostet werden 16und um Suchen an gespeicherten Daten durchzuführen und es einem Benutzer auf andere Weise zu ermöglichen, mit verschiedenen GUI-Seiten zu interagieren, die einem Benutzer präsentiert werden können. Das Ausgabesystem 12D kann jede geeignete Kombination von Ausgabegeräten umfassen, wie beispielsweise ein oder mehrere Anzeigegeräte, Drucker oder Schnittstellen zu Netzwerken. Das Ausgabesystem 12D wird verwendet, um visuelle Darstellungen und/oder GUIs anzuzeigen 12v basierend auf verschiedenen Benutzerinteraktionen. Wie oben erörtert, sind Implementierungen für die Verwendung mit dem Internet geeignet, obwohl andere Netzwerke anstelle oder zusätzlich zum Internet verwendet werden können, wie z. B. ein Intranet, ein Extranet, ein virtuelles privates Netzwerk (VPN), ein Nicht-TCP/IP basierendes Netzwerk, ein beliebiges LAN oder WAN oder dergleichen.

                Das Kommunikationssystem 12E kann eine Schaltung zum Kommunizieren mit einem drahtlosen Netzwerk oder einem drahtgebundenen Netzwerk umfassen. Kommunikationssystem 12E kann verwendet werden, um eine Verbindung herzustellen 15 (auch als „Kanal“ bezeichnet 15“, „Netzwerkschichttunnel“ 15“ und dergleichen), über die das Benutzersystem 12 kann mit dem System kommunizieren 16. Kommunikationssystem 12E kann einen oder mehrere Prozessoren (z. B. Basisbandprozessoren, Netzwerkschnittstellencontroller usw.) umfassen, die für ein bestimmtes drahtloses Kommunikationsprotokoll (z. B. WiFi- und/oder IEEE 802.11-Protokolle), ein zellulares Kommunikationsprotokoll (z. B. Long Term Evolution (LTE) und dergleichen), ein drahtloses Personal Area Network (WPAN)-Protokoll (z. B. IEEE 802.15.4-802.15.5-Protokolle, Bluetooth oder Bluetooth Low Energy (BLE) usw.) und/oder eine drahtgebundene Kommunikation Protokoll (zB Ethernet, Fiber Distributed Data Interface (FDDI), Point-to-Point (PPP) usw.). Das Kommunikationssystem 12E kann auch Hardwaregeräte umfassen, die die Kommunikation mit drahtlosen/drahtgebundenen Netzwerken und/oder anderen Benutzersystemen ermöglichen 12 unter Verwendung modulierter elektromagnetischer Strahlung durch ein festes oder nicht festes Medium. Solche Hardwaregeräte können Schalter Filter Verstärker Antennenelemente Drähte, Anschlüsse/Buchsen/Buchsen/Buchsen und Stecker und dergleichen umfassen, um die Kommunikation über die Luft oder durch eine Leitung zu erleichtern, indem Funkwellen erzeugt oder auf andere Weise erzeugt werden, um Daten an einen oder mehrere zu übertragen andere Geräte und Umwandeln empfangener Signale in nutzbare Informationen, wie z. B. digitale Daten, die an eine oder mehrere andere Komponenten des Benutzersystems geliefert werden können 12. Um mit dem System zu kommunizieren (z. B. senden/empfangen) 16, das Benutzersystem 12 Nutzung des Kommunikationssystems 12E kann Verbindung herstellen 15 mit Netzwerkschnittstelle 20 vom System 16.

                Die Benutzer von Benutzersystemen 12 können sich in ihren jeweiligen Kapazitäten und der Kapazität eines bestimmten Benutzersystems unterscheiden 12 kann vollständig durch Berechtigungen (Berechtigungsstufen) für den aktuellen Benutzer eines solchen Benutzersystems bestimmt werden. Zum Beispiel, wenn ein Verkäufer ein bestimmtes Benutzersystem verwendet 12 mit dem System interagieren 16, kann dieses Benutzersystem die dem Verkäufer zugewiesenen Kapazitäten haben. Während jedoch ein Administrator dieses Benutzersystem verwendet 12 mit dem System interagieren 16, kann dieses Benutzersystem die diesem Administrator zugewiesenen Kapazitäten haben. Wenn ein hierarchisches Rollenmodell verwendet wird, können Benutzer auf einer Berechtigungsebene Zugriff auf Anwendungen, Daten und DB-Informationen haben, auf die ein Benutzer mit niedrigerer Berechtigungsebene zugreifen kann, aber möglicherweise keinen Zugriff auf bestimmte Anwendungen, DB-Informationen und Daten, auf die ein Benutzer zugreifen kann auf einer höheren Berechtigungsstufe. Somit haben unterschiedliche Benutzer im Allgemeinen unterschiedliche Fähigkeiten in Bezug auf den Zugriff auf und das Modifizieren von Anwendungs- und DB-Informationen, abhängig von den jeweiligen Sicherheits- oder Berechtigungsstufen der Benutzer (auch als "Berechtigungen" bezeichnet).

                Gemäß einigen Implementierungen ist jedes Benutzersystem 12 und einige oder alle seiner Komponenten sind durch den Bediener unter Verwendung von Anwendungen konfigurierbar, wie etwa einem Browser, einschließlich Computercode, der unter Verwendung einer oder mehrerer Zentraleinheiten (CPUs) und/oder anderer ähnlicher Computerverarbeitungsgeräte (z 12B). Ebenso ist das System 16 (und zusätzliche Instanzen eines MTS, wenn mehr als einer vorhanden ist) und alle seine Komponenten können mit Anwendung(en) konfigurierbar sein, einschließlich Computercode, der unter Verwendung des Prozessorsystems ausgeführt wird 17, die eine oder mehrere CPUs/Prozessoren umfassen können. Beispiele für die Prozessoren/CPUs des Prozessorsystems 17 kann einen oder mehrere Intel Pentium® oder Xeon® Prozessoren, Advanced Micro Devices (AMD) Zen® Core Architecture Prozessor(en) wie Ryzen® oder Epyc® Prozessor(en), Accelerated Processing Units (APUs), MxGPUs oder der/die ähnliche(n) ARM-basierte(n) Prozessor(en), lizenziert von ARM Holdings, Ltd., wie die ARM Cortex-A-Prozessorfamilie und der ThunderX2®, bereitgestellt von Cavium™, Inc. Centrig™-Prozessor(en) von Qualcomm® Technologies, Inc. Power Architecture-Prozessor(en) bereitgestellt von OpenPOWER® Foundation und/oder IBM® GeForce®, Tegra®, Titan X®, Tesla®, Shield® und/oder ähnliche GPUs von Nvidia® ein MIPS-basiertes Design von MIPS Technologies, Inc., wie etwa MIPS Warrior P-Klasse-Prozessoren und/oder dergleichen oder dergleichen.

                Das System 16 umfasst materielle computerlesbare Medien, auf denen/in denen nichtflüchtige Anweisungen gespeichert sind, die von einem Server ausgeführt oder zum Programmieren eines Servers verwendet werden können (z. B. die App-Server .). 100 oder andere hierin erörterte Server) oder ein anderes Computersystem (oder eine Sammlung solcher Server oder Computersysteme), um einige der Implementierungen der hierin beschriebenen Prozesse durchzuführen. Zum Beispiel Computerprogrammcode 26 kann Anweisungen zur Bedienung und Konfiguration des Systems umsetzen 16 um Webseiten, Anwendungen und andere Daten und Medieninhalte wie hierin beschrieben miteinander zu kommunizieren und zu verarbeiten. In einigen Implementierungen ist der Computercode 26 kann heruntergeladen und auf einer Festplatte gespeichert werden, aber der gesamte Programmcode oder Teile davon können auch in jedem anderen bekannten flüchtigen oder nichtflüchtigen Speichermedium oder -gerät gespeichert werden, wie z. B. einem ROM oder RAM, oder bereitgestellt werden auf jedem Medium, das Programmcode speichern kann, wie z. B. jede Art von rotierenden Medien, einschließlich Disketten, optische Disks, Digital Versatile Disks (DVD), Compact Disks (CD), Mikrolaufwerke und magnetooptische Disks und magnetische oder optische Karten, Nanosysteme (einschließlich molekularer Speicher-ICs) oder jede andere Art von computerlesbarem Medium oder Gerät, das zum Speichern von Anweisungen oder Daten geeignet ist. Außerdem kann der gesamte Programmcode oder Teile davon übertragen und von einer Softwarequelle über ein Übertragungsmedium, beispielsweise über das Internet, oder von einem anderen Server, wie allgemein bekannt ist, oder über jede andere bestehende Netzwerkverbindung übertragen werden wie es wohlbekannt ist (zB Extranet, VPN, LAN, etc.) unter Verwendung jeglicher Kommunikationsmedien und Protokolle (zB TCP/IP, HTTP, HTTPS, Ethernet, etc.), die wohlbekannt sind. Es versteht sich auch, dass Computercode für die offenbarten Implementierungen in jeder Programmiersprache realisiert werden kann, die auf einem Server oder einem anderen Computersystem ausgeführt werden kann, wie beispielsweise C, C++, HTML, jede andere Auszeichnungssprache, Java™, JavaScript, ActiveX, jede andere Skriptsprache, wie beispielsweise VBScript, und viele andere bekannte Programmiersprachen können verwendet werden. (Java™ ist eine Marke von Sun Microsystems, Inc.).

                Der CP 50 umfasst ein oder mehrere physische und/oder virtualisierte Systeme zum Bereitstellen von Inhalten und/oder Funktionen (d. h. Dienste) für einen oder mehrere Clients (z. B. Benutzersysteme). 12) über ein Netzwerk (z. B. Netzwerk 14). Die physischen und/oder virtualisierten Systeme umfassen einen oder mehrere logisch oder physisch verbundene Server und/oder Datenspeichergeräte, die lokal oder über einen oder mehrere geografische Standorte verteilt sind. Im Allgemeinen ist der CP 50 ist so konfiguriert, dass IP-/Netzwerkressourcen verwendet werden, um Webseiten, Formulare, Anwendungen, Daten, Dienste und/oder Medieninhalte für verschiedene Benutzersysteme bereitzustellen 12. Als Beispiele, die CP 50 kann Suchmaschinendienste anbieten Soziale Netzwerke und/oder Microblogging-Dienste Inhalts-(Medien-)Streaming-Dienste E-Commerce-Dienste Kommunikationsdienste wie Voice-over-Internet Protocol (VoIP)-Sitzungen, Textnachrichten, Gruppenkommunikationssitzungen und ähnliche immersive Spielerlebnisse und/oder andere ähnliche Dienste. Die Benutzersysteme 12 die Dienste von CP nutzen 50 können als „Abonnenten“ von CP . bezeichnet werden 50 oder dergleichen. Obwohl FIG. 1A zeigt nur einen einzigen CP 50, der CP 50 kann mehrere einzelne CPs darstellen 50, die jeweils ihre eigenen abonnierenden Benutzersysteme haben können 12.

                CP 50 (auch als „Dienstleisterplattform“, „Mandant“, „Mieterorganisation“ oder dergleichen bezeichnet) kann ein Kunde oder Mieter des Systems sein 16 die Anwendungen entwickelt, die mit dem System interagieren und/oder sich integrieren 16 und Daten aus einem zugehörigen Mieterraum in der Mieter-DB verwenden 22 diese Anwendungen können als „Kunden-Apps“, „CP-Apps“ oder dergleichen bezeichnet werden. Der Begriff "Kundenplattform" oder "CP", wie er hier verwendet wird, kann sich sowohl auf die Plattform und/oder Anwendungen selbst als auch auf die Eigentümer, Betreiber und/oder Entwickler beziehen, die mit der Kundenplattform verbunden sind. Die CP-Apps können Daten aus dem zugehörigen Mieterraum abrufen, um visuelle Darstellungen relevanter Mieterdaten zu rendern/darzustellen. In einigen Fällen verwenden die CP-Apps Mieterdaten für die Interaktion mit Benutzersystemen 12 B. durch das Versenden von Nachrichten an verschiedene Benutzersysteme 12 (z.B. Abonnenten des CP 50) über das System 16. Dazu enthalten die CP-Apps Programmcode oder Skript(s), die eine API/WS aufrufen 32 (siehe z. B. Fig. 1B), um das Senden dieser Nachrichten basierend auf vordefinierten Ereignissen/Bedingungen und/oder auslösenden Ereignissen zu erstellen und auszuführen. Wie weiter unten ausführlicher besprochen, enthalten die CP-Apps Programmcode/Skripte, die APIs/WS . aufrufen 32 (siehe z. B. Fig. 1B), um Nachrichten zu planen und an einzelne Teilnehmer zu senden.

                FEIGE. 1B zeigt beispielhafte Implementierungen von Elementen von FIG. 1A und beispielhafte Verbindungen zwischen diesen Elementen gemäß einigen Implementierungen. Das heißt, FIG. 1B veranschaulicht auch die Umgebung 10, aber FIG. 1B zeigt verschiedene Elemente des Systems 16 und verschiedene Verbindungen zwischen solchen Elementen werden gemäß einigen spezifischeren Implementierungen genauer gezeigt. Außerdem ist in FIG. 1B , das Benutzersystem 12 beinhaltet ein Prozessorsystem 12A, ein Speichersystem 12B, ein Eingabesystem 12C, ein Ausgabesystem 12D und ein Kommunikationssystem 12E. In anderen Implementierungen ist die Umgebung 10 möglicherweise nicht die gleichen Elemente wie die in Fig. 1 gezeigten aufweisen. 1B oder können andere Elemente anstelle der aufgeführten oder zusätzlich zu den aufgeführten aufweisen.

                In FIG. 1B , die Netzwerkschnittstelle 20 und/oder Prozessorsystem 17 ist/sind als eine Reihe von Anwendungsservern implementiert 1001-100x (wobei X eine Zahl ist) Jeder Anwendungsserver 100 (hier auch als „App-Server“, „API-Server“, „HTTP-Anwendungsserver“, „Worker-Knoten“ und/oder dergleichen bezeichnet) ist konfiguriert, um mit der Mandanten-DB zu kommunizieren 22 und die Mieterdaten 23 darin, sowie System-DB 24 und die Systemdaten 25 darin, um von den Benutzersystemen erhaltene Anfragen zu bedienen 12. Die Mieterdaten 23 aufteilbar in einzelne Mieterlager 112, die physisch oder logisch angeordnet oder unterteilt sein können. Innerhalb jedes Mieterlagerraums 112, Benutzerspeicher 114 und Anwendungsmetadaten 116 kann in ähnlicher Weise jedem Benutzer zugewiesen werden. Beispielsweise kann eine Kopie der zuletzt verwendeten (MRU) Elemente eines Benutzers im Benutzerspeicher gespeichert werden 114. Ebenso kann eine Kopie von MRU-Elementen für eine gesamte Organisation, die ein Mandant ist, im Mandantenspeicherplatz gespeichert werden 112.

                Der Prozessraum 28 beinhaltet Systemprozessraum 102, individuelle Mieterprozessräume 104 und ein Tenant Management Process Space (TMPS) 110. In verschiedenen Ausführungsformen ist der Prozessraum 28 enthält einen oder mehrere Abfrageprozessoren 103 und einen oder mehrere Stream-Prozessoren 105.

                Der/die Stream-Prozessor(en) 105 sind Systeme und/oder Anwendungen, die Datenströme senden oder empfangen und die Anwendungen oder Analyselogik als Reaktion auf das Erkennen von Ereignissen oder Auslösern aus den Datenströmen ausführen. Der/die Stream-Prozessor(en) 105 verarbeiten Daten direkt, wenn sie erzeugt oder empfangen werden, und erkennen Bedingungen aus den Datenströmen innerhalb eines relativ kleinen Zeitraums (z. B. gemessen in Millisekunden bis Minuten). Der/die Stream-Prozessor(en) 105 können als Softwarekomponenten (z. B. Software-Engines, Software-Agenten, Agenten der künstlichen Intelligenz (AI), Module, Objekte oder andere ähnliche logische Einheiten), als einzelne Hardware-Elemente oder eine Kombination davon implementiert werden. In einer beispielhaften softwarebasierten Implementierung sind der/die Stream-Prozessor(en) 105 kann unter Verwendung einer geeigneten Programmiersprache, Entwicklungswerkzeugen/Umgebungen usw. entwickelt werden, die von einem oder mehreren Prozessoren eines oder mehrerer Computersysteme ausgeführt werden (siehe z. B. Prozessorsystem 17 von FIG. 1A). In diesem Beispiel Programmcode des/der Stream-Prozessor(s) 105 kann von einem einzelnen Prozessor oder von mehreren Verarbeitungsgeräten ausgeführt werden. In einer beispielhaften hardwarebasierten Implementierung sind der/die Stream-Prozessor(en) 105 werden durch entsprechende Hardwareelemente wie GPUs (oder Gleitkommaeinheiten innerhalb einer oder mehrerer GPUs), Hardwarebeschleuniger (z. B. FPGAs, ASICs, DSPs, SoCs usw.) ) usw., um ihre jeweiligen Funktionen, KI-beschleunigenden Coprozessor(en), Tensor-Verarbeitungseinheiten (TPUs) und/oder dergleichen auszuführen. In einigen Ausführungsformen sind der/die Stream-Prozessor(en) 105 kann unter Verwendung von Streamprozessor(en) implementiert werden, bei denen es sich um Systeme und/oder Anwendungen handelt, die Datenströme senden oder empfangen und die Anwendungen oder Analyselogik als Reaktion auf das Erkennen von Ereignissen oder Auslösern aus den Datenströmen ausführen. Der/die Stream-Prozessor(en) 105 verarbeiten Daten direkt, wenn sie erzeugt oder empfangen werden, und erkennen Bedingungen aus den Datenströmen innerhalb eines relativ kleinen Zeitraums (z. B. gemessen in Millisekunden bis Minuten). Der/die Stream-Prozessor(en) kann/können unter Verwendung beliebiger Stream-/Ereignisverarbeitungs-Engines oder Stream-Analyse-Engines implementiert werden, wie beispielsweise Apache® Kafka®, Apache® Storm®, Apache® Flink®, Apache® Apex®, Apache® Spark® , IBM® Spade, Nvidia® CUDA™, Intel® Ct™, Ampa™, bereitgestellt von Software AGO, StreamC™ von Stream Processors, Inc. und/oder dergleichen.

                Die Bewerbungsplattform 18 enthält einen Anwendungs-Setup-Mechanismus (ASM) 38 die die Erstellung und Verwaltung von Anwendungen durch Anwendungsentwickler („App-Entwickler“) unterstützt. Solche Anwendungen und andere können als Metadaten in der Mandanten-DB gespeichert werden 22 durch Speicherroutinen (SRs) 36 zur Ausführung durch Abonnenten als ein oder mehrere Mieterprozessräume 104 verwaltet durch Mieterverwaltungsprozess 110, zum Beispiel. Aufrufe solcher Anwendungen können mit Procedural Language (PL)/Salesforce® Object Query Language (SOQL) codiert werden. 34, die eine Schnittstellenerweiterung im Programmiersprachenstil für die Application Programming Interface (API) bereitstellt. 32. Eine detaillierte Beschreibung einiger PL/SOQL-Sprachimplementierungen wird im gemeinsam übertragenen US-Pat. Nr. 7,730,478 mit dem Titel METHOD AND SYSTEM FOR ALLOW ACCESS TO ENTWICKELTE ANWENDUNGEN ÜBER EINEN MULTI-TENANT-ON-DEMAND-DATENBANKDIENST von Craig Weissman, herausgegeben am 1. Juni 2010, und hiermit durch Bezugnahme in seiner Gesamtheit und für alle Zwecke aufgenommen.Aufrufe von Anwendungen können von einem oder mehreren Systemprozessen erkannt werden, die das Abrufen von Anwendungsmetadaten verwalten 116 für den Abonnenten, der den Aufruf durchführt und die Metadaten als Anwendung in einer virtuellen Maschine ausführt.

                In einigen Implementierungen ist die Anwendungsplattform 18 beinhaltet auch Richtlinien 35. Die Richtlinien 35 umfassen Dokumente und/oder Datenstrukturen, die ein Regelwerk definieren, das das Verhalten der verschiedenen Subsysteme des App-Servers regelt 100. Zum Beispiel eine oder mehrere der Richtlinien 35 kann bestimmen, wie der Netzwerkverkehr für bestimmte Netzwerkadressen (oder Adressbereiche), Protokolle, Dienste, Anwendungen, Inhaltstypen usw. gehandhabt wird, basierend auf den Informationssicherheitsrichtlinien (Infosec) einer Organisation, behördlichen und/oder Prüfungsrichtlinien, Zugriffskontrolllisten (ACLs) und dergleichen. Darüber hinaus sind die Richtlinien 35 kann (innerhalb verschiedener Granularitätsebenen) bestimmte Benutzer und Benutzergruppen angeben, die berechtigt sind, auf bestimmte Ressourcen oder Arten von Ressourcen zuzugreifen, basierend auf der hierarchischen Struktur der Organisation sowie Sicherheits- und behördlichen Anforderungen. Die Dokumente oder Datenstrukturen der Policen 35 kann eine „Beschreibung“ enthalten, die eine Sammlung von Softwaremodulen, Programmcode, Logikblöcken, Parametern, Regeln, Bedingungen usw. ist, die vom App-Server verwendet werden können 100 um den Betrieb des App-Servers zu steuern 100 und/oder Zugang zu verschiedenen Diensten. Beliebige geeignete Programmiersprachen, Auszeichnungssprachen, Schemasprachen usw. können verwendet werden, um individuelle Richtlinien zu definieren 35 und Instanzen dieser Richtlinien instanziieren 35. Als Beispiele sind die Richtlinien 35 kann unter Verwendung von XML, JSON, Markdown, IFTTT ("If This Then That"), PADS-Markup-Sprache (PADS/ML), Nettle, Capirca TM und/oder einem anderen geeigneten Datenformat, wie den hierin erörterten, definiert werden.

                Die Bewerbungsplattform 18 kann eine Entwicklungsumgebung, Programmiersprache(n) und/oder Tools (gemeinsam als „Entwicklungsumgebung“, „Entwicklungsumgebung“ und dergleichen bezeichnet) sein oder enthalten, die es App-Entwicklern ermöglicht, Anwendungen zu erstellen/bearbeiten zum Implementieren der verschiedenen hierin erörterten Ausführungsformen. Beispielsweise kann die Entwicklungsumgebung eine Softwareentwicklungsumgebung (SDE), eine integrierte Entwicklungsumgebung (IDE), ein Softwareentwicklungskit (SDK), eine Softwareentwicklungsplattform (SDP), ein Schema-Builder, eine Modellierungssprache sein oder enthalten Anwendung, einen Quellcode-Editor, Build-Automatisierungstools, Debugger, Compiler, Interpreter und/oder andere ähnliche Plattformen, Frameworks, Tools usw., die einen App-Entwickler beim Erstellen von Anwendungen, Konfigurationen, Definitionen und/oder dergleichen unterstützen können . In einigen Implementierungen kann die Entwicklungsumgebung eine eigenständige Anwendung oder eine webbasierte oder Cloud-basierte Umgebung sein (z. B. eine native Anwendung, eine Webanwendung oder eine Hybridanwendung mit GUIs, die eine SDE/IDE/ SDK/SDP implementiert von einem Back-End-Dienst (z. B. System 16) in einem Webbrowser oder Anwendungscontainer).

                Wie bereits erwähnt, CPs 50 können Kunden oder Mieter des Systems sein 16 die CP-Apps entwickeln, die mit dem System interagieren und/oder sich integrieren 16 und Daten aus einem zugehörigen Mieterraum in der Mieter-DB verwenden 22. CP-Apps können beispielsweise Storefront-Anwendungen/-Dienste, Point-of-Sale (PoS)-Anwendungen/-Dienste, Warehouse-Management-System (WMS)-Anwendungen/-Dienste, Enterprise Resource Planning (ERP)-Anwendungen/-Dienste und/oder die mögen. Zur Integration in das System 16, die CP-Apps enthalten Programmcode oder Skripte, die die APIs/WS aufrufen 32 um Aufträge zu erstellen und zu aktivieren. Die CP-Apps können auch Programmcode/Skripte enthalten, die APIs/WS aufrufen 32 um die Bestellungen wie hierin besprochen anzupassen. Die CP-Apps können auch die APIs/WS aufrufen 32 um aggregierte Statistiken zu verschiedenen Bestellungen zurückzugeben. In einigen Ausführungsformen sind die CP-Apps 50 kann die Client-App sein 12ja oben besprochen, oder eine Web-App, die von der Client-App gerendert und/oder ausgeführt wird 12ja (z. B. wo die CP-Apps 50 sind Web-Apps und die Client-App 12ja ist ein Browser oder ein anderer HTTP-Client, der die Web-Apps rendert, clientseitige Skripte ausführt und/oder dergleichen). In anderen Ausführungsformen sind die CP-Apps 50 kann serverseitig sein (z. B. CP 50 side) Anwendungen, die mit der benutzerorientierten Client-App interagieren 12y.

                Das System 16 von FIG. 1B enthält auch eine Benutzeroberfläche (UI) 30 und eine oder mehrere APIs 32 (auch als „Webdienst“ bezeichnet) an das System 16 residente Prozesse, die es Benutzern oder Entwicklern an Benutzersystemen ermöglichen 12 um auf die residenten Prozesse zuzugreifen. Die API(s) 32 ist/sind Schnittstelle(n) für die Kommunikation zwischen Softwarekomponenten. In einigen Implementierungen sind die API(s) 32 sind Quellcodespezifikation(en) oder eine Sammlung von Bibliotheken, Routinen, Methoden, Datenstrukturen, Feldern, Objekten, Klassen, Variablen, entfernten Aufrufen und dergleichen, die definieren, wie ein Softwareelement auf die zugrunde liegenden Plattformfähigkeiten zugreifen oder mit ihnen interagieren kann und Funktionen des CP 50. Entwickler und Programmierer können die API(s) verwenden 32 durch Importieren der relevanten Klassen und Schreiben von Anweisungen, die die Klassen instanziieren und ihre Methoden, Felder usw. aufrufen. Der Anwendungscode (App), App-/Service-Vorlagen und/oder Richtlinien 35 Von Kundenplattformen entwickelte Plattformen können gepusht oder auf andere Weise an das System gesendet werden 16 eine oder mehrere APIs verwenden 32. In diesen Implementierungen sind der App-Code, App-/Service-Vorlagen und/oder Richtlinien 35 kann unter Verwendung einer Entwicklungsumgebung (Entwicklungsumgebung), Programmiersprache(n) und/oder vom System bereitgestellten Entwicklungstools entwickelt werden 16.

                In verschiedenen Ausführungsformen sind die API(s) 32 enthält eine Bestell-API (im Folgenden „Bestell-API“ 32“), wodurch der CP 50 und/oder Benutzersysteme 12 um Auftragsobjekte und Datensätze programmgesteuert abzufragen, abzufragen oder anderweitig anzufordern. Die Bestell-API 32 gibt Entwicklern und Programmierern programmgesteuerten Zugriff auf bestehende und aktivierte Bestellungen (z. B. aufgegebene und aktivierte Bestellungen) sowie auf untergeordnete benutzerdefinierte Objektdaten solcher Bestellungen. Die Bestell-API 32 ermöglicht es Entwicklern und Programmierern auch, Auftragsobjekte (oder einfach „Aufträge“) und benutzerdefinierte Objektdatensätze in einem einzigen Aufruf zu erstellen Aufträge zu einem neuen oder bestehenden Vertrag hinzuzufügen und Auftragsartikel/Produkte zu den hinzugefügten Aufträgen hinzuzufügen Auftragsartikel/Produkte zu einem hinzuzufügen neue oder bestehende Bestellung benutzerdefinierte Objekte zu einem neuen oder bestehenden Vertrag oder einer Bestellung hinzufügen Bestellungen und benutzerdefinierte Objekte unter einem bestimmten Vertrag abrufen Bestellartikel-/Produktdatensätze unter einer bestimmten Bestellung und benutzerdefinierte Objektdatensätze unter der Bestellung abrufen und eine gefilterte Liste von Bestellungen abrufen unter einen bestimmten Vertrag oder Produkte im Rahmen einer bestimmten Bestellung bestellen. Verschiedene Aspekte der Bestell-API 32 werden weiter unten ausführlicher besprochen.

                Die API(s) 32 kann als Remote-API oder Web-API implementiert werden, wie beispielsweise als Representational State Transfer (REST oder RESTful) API, Simple Object Access Protocol (SOAP) API, salesforce.com Apex API und/oder ähnliche API. Die API 32 kann als Webservice implementiert werden, einschließlich zum Beispiel Apache® Axi2.4 oder Axi3, Apache® CXF, JSON-Remote Procedure Call (RPC), JSON-Web Service Protocol (WSP), Web Services Description Language (WSDL), XML Interface for Network Services (XINS), Web Services Conversation Language (WSCL), Web Services Flow Language (WSFL), RESTful Web Services und/oder dergleichen.

                In einigen Implementierungen sind die API(s) 32 kann eine oder mehrere öffentliche APIs und eine oder mehrere private APIs umfassen. Die öffentlichen APIs sind APIs, die einen oder mehrere öffentlich verfügbar gemachte Endpunkte enthalten, die Benutzersysteme ermöglichen 12 um auf Mieterdaten zuzugreifen. Diese Endpunkte geben an, wo sich Ressourcen befinden und/oder wie auf bestimmte Webdienste zugegriffen werden kann. Die App(s) 12ja (siehe z. B. Fig. 1A ) kann verwendet werden, um eine Nachricht (z. B. eine HTTP-Nachricht) mit einer vom Benutzer ausgegebenen Abfrage und einer geeigneten URI/URL für den Zugriff auf einen Endpunkt des Systems zu generieren und zu übertragen 16. In Ausführungsformen können eine oder mehrere der APIs 32 kann eine asynchrone ("async") Abfrage-API sein, bei der die vom Benutzer ausgegebene Abfrage einen API-Aufruf oder eine ähnliche Anweisung enthält, die angibt, dass eine vom Benutzer ausgegebene Abfrage als aysnc-Abfrage behandelt werden sollte (als "asynchrones Abfrageverb" bezeichnet) ). Die asynchronen Abfrageverben zum Aufrufen der asynchronen Abfrage-API 32 kann mit PL/SOQL . definiert und/oder codiert werden 34 oder eine andere geeignete Programmier- oder Abfragesprache. Wenn eine asynchrone Abfrage die API für asynchrone Abfragen aufruft, wird eine asynchrone Abfrage-Engine (z. B. eine Abfrage-Engine 103) oder der asynchrone Abfrageplaner kann einen entsprechenden asynchronen Abfrageauftrag generieren. Der Begriff "Job", wie er hier verwendet wird, bezieht sich auf eine Arbeits- oder Ausführungseinheit, die Arbeit ausführt, die eine oder mehrere Aufgaben umfasst. Einzelne Jobs können eine entsprechende Job-Entität haben, die einen Datensatz oder ein DB-Objekt umfasst, das verschiedene Werte, Statistiken, Metadaten usw. während des Lebenszyklus des Jobs oder bis zur Ausführung des Jobs speichert, die in einen Zeitplan oder eine Warteschlange gestellt und vom Schlange stehen. Eine asynchrone Abfrageauftragsentität, die einem asynchronen Abfrageauftrag entspricht, ist eine Auftragsentität, die während des Lebenszyklus einer asynchronen Abfrage existiert, die in einen Zeitplan oder eine Warteschlange gestellt und ihrerseits von der asynchronen Abfragemaschine ausgeführt wird. Die asynchrone öffentliche API kann als REST- oder RESTful-API, SOAP-API, Apex-API und/oder eine andere ähnliche API, wie die hierin erörterten, implementiert werden.

                Private APIs sind APIs 32 die privat oder systemintern sind 16, die Systemanwendungen ermöglicht (z. B. Mieterverwaltungsprozess 110, Systemprozess 102, Suchmaschine(n) 103 und Stream-Prozessor(en) 105 um auf andere Systemanwendungen zuzugreifen. Die privaten APIs 32 kann den öffentlichen APIs ähneln 32 außer dass die Endpunkte der privaten APIs 32 sind nicht öffentlich zugänglich oder zugänglich. Die privaten APIs 32 kann weniger auffindbar gemacht werden, indem Benutzer, Geräte und/oder Anwendungen daran gehindert werden, die privaten APIs aufzurufen oder anderweitig zu verwenden 32. Zum Beispiel die Verwendung der privaten APIs 32 kann auf Maschinen in einem privaten Netzwerk (oder einem Unternehmensnetzwerk) beschränkt sein, eine Reihe akzeptabler IP-Adressen, Anwendungen mit IDs, die in einer Whitelist oder Abonnentenliste enthalten sind, Anfragen/Anrufe, die ein bestimmtes digitales Zertifikat oder ähnliche Anmeldeinformationen enthalten, und/ oder dergleichen. Die privaten APIs können als REST- oder RESTful-API, SOAP-API, Apex-API, proprietäre API und/oder ähnliche API implementiert werden.

                Jeder Anwendungsserver 100 ist mit Mieter DB kommunikativ gekoppelt 22 und System-DB 24, zum Beispiel Zugriff auf Mieterdaten 23 und Systemdaten 25, bzw. über eine andere Netzwerkverbindung 15. Zum Beispiel ein Anwendungsserver 1001 über das Netzwerk koppelbar 14 (z. B. das Internet), einen anderen Anwendungsserver 100N kann über eine direkte Netzwerkverbindung gekoppelt werden 15, und ein anderer Anwendungsserver 100N kann durch noch eine andere Netzwerkverbindung gekoppelt werden 15. Transfer Control Protocol und Internet Protocol (TCP/IP) sind Beispiele für typische Protokolle, die für die Kommunikation zwischen Anwendungsservern verwendet werden können 100 und das System 16. Der Fachmann wird jedoch erkennen, dass andere Transportprotokolle verwendet werden können, um das System zu optimieren 16 abhängig von den verwendeten Netzwerkverbindungen. Die Anwendungsserver 100 darf auf die Mieterdaten zugreifen 23 und/oder die Systemdaten 25 Verwenden geeigneter privater APIs, wie zuvor beschrieben.

                In einigen Implementierungen ist jeder Anwendungsserver 100 ist so konfiguriert, dass Anfragen für jeden Benutzer bearbeitet werden, der einer Organisation zugeordnet ist, die ein Mieter des Systems ist 16. In dieser Hinsicht ist jeder Anwendungsserver 100 kann konfiguriert werden, um verschiedene DB-Funktionen (z. B. Indizierung, Abfrage usw.) auszuführen sowie erhaltene Daten (z. B. ELT-Daten, ETL-Daten usw.) für verschiedene Benutzeroberflächen zu formatieren, die von den Benutzersystemen gerendert werden sollen 12. Weil es wünschenswert sein kann, Anwendungsserver hinzufügen und entfernen zu können 100 aus dem Serverpool jederzeit und aus verschiedenen Gründen, in einigen Implementierungen besteht keine Serveraffinität eines Benutzers oder einer Organisation zu einem bestimmten Anwendungsserver 100. In einigen dieser Implementierungen ist ein Schnittstellensystem, das eine Lastausgleichsfunktion implementiert (z. B. ein F5 Big-IP-Lastausgleicher), kommunizierbar zwischen den Anwendungsservern gekoppelt 100 und die Benutzersysteme 12 um Anfragen an die Anwendungsserver zu verteilen 100. In einer Implementierung verwendet der Load Balancer einen Algorithmus der kleinsten Verbindungen, um Benutzeranfragen an die App-Server weiterzuleiten 100 (siehe z. B. Load Balancer 228 von FIG. 2A-2B weiter unten besprochen). Andere Beispiele von Lastausgleichsalgorithmen, wie beispielsweise Round-Robin und beobachtete Reaktionszeit, können ebenfalls verwendet werden. In einigen Fällen können beispielsweise drei aufeinanderfolgende Anforderungen desselben Benutzers drei verschiedene Anwendungsserver erreichen 100, und drei Anfragen von verschiedenen Benutzern könnten denselben Anwendungsserver erreichen 100. Auf diese Weise kann beispielsweise System 16 kann ein mandantenfähiges System sein, in dem das System 16 verwaltet die Speicherung und den Zugriff auf verschiedene Objekte, Daten und Anwendungen über verschiedene Benutzer und Organisationen hinweg.

                In einem Beispiel für einen Speicheranwendungsfall kann ein Mandant eine Organisation (Organisation) sein, die ein Verkaufspersonal beschäftigt, in dem jeder Verkäufer das System verwendet 16 Aspekte ihres Verkaufs zu verwalten. Ein Benutzer kann Kontaktdaten, Lead-Daten, Kundennachverfolgungsdaten, Leistungsdaten, Ziele und Fortschrittsdaten usw. pflegen, die alle für den persönlichen Verkaufsprozess dieses Benutzers gelten (z 22). In einem Beispiel einer MTS-Anordnung, da alle Daten und Anwendungen zum Zugreifen, Anzeigen, Ändern, Melden, Übertragen, Berechnen usw. von einem Benutzersystem verwaltet und abgerufen werden können 12 Da der Benutzer kaum mehr als einen Netzwerkzugriff hat, kann er seine Verkaufsbemühungen und -zyklen von jedem von vielen verschiedenen Benutzersystemen aus verwalten. Wenn beispielsweise ein Verkäufer einen Kunden besucht und der Kunde in seiner Lobby einen Internetzugang hat, kann der Verkäufer kritische Aktualisierungen bezüglich dieses Kunden erhalten, während er auf die Ankunft des Kunden in der Lobby wartet.

                Während die Daten jedes Benutzers unabhängig von den Arbeitgebern jedes Benutzers getrennt von den Daten anderer Benutzer gespeichert werden können, können einige Daten unternehmensweite Daten sein, die von mehreren Benutzern oder allen Benutzern einer bestimmten Organisation, die ein Mandant ist, gemeinsam genutzt oder zugänglich sind. Daher kann es einige Datenstrukturen geben, die vom System verwaltet werden 16 die auf Mandantenebene zugewiesen werden, während andere Datenstrukturen auf Benutzerebene verwaltet werden können. Da ein MTS mehrere Mandanten einschließlich möglicher Konkurrenten unterstützen kann, kann der MTS über Sicherheitsprotokolle verfügen, die Daten, Anwendungen und Anwendungsnutzung getrennt halten. Da sich viele Mieter für den Zugriff auf einen MTS entscheiden, anstatt ihr eigenes System zu unterhalten, sind Redundanz, Betriebszeit und Backup zusätzliche Funktionen, die im MTS implementiert werden können. Neben benutzerspezifischen Daten und mieterspezifischen Daten bietet das System 16 kann auch Daten auf Systemebene verwalten, die von mehreren Mandanten verwendet werden können, oder andere Daten. Solche Daten auf Systemebene können Branchenberichte, Nachrichten, Postings und dergleichen umfassen, die von den Mietern gemeinsam genutzt werden können.

                In einigen Implementierungen sind die Benutzersysteme 12 (die auch Client-Systeme sein können) kommunizieren mit den Anwendungsservern 100 zum Anfordern und Aktualisieren von Daten auf System- und Mieterebene vom System 16. Solche Anfragen und Aktualisierungen können das Senden einer oder mehrerer Anfragen an die Mandanten-DB beinhalten 22 oder System-DB 24. Das System 16 (z. B. ein Anwendungsserver 100 Im System 16) kann automatisch eine oder mehrere native Abfragen (z. B. SQL-Anweisungen oder SQL-Abfragen oder dergleichen) erzeugen, die entworfen sind, um auf die gewünschten Informationen von einer geeigneten DB zuzugreifen. Dazu muss das System 16 (z. B. ein Anwendungsserver 100 Im System 16) kann eine oder mehrere Abfrage-Engines enthalten 103, die eine Software-Engine, SDK, Objekt(e), Programmcode und/oder Softwaremodule oder eine ähnliche logische Einheit ist/sind, die eine Beschreibung einer Suchanfrage (z. B. einer Benutzeranfrage) entgegennimmt, die Suche verarbeitet/auswertet request, führt die Suchanfrage aus und gibt die Ergebnisse an den Anrufer zurück. Die Abfrage-Engine(s) 103 kann Programmcode sein, der aus einer geeigneten Anfragenachricht über die Netzwerkschnittstelle eine Anfrage erhält 20 das eine öffentliche API aufruft, die Abfrage in eine native Abfrage übersetzt oder umwandelt (falls erforderlich), die native Abfrage auswertet und ausführt und Ergebnisse der Abfrage an die ausstellende Partei (z. B. ein Benutzersystem) zurückgibt 12). Um diese Funktionen auszuführen, müssen die Abfrage-Engine(s) 103 umfassen einen Parser, einen Abfrageoptimierer, einen DB-Manager, einen Compiler, eine Ausführungsmaschine und/oder andere ähnliche Komponenten. In einigen Implementierungen kann jede der dargestellten DBs Abfragepläne erzeugen, um auf die angeforderten Daten von dieser DB zuzugreifen, zum Beispiel der System-DB 24 kann Abfragepläne generieren, um auf die angeforderten Daten aus der System-DB zuzugreifen 24. Der Begriff „Abfrageplan“ bezieht sich im Allgemeinen auf eine oder mehrere Operationen, die verwendet werden, um auf Informationen in einem DB-System zuzugreifen. Zusätzlich die Abfrage-Engine(s) 103 kann die Reihenfolge, in der Anfragen und/oder Transaktionen verarbeitet werden, kontrollieren oder durchsetzen.

                Die Abfrage-Engine(s) 103 kann jede geeignete Abfrage-Engine-Technologie oder Kombinationen davon umfassen. Als Beispiel die Abfrage-Engine(s) 103 kann direkte (z. B. SQL) Ausführungs-Engines (z. B. Presto SQL-Abfrage-Engine, MySQL-Engine, SOQL-Ausführungs-Engine, Apache® Phoenix®-Engine usw.), einen Schlüsselwert-Datenspeicher oder NoSQL-DB-Engines (z. B. DynamoDB® bereitgestellt .) umfassen von Amazon.com®, MongoDB-Abfrage-Framework bereitgestellt von MongoDB Inc.®, Apache® Cassandra, Redis™ bereitgestellt von Redis Labs® usw.), MapReduce-Abfrage-Engines (z. B. Apache® Hive™, Apache® Impala™ Apache® HAWQ ™, IBM® Db2 Big SQL® usw. für Apache® Hadoop® DB-Systeme usw.), relationale DB-(oder „NewSQL“)-Engines (z. B. InnoDB™ oder MySQL Cluster™, entwickelt von Oracle®, MyRocks™, entwickelt von Facebook.com®, FaunaDB von Fauna Inc.), PostgreSQL-DB-Engines (z. B. MicroKernel DB Engine und Relational DB Engine von Pervasive Software®), Graphverarbeitungs-Engines (z. B. GraphX ​​einer Apache® Spark®-Engine, einer Apache ® Tez-Engine, Neo4J von Neo4j, Inc.™ usw.), Pull- (Iterationsmuster-)Abfrage-Engines, Push-(Besucher-Muster)-Abfrage-Engines, transaktionale DB-Engines, erweiterbar q B. Ausführungs-Engines, Ausführungs-Engines der Paketabfragesprache (PaQL), LegoBase-Abfrage-Ausführungs-Engines und/oder eine andere Abfrage-Engine, die verwendet wird, um einen anderen Typ von DB-System abzufragen (wie etwa jede hierin erörterte Verarbeitungs-Engine oder Ausführungstechnologie). In einigen Implementierungen sind die Abfrage-Engine(s) 103 kann ein In-Memory-Caching-System und/oder eine In-Memory-Caching-Engine (z. B. Memcached, Redis usw.) umfassen oder implementieren, um Datenelemente, auf die häufig zugegriffen wird, in einem Hauptspeicher des Systems zu speichern 16 zum späteren Abrufen ohne zusätzlichen Zugriff auf den persistenten Datenspeicher.

                Jede DB kann im Allgemeinen als eine Sammlung von Objekten betrachtet werden, wie beispielsweise ein Satz logischer Tabellen, die Daten enthalten, die in vordefinierte oder anpassbare Kategorien eingeordnet sind. Wie hierin verwendet, kann sich ein „Datenbankobjekt“, „Datenobjekt“ oder dergleichen auf jede Darstellung von Informationen in einer DB beziehen, die in Form eines Objekts oder Tupels vorliegt, und kann Variablen, Datenstrukturen, Funktionen, Methoden enthalten , Klassen, DB-Datensätze, DB-Felder, DB-Entitäten, Assoziationen zwischen Daten und DB-Entitäten (auch als „Beziehung“ bezeichnet) und dergleichen. Eine „Tabelle” ist eine Darstellung eines Datenobjekts und kann hier verwendet werden, um die konzeptionelle Beschreibung von Objekten und benutzerdefinierten Objekten gemäß einigen Implementierungen zu vereinfachen. Es versteht sich, dass „Tabelle“ und „Daten(basis)objekt“ hier austauschbar verwendet werden können. Jede Tabelle enthält im Allgemeinen eine oder mehrere Datenkategorien, die logisch als Spalten oder Felder in einem sichtbaren Schema angeordnet sind. Jede Zeile oder jedes Element einer Tabelle kann eine Dateninstanz für jede durch die Felder definierte Kategorie enthalten. Eine CRM-Datenbank kann beispielsweise eine Tabelle enthalten, die einen Kunden mit Feldern für grundlegende Kontaktinformationen wie Name, Adresse, Telefonnummer, Faxnummer usw. beschreibt. Eine andere Tabelle kann eine Bestellung beschreiben, einschließlich Felder für Informationen wie Kunde, Produkt, Verkaufspreis, Datum usw. In einigen MTS-Implementierungen können Standardentitätstabellen zur Verwendung durch alle Mandanten bereitgestellt werden. Für CRM DB-Anwendungen können solche Standardentitäten Tabellen für Fall-, Account-, Kontakt-, Lead- und Opportunity-Datenobjekte enthalten, die jeweils vordefinierte Felder enthalten. Wie hier verwendet, kann der Begriff „Entität“ auch austauschbar mit „Objekt“ und „Tabelle“ verwendet werden.

                In einigen MTS-Implementierungen dürfen Mandanten benutzerdefinierte Objekte erstellen und speichern oder können Standardentitäten oder -objekte anpassen, beispielsweise durch Erstellen benutzerdefinierter Felder für Standardobjekte, einschließlich benutzerdefinierter Indexfelder. Das allgemein übertragene US-Pat. Nr. 7,779,039, mit dem Titel CUSTOM ENTITIES AND FIELDS IN A MULTI-TENANT DATABASE SYSTEM, von Weissman et al., herausgegeben am 17. August 2010 und hiermit durch Bezugnahme in seiner Gesamtheit und für alle Zwecke aufgenommen, lehrt Systeme und Verfahren zum Erstellen von benutzerdefinierte Objekte sowie das Anpassen von Standardobjekten in einem mandantenfähigen DB-System. In einigen Implementierungen werden zum Beispiel alle benutzerdefinierten Entitätsdatenzeilen in einer einzelnen mandantenfähigen physischen Tabelle gespeichert, die mehrere logische Tabellen pro Organisation enthalten kann. Es ist für Kunden transparent, dass ihre mehreren „Tabellen“ tatsächlich in einer großen Tabelle gespeichert sind oder dass ihre Daten in derselben Tabelle wie die Daten anderer Kunden gespeichert werden können.

                Jeder Anwendungsserver 100 ist auch kommunikativ mit einem oder mehreren Order Management Systemen (OMS) gekoppelt 3501-ja (wobei Y eine Zahl ist und kollektiv als „OMSs“ bezeichnet wird 350“ oder „OMS 350“), die auch mit den DBs interagieren können 22 und 24. Das OMS 350 fungiert als zentrales System für die Abwicklung aller Elemente eines Auftrags und bietet einen globalen Überblick über den Auftragslebenszyklus. Das OMS 350 bietet auch ein Master-Repository zum Speichern von auftragsbezogenen Informationen und zur Erleichterung der Verwendung von Analysen. OMS 350 Funktionalität kann zum Beispiel Auftragsintegration Katalogmanagement Bestandsmanagement Erfüllung und Versandmanagement von Stornierungen und Rücksendungen Finanzmanagement (z. B. Fakturierung und Zahlung) Marketing und Werbeaktionen Kundenservice und Business Intelligence und Berichterstattung umfassen.

                Das OMS 350 kann einen oder mehrere Pools von Servern, zugehörige Datenspeichergeräte und/oder andere ähnliche Computergeräte umfassen, die für die Ausführung/Ausführung von Auftragsverwaltung/-verarbeitung und/oder Planung/Einreihen von Prozessen, Prozeduren usw. bestimmt sind. Diese Server können die gleichen oder ähnliche umfassen Prozessorsysteme, Speichersysteme, Netzwerkschnittstellen und ähnliche Komponenten wie die App-Server 100 oder andere hierin erörterte Computersysteme. In einigen Implementierungen ist das OMS 350 kann ein Cloud-basiertes System/Dienst sein und die Server können eine Virtualisierungsinfrastruktur sein oder als solche fungieren. Die Virtualisierungsinfrastruktur kann verschiedene Hardware- und Softwarekomponenten und/oder Ressourcen umfassen, die verwendet werden, um virtuelle oder rekonfigurierbare Implementierungen des OMS auszuführen 350, sowie einzelne Komponenten und/oder Subsysteme. Das OMS 350 kann über Virtualisierung und/oder Isolierung auf Benutzerebene implementiert werden. Virtualisierung kann sich auf die Abstraktion einer oder mehrerer isolierter VMs beziehen, bei denen es sich um virtuelle Versionen von Computerhardwareplattformen, Speichergeräten und/oder Netzwerkressourcen handelt, die von einem Virtual Machine Monitor (VMM) und/oder einem Hypervisor auf gemeinsam genutzten betrieben werden Computing-Ressourcen. Jede VM kann eine oder mehrere Anwendungen betreiben, um verschiedene Funktionen auszuführen und/oder einzelnen Mietern und/oder Benutzern verschiedene Dienste bereitzustellen. Die Isolierung auf Benutzerebene (auch als „Containerisierung“ oder „Betriebssystemvirtualisierung“ bezeichnet) kann sich auf die Abstraktion mehrerer isolierter Mandanten- oder Benutzerbereichsinstanzen beziehen, die ihre eigenen Anwendungen oder Dienste betreiben, auf einem einzigen Host laufen und auf einen gleichen OS-Kernel. Jede Mandanten- oder Userspace-Instanz sind virtualisierte und softwaredefinierte Umgebungen, in denen Softwareanwendungen isoliert von anderer Software ausgeführt werden können, die auf einem physischen Hostcomputer ausgeführt wird. Die isolierten User-Space-Instanzen können mit jeder geeigneten Virtualisierungstechnologie auf Betriebssystemebene implementiert werden, wie Docker®-Container, Kubernetes®-Container, Solaris®-Container und/oder Zonen, OpenVZ®-Virtual Private Server, DragonFly BSD®-Virtual-Kernel und/oder Jails , Chroot-Gefängnisse, Sandboxen und/oder dergleichen.

                FEIGE. 2A zeigt ein Systemdiagramm, das beispielhafte Architekturkomponenten einer On-Demand-DB-Dienstumgebung veranschaulicht 200 nach einigen Implementierungen. Ein Client-Computer, der kommunikativ mit der Cloud verbunden ist 204, die sich im Allgemeinen auf ein oder mehrere Netzwerke in Kombination beziehen, wie hierin beschrieben, mit der On-Demand-DB-Dienstumgebung kommunizieren 200 über einen oder mehrere Edge-Router 208 und 212. Ein Client-Rechner kann eines der Beispiele für Benutzersysteme sein 12 oben beschrieben. Die Edge-Router können mit einem oder mehreren Core-Switches kommunizieren 220 und 224 durch eine Firewall 216. Die Core Switches können mit einem Load Balancer kommunizieren 228, die die Serverlast auf verschiedene Pods verteilen kann, z. B. die Pods 240 und 244. Die Schoten 240 und 244, die jeweils einen oder mehrere Server oder andere Rechenressourcen umfassen können, können Datenverarbeitung und andere Operationen durchführen, die verwendet werden, um Dienste auf Abruf bereitzustellen. Die Kommunikation mit den Pods kann über Pod-Switches erfolgen 232 und 236. Komponenten der On-Demand-DB-Serviceumgebung können mit DB-Speicher kommunizieren 256 durch eine DB-Firewall 248 und ein DB-Switch 252.

                Wie in den FIG. Bezugnehmend auf 2A und 2B kann das Zugreifen auf eine bedarfsabhängige DB-Dienstumgebung Kommunikationen beinhalten, die zwischen einer Vielzahl unterschiedlicher Hardware- oder Softwarekomponenten übertragen werden. Darüber hinaus bietet die On-Demand-DB-Serviceumgebung 200 ist eine vereinfachte Darstellung einer tatsächlichen On-Demand-DB-Dienstumgebung. Während beispielsweise in den Fig. 1 und 2 nur eine oder zwei Vorrichtungen jedes Typs gezeigt sind. Wie in 2A und 2B gezeigt, können einige Implementierungen einer On-Demand-DB-Dienstumgebung eine beliebige bis mehrere Vorrichtungen jedes Typs umfassen. Außerdem muss die Umgebung des DB-Dienstes auf Anforderung nicht jedes Gerät umfassen, das in den 1 und 2 gezeigt ist. 2A und 2B gezeigt oder können zusätzliche Vorrichtungen umfassen, die in den Fig. 2A und Fig. 2B nicht gezeigt sind. 2A und 2B. Ein oder mehrere Geräte in der On-Demand-DB-Dienstumgebung 200 kann auf demselben physischen Gerät oder auf unterschiedlicher Hardware implementiert werden. Einige Geräte können unter Verwendung von Hardware oder einer Kombination aus Hardware und Software implementiert werden. Somit sind Begriffe wie „Datenverarbeitungsgerät“, „Maschine“, „Server“ und „Gerät“, wie sie hier verwendet werden, nicht auf ein einzelnes Hardwaregerät beschränkt, vielmehr können Bezugnahmen auf diese Begriffe jede geeignete Kombination von Hardware und Software umfassen, die so konfiguriert ist, dass die beschriebene Funktionalität bereitstellen.

                Die Wolke 204 bezieht sich auf ein Datennetz oder mehrere Datennetze, häufig einschließlich des Internets. Client-Rechner, die kommunikativ mit der Cloud verbunden sind 204 kann mit anderen Komponenten der On-Demand-DB-Serviceumgebung kommunizieren 200 um auf Dienste zuzugreifen, die von der On-Demand-DB-Dienstumgebung bereitgestellt werden. Client-Rechner können beispielsweise auf die On-Demand-DB-Serviceumgebung zugreifen, um Informationen abzurufen, zu speichern, zu bearbeiten oder zu verarbeiten. In einigen Implementierungen sind die Edge-Router 208 und 212 Pakete zwischen der Cloud weiterleiten 204 und andere Komponenten der On-Demand-DB-Serviceumgebung 200. Zum Beispiel die Edge-Router 208 und 212 kann das Border Gateway Protocol (BGP) verwenden. Das BGP ist das zentrale Routing-Protokoll des Internets. Die Edge-Router 208 und 212 kann eine Tabelle von IP-Netzwerken oder „Präfixen“ führen, die die Erreichbarkeit des Netzwerks zwischen autonomen Systemen im Internet kennzeichnen.

                In einigen Implementierungen ist die Firewall 216 kann die inneren Komponenten der On-Demand-DB-Serviceumgebung schützen 200 aus dem Internetverkehr. In einigen Ausführungsformen Firewall 216 kann eine aktive Firewall sein. Die Firewall 216 kann den Zugriff auf die inneren Komponenten der On-Demand-DB-Dienstumgebung blockieren, zulassen oder verweigern 200 basierend auf einer Reihe von Regeln und anderen Kriterien (z. B. den Richtlinien 35 zuvor besprochen). Die Firewall 216 kann als Paketfilter, Application Gateway, Stateful Filter, Proxy Server, Virtual Private Networking (VPN), Network Access Controller (NAC), hostbasierte Firewall, Unified Threat Management (UTM .) fungieren oder diese implementieren )-System, ein Predictive Intelligence (PI) und/oder FaaS und/oder jede andere Art von Firewall-Technologie.

                In einigen Implementierungen sind die Core-Switches 220 und 224 sind Switches mit hoher Kapazität, die Pakete innerhalb der On-Demand-DB-Serviceumgebung übertragen 200. Die Kernschalter 220 und 224 können als Netzwerkbrücken konfiguriert werden, die Daten schnell zwischen verschiedenen Komponenten innerhalb der On-Demand-DB-Serviceumgebung weiterleiten. In einigen Implementierungen ist die Verwendung von zwei oder mehr Core-Switches 220 und 224 kann Redundanz oder reduzierte Latenz bieten.

                In einigen Implementierungen sind die Pods 240 und 244 Ausführen der Kerndatenverarbeitungs- und Servicefunktionen, die von der On-Demand-DB-Serviceumgebung bereitgestellt werden. Jeder Pod kann verschiedene Arten von Hardware- oder Software-Rechenressourcen umfassen. Ein Beispiel der Pod-Architektur wird unter Bezugnahme auf Fig. 2 ausführlicher erörtert. 2B. In einigen Implementierungen ist die Kommunikation zwischen den Pods 240 und 244 wird über die Pod-Switches geführt 232 und 236. Die Pod-Schalter 232 und 236 kann die Kommunikation zwischen den Pods erleichtern 240 und 244 und Client-Rechner, die kommunikativ mit der Cloud verbunden sind 204, zum Beispiel über Core-Switches 220 und 224. Auch die Pod-Schalter 232 und 236 kann die Kommunikation zwischen den Pods erleichtern 240 und 244 und der DB-Speicher 256. In einigen Implementierungen ist der Load Balancer 228 kann die Arbeitslast zwischen den Pods verteilen 240 und 244. Das Ausbalancieren der On-Demand-Dienstanforderungen zwischen den Pods kann dazu beitragen, die Nutzung von Ressourcen zu verbessern, den Durchsatz zu erhöhen, Reaktionszeiten zu verkürzen oder den Overhead zu reduzieren. Der Load-Balancer 228 kann Multilayer-Switches enthalten, um den Verkehr zu analysieren und weiterzuleiten.

                In einigen Implementierungen Zugriff auf den DB-Speicher 256 wird von einer DB-Firewall geschützt 248. In einigen Implementierungen ist die DB-Firewall 248 ist eine aktive Firewall. Außerdem ist die Firewall 248 können mit den hier diskutierten Gruppenoptimierungstechnologien ausgestattet sein. Die DB-Firewall 248 kann als Computeranwendungs-Firewall auf der DB-Anwendungsschicht eines Protokollstapels fungieren. Die DB-Firewall 248 kann den DB-Speicher schützen 256 vor Anwendungsangriffen wie SQL-Injection (Structure Query Language), DB-Rootkits und unberechtigter Offenlegung von Informationen. In einigen Implementierungen ist die DB-Firewall 248 umfasst einen Host, der eine oder mehrere Formen von Reverse-Proxy-Diensten zum Proxy-Datenverkehr verwendet, bevor er an einen Gateway-Router weitergeleitet wird. Die DB-Firewall 248 kann den Inhalt des DB-Verkehrs überprüfen und bestimmte Inhalte oder DB-Anfragen blockieren. Die DB-Firewall 248 kann auf der SQL-Anwendungsebene auf dem TCP/IP-Stack arbeiten, die Verbindung von Anwendungen mit der DB oder SQL-Verwaltungsschnittstellen verwalten sowie Pakete abfangen und erzwingen, die zu oder von einem DB-Netzwerk oder einer Anwendungsschnittstelle gehen.

                In einigen Implementierungen ist die Kommunikation mit dem DB-Speicher 256 wird über den DB-Switch geführt 252. Der mandantenfähige DB-Speicher 256 kann mehr als eine Hardware- oder Softwarekomponente zur Behandlung von DB-Abfragen umfassen. Dementsprechend ist der DB-Switch 252 kann DB-Abfragen leiten, die von anderen Komponenten der On-Demand-DB-Dienstumgebung (z. B. den Pods) übertragen werden 240 und 244) zu den richtigen Komponenten innerhalb des DB-Speichers 256. In einigen Implementierungen ist der DB-Speicher 256 ist ein On-Demand-DB-System, das von vielen verschiedenen Organisationen geteilt wird, wie oben unter Bezugnahme auf die Fig. 1 und 2 beschrieben. 1A und 1B.

                FEIGE. 2B zeigt ein Systemdiagramm, das weiter beispielhafte Architekturkomponenten einer On-Demand-DB-Dienstumgebung gemäß einigen Implementierungen veranschaulicht. Die Kapsel 244 kann verwendet werden, um Dienste für einen Benutzer der On-Demand-DB-Dienstumgebung bereitzustellen 200. In einigen Implementierungen umfasst jeder Pod eine Vielzahl von Servern oder anderen Systemen. Die Kapsel 244 enthält einen oder mehrere Content-Batch-Server 264, Inhaltssuchserver 268, Abfrageserver 282, Datei-(Force-)Server 286, Zugangskontrollsystem (ACS)-Server 280, Batch-Server 284, und App-Server 288. Die Kapsel 244 kann auch DB-Instances enthalten 290, schnelle Dateisysteme (QFS) 292und Indexer 294. In einigen Implementierungen wird die Kommunikation zwischen den Servern im Pod teilweise oder vollständig 244 kann über den Schalter übertragen werden 236.

                In einigen Implementierungen sind die App-Server 288 ein Hardware- oder Software-Framework umfassen, das der Ausführung von Prozeduren (z. B. Programmen, Routinen, Skripten usw.) gewidmet ist, um den Aufbau von Anwendungen zu unterstützen, die von der On-Demand-DB-Dienstumgebung bereitgestellt werden 200 über den Pod 244. In einigen Implementierungen das Hardware- oder Software-Framework eines App-Servers 288 ist konfiguriert, um Operationen der hierin beschriebenen Dienste auszuführen, einschließlich der Ausführung der Blöcke verschiedener hierin beschriebener Verfahren oder Prozesse. In einigen alternativen Implementierungen zwei oder mehr App-Server 288 können enthalten sein und zusammenarbeiten, um solche Verfahren durchzuführen, oder ein oder mehrere andere hierin beschriebene Server können konfiguriert sein, um die offenbarten Verfahren durchzuführen. In verschiedenen Implementierungen sind die App-Server 288 kann mit den App-Servern identisch oder ähnlich sein 100 mit Bezug auf die Fig. 1 und 2 erörtert. 1A-1B .

                Die Content-Batch-Server 264 kann Anfragen innerhalb des Pods verarbeiten. Einige dieser Anfragen können lange dauern oder nicht an einen bestimmten Kunden gebunden sein. Zum Beispiel die Content-Batch-Server 264 kann Anfragen im Zusammenhang mit Log Mining, Bereinigungsarbeiten und Wartungsaufgaben bearbeiten. Die Inhaltssuchserver 268 kann Abfrage- und Indexerfunktionen bereitstellen. Zum Beispiel die Funktionen der Content Search Server 268 kann es Benutzern ermöglichen, Inhalte zu durchsuchen, die in der On-Demand-DB-Dienstumgebung gespeichert sind. Die Dateiserver 286 kann im Dateispeicher gespeicherte Informationsanfragen verwalten 298. Der Dateispeicher 298 kann Informationen wie Dokumente, Bilder und grundlegende große Objekte (BLOBs) speichern. Durch die Verwaltung von Informationsanfragen mit den File Force-Servern 286, kann der Image-Footprint auf der DB reduziert werden. Die Abfrageserver 282 kann verwendet werden, um Informationen aus einem oder mehreren Dateisystemen abzurufen. Zum Beispiel das Abfragesystem 282 kann Informationsanfragen von den App-Servern empfangen 288 und Übermittlung von Informationsanfragen an das NFS 296 befindet sich außerhalb des Pods.

                Die Kapsel 244 kann eine DB-Instance teilen 290 als mandantenfähige Umgebung konfiguriert, in der verschiedene Organisationen Zugriff auf dieselbe Datenbank haben. Darüber hinaus werden vom Pod erbrachte Dienstleistungen 244 kann verschiedene Hardware- oder Softwareressourcen in Anspruch nehmen. In einigen Implementierungen sind die ACS-Server 280 den Zugriff auf Daten, Hardware-Ressourcen oder Software-Ressourcen steuern. In einigen Implementierungen sind die Batch-Server 284 Batch-Jobs verarbeiten, die zum Ausführen von Aufgaben zu bestimmten Zeiten verwendet werden. Zum Beispiel die Batch-Server 284 kann Anweisungen an andere Server, wie die App-Server, übermitteln 288, um die Batch-Jobs auszulösen.

                In einigen Implementierungen ist ein QFS 292 ist ein Open-Source-Dateisystem, das von Sun Microsystems® aus Santa Clara, Kalifornien, erhältlich ist. Das QFS kann als Dateisystem mit schnellem Zugriff zum Speichern und Zugreifen auf Informationen dienen, die im Pod verfügbar sind 244. Das QFS 292 kann einige Datenträgerverwaltungsfunktionen unterstützen, sodass viele Festplatten in einem Dateisystem gruppiert werden können. Dateisystem-Metadaten können auf einem separaten Satz von Datenträgern gespeichert werden, was für Streaming-Anwendungen nützlich sein kann, bei denen lange Datenträgersuchen nicht toleriert werden können. Somit kann das QFS-System mit einem oder mehreren Inhaltssuchservern kommunizieren 268 oder Indexer 294 um in den Netzwerkdateisystemen (NFS) gespeicherte Daten zu identifizieren, abzurufen, zu verschieben oder zu aktualisieren 296 oder andere Speichersysteme.

                In einigen Implementierungen sind ein oder mehrere Abfrageserver 282 mit dem NFS kommunizieren 296 um außerhalb des Pods gespeicherte Informationen abzurufen oder zu aktualisieren 244. Das NFS 296 kann Server zulassen, die sich im Pod befinden 244 um auf Informationen zuzugreifen, um auf Dateien über ein Netzwerk zuzugreifen, ähnlich wie beim Zugriff auf den lokalen Speicher. In einigen Implementierungen werden Abfragen von den Abfrageservern 282 werden an das NFS übermittelt 296 über den Load-Balancer 228, die Ressourcenanforderungen über verschiedene Ressourcen verteilen kann, die in der On-Demand-DB-Dienstumgebung verfügbar sind. Das NFS 296 kann auch mit dem QFS kommunizieren 292 um die auf dem NFS gespeicherten Informationen zu aktualisieren 296 oder um Informationen an das QFS zu übermitteln 292 zur Verwendung durch Server innerhalb des Pods 244.

                In einigen Implementierungen enthält der Pod eine oder mehrere DB-Instances 290. Die DB-Instance 290 kann Informationen an das QFS übermitteln 292. Wenn Informationen an das QFS übertragen werden, können sie von Servern innerhalb des Pods verwendet werden 244 ohne einen zusätzlichen DB-Aufruf zu verwenden. In einigen Implementierungen werden DB-Informationen an den Indexer übertragen 294. Indexer 294 kann einen Index der in der DB verfügbaren Informationen bereitstellen 290 oder QFS 292. Die Indexinformationen können File-Force-Servern zur Verfügung gestellt werden 286 oder das QFS 292.

                II. API-Ausführungen bestellen

                FEIGE. 3 zeigt ein Beispiel für eine Auftragsverwaltungsarchitektur 300 gemäß verschiedenen Ausführungsformen. Wie gezeigt, ist die Auftragsverwaltungsarchitektur 300 beinhaltet OMS-Service 312, E-Commerce-Plattform (EP) 314, OMS-Hörer 316, und OMS-Bestellübersicht (OMSOS) 318. Einige oder alle dieser Entitäten können vom OMS implementiert werden 350 und/oder andere Elemente des Datenbanksystems 16. In einer Beispielimplementierung ist jeder der OMS-Dienste 312, EP 314, OMS-Hörer 316, und OMSOS 318 werden vom OMS umgesetzt 350. In einer anderen Beispielimplementierung ist der OMS-Dienst 312 wird von einem oder mehreren App-Servern implementiert 100, und die EP 314, OMS-Hörer 316, und OMSOS 318 werden vom OMS umgesetzt 350. Andere Anordnungen sind in anderen Ausführungsformen möglich.

                Die Auftragsverwaltungsarchitektur 300 umfasst auch verschiedene Anwendungen und/oder Dienste 302-1 zu 302-Z wobei Z eine Zahl ist (zusammenfassend als "Apps/Dienste" bezeichnet) 302" oder dergleichen). Als Beispiele sind die Apps/Dienste 302 kann Cloud-Dienste, Storefront-Anwendungen, PoS-Apps/-Dienste, WMS/ERP-Apps/-Dienste und dergleichen umfassen. Die Apps/Dienste 302 können die von den CPs entwickelten/implementierten CP-Apps sein 50, die die hier besprochenen Bestell-APIs verwenden.

                Der OMS-Service 312 und/oder die EP 314 Handhabung der Geschäftslogik, die erforderlich ist, um eine Bestellung über Apps/Dienste aufzugeben, zu verarbeiten, zuzuweisen, auszuführen, zu stornieren, zurückzusenden und zu erstatten 302. Der OMS-Service 312 interagiert mit den verschiedenen Apps/Diensten 302 und andere Einheiten innerhalb des OMS 350. Der OMS-Service 312 kann Benutzeranfragen von einzelnen Apps/Diensten erhalten 302, Daten oder Dienste vom EP anfordern/abfragen 314 und/oder die OMS-Bestellübersicht 318, und Antworten auf die Apps/Dienste bereitstellen 302 basierend auf den Ergebnissen der Anfragen/Abfragen. Die Benutzeranfragen können die Bestell-API aufrufen oder anderweitig enthalten 32 Aufrufe, um aggregierte Statistiken über verschiedene Aufträge zurückzugeben und/oder verschiedene Aufträge anzupassen. Der OMS-Service 312 interagiert mit der EP 314 um Bestellinformationen auf eine standardisierte Weise zu speichern, auf die jeder interne oder externe Prozess reagieren kann. Der OMS-Service 312 interagiert auch mit dem OMSOS 318 um Bestellungen zu validieren, die angepasst werden können (z. B. reduziert/storniert oder reduziert).

                Die EP 314 implementiert die Bestell-APIs 32. Als Reaktion auf den Aufruf einer oder mehrerer Bestell-APIs 32, die EP 314 kann auf Daten aus dem Datenbanksystem zugreifen (z. B. lesen und/oder schreiben) 16. Die EP 314 kann je nach Art und Inhalt einer von Apps/Diensten empfangenen Anfrage verschiedene Aktionen ausführen 302 über den OMS-Dienst 312. Wenn eine Anfrage die Order Retrieve API aufruft 32, die EP 314 fragt das Datenbanksystem ab 16 (siehe z. B. Fig. 1A – Fig. 2B ), um den aktuellen Status einer oder mehrerer Bestellungen abzurufen, einen zusammengefassten Zustand einer oder mehrerer Bestellungen zu einem bestimmten Datum abzurufen und potenzielle Zustände einer oder mehrerer Bestellungen abzurufen gemäß eine oder mehrere angegebene Änderungen. Im letzteren Fall ist die EP 314 kann den/die möglichen Status(e) der Bestellung(en) basierend auf der/den angegebenen Änderung(en) berechnen und diese/n potenzielle(n) Status(en) an die App/Dienste zurückgeben 302 über den OMS-Dienst 312.

                Wenn eine Anfrage die Auftragsänderungs-API aufruft 32, die EP 314 kann Geschäftslogik ausführen, um Auftragspositionsänderungen und/oder Mengenänderungen an einem oder mehreren bestehenden Aufträgen zu verarbeiten. Die Positionsänderungen können beispielsweise das Anwenden von Rabatten auf den Gesamtpreis einer Bestellung, das Anwenden von Steuern auf eine Bestellung, Änderungen der Versandkosten und/oder dergleichen umfassen. Die Mengenänderungen können beispielsweise Bestellpositionsreduzierungen, Bestellstornierungen, Bestellpositionserhöhungen und dergleichen umfassen. Die Geschäftslogik im EP 314 verarbeitet Bestellpostenänderungen, zum Beispiel durch Identifizierung von Artikeln, die aufgrund des Erfüllungsstatus der Bestellung stornierbar sind, Bestimmen, ob Versandkosten angepasst oder storniert werden sollen, Bestimmen, ob Rabatte angewendet oder storniert werden sollen, Bestimmen, ob die Bestellung hat Anspruch auf Preisänderungen, einschließlich Erhöhungen oder Senkungen, sowie Berechnung von Auftragspositionen, Steuern und Anpassungspreisen. In einigen Ausführungsformen ist die EP 314 können auf Bestellmengenänderungen aufmerksam gemacht werden, die an einer Bestellposition vor oder nach der Erfüllung vorgenommen werden, da dies Auswirkungen auf die Bearbeitung des Änderungsauftrags haben kann.

                In verschiedenen Ausführungsformen kann der Mieter DB 22 (siehe z. B. Fig. 1B ) kann eine oder mehrere Datenspeichervorrichtungen umfassen, die als Repository zum dauerhaften Speichern und Verwalten von Datensammlungen gemäß einer vordefinierten Datenbankstruktur dienen. Die zur Implementierung der Mandanten-DB verwendeten Datenspeicher 22 können verteilte Datenspeicher sein, die ein Netzwerk von Datenspeichergeräten umfassen. In diesen Ausführungsformen ist der Mieter DB 22 kann zum Speichern von Auftragsobjekten konfiguriert werden. Die Auftragsobjekte sind Datenbankobjekte (DBOs), die CPs enthalten 50 auftragsbezogene Daten. Im Kontext von Auftragsobjekten ist ein „Objekt“ ein Element, in dem Daten oder Informationen gespeichert werden können, wobei das Objekt die allgemeine Definition der Art der gespeicherten Informationen ist. Wie hierin verwendet, bezieht sich ein „Datenbankobjekt“ oder „DBO“ auf jede Darstellung von Informationen in einer Datenbank, die in Form eines Objekts oder Tupels vorliegt und eine oder mehrere Variablen, Datenstrukturen, Funktionen, Methoden, Klassen enthalten kann , Datensätze, Felder, Datenelemente, Assoziationen zwischen Daten und Datenbankentitäten (auch als „Beziehung“ bezeichnet) und dergleichen. Der Begriff „Datensatz“ beschreibt ein bestimmtes Vorkommen eines Objekts, beispielsweise eine bestimmte Bestellung, die durch ein Bestellobjekt repräsentiert wird. Ein Datensatz ist analog zu einer Zeile in einer Datenbanktabelle. In einigen Ausführungsformen ist die Mieter-DB 22 kann eine relationale Datenbankstruktur verwenden, die mehrere Datenbankobjekte enthält. In diesen Ausführungsformen können die Auftragsobjekte als „sObjects“ dargestellt werden. Ein sObject ist eine Variable, die eine Datenzeile darstellt und mit der API deklariert werden kann 32 Name des Objekts. Die Namen von sObjects entsprechen den API-Namen der entsprechenden Objekte (z. B. Auftragsobjekte), und die Namen von sObject-Feldern entsprechen den API-Namen der entsprechenden Felder. In verschiedenen Implementierungen können sObjects Datenbankobjekte sein, die unter Verwendung der vom Benutzersystem verwendeten Abfragesprache zugänglich und beschreibbar sind 12 (z. B. SQL, SOQL oder dergleichen). Beispielhafte Implementierungen solcher Datenspeicher umfassen die Force.com-Plattform, die von Salesforce.com® bereitgestellt wird, Oracle® Database 12c, IBM® DB2, Microsoft® ACCESS® und/oder dergleichen. In einigen Ausführungsformen ist die Bestell-API 32 enthält ein Änderungsauftragsdetail, das nicht als Auftrags-sObject verfügbar gemacht wird.

                OMS-Hörer 316 ist eine Schnittstelle, die auftragsbezogene Ereignisse verarbeitet. Der OMS-Hörer 316 kann eine Methode oder Funktion sein, die aufgerufen wird, wenn eine Bestellung geändert oder aktualisiert wird. Der OMS-Hörer 316 ruft die Zusammenfassung der Bestellung mit den ausgewählten Änderungen aus dem EP ab 314 und behält diese Änderungen im OMSOS bei 318. Der OMS-Hörer 316 liest die Änderungen der EP 314 als Ereignisse und benachrichtigt (schreibt) die OMS-Auftragszusammenfassung 318 der Änderungen/Aktualisierungen. Diesbezüglich ist der OMS-Hörer 316 kann Ereignisparameter übergeben, die jedes erkannte Ereignis anzeigen. In einem Beispiel ist der OMS-Listener 316 kann erkennen, wenn die EP 314 Zugriffsdaten aus dem Datenbanksystem 16, und kann einen oder mehrere relevante Parameter an das OMSOS übergeben 318 damit die notwendigen Änderungen in der Bestellübersicht widergespiegelt werden, die den Apps/Diensten zur Verfügung gestellt wird 302. In einem anderen Beispiel ist der OMS-Listener 316 kann feststellen, dass eine bestimmte Aktion oder Transaktion unterlassen wurde, als die EP 314 auf Daten aus dem Datenbanksystem zugegriffen 16, und kann einen oder mehrere relevante Parameter an das OMSOS übergeben 318 damit die notwendigen Änderungen in der Bestellübersicht widergespiegelt werden, die den Apps/Diensten zur Verfügung gestellt wird 302.

                Das OMSOS 318 ist eine Serviceeinheit, die eine zusammenfassende Ansicht des Lebenszyklus einer Bestellung generiert und bereitstellt, einschließlich Status/Status einer Bestellung, Erfüllung, Versand, Zahlung, Abrechnung usw. Das OMSOS 318 verfolgt auch Änderungen an Bestellungen und generiert Bestellzusammenfassungen basierend auf den nachverfolgten Änderungen. In Ausführungsformen ist das OMSOS 318 bietet eine Vorschau ausgewählter Änderungen an einer Bestellung, bevor diese Änderungen abgeschlossen sind. In einigen Ausführungsformen kann ein Publish/Subscribe-Modell verwendet werden, um das OMSOS zu implementieren 318, wo bestimmte OMS 350 Entitäten und/oder Apps/Dienste 302 abonnieren Sie das OMSOS 318, und bei einer Änderung einer Bestellung wird das OMSOS 318 stellt Bestellzusammenfassungen für die Abonnements bereit.

                Ausführungsformen beinhalten eine Bestell-API 32 die die Komplexität des zugrunde liegenden EP abstrahieren 314 und zugehöriges Datenmodell (z. B. Datenmodell 400 von FIG. 4 ) bei gleichzeitiger Durchsetzung von Geschäftsregeln. Die Bestell-API 32 umfasst eine Bestelländerungs-API und eine Bestellabruf-API (die hierin gemeinsam als „Bestell-API“ oder „Bestell-API“ bezeichnet werden 32“). Ein Änderungsauftrag ist eine Sammlung von Änderungen an einem ursprünglichen Auftrag nach der Aktivierung des ursprünglichen Auftrags. Die zugrunde liegende Implementierung des Änderungsauftrags kann sehr komplex sein. Beispielsweise kann eine Änderungslinie aufgrund einiger finanzieller Regeln oder Einschränkungen als Deltalinie, Offsetlinie oder Ersatzlinie dargestellt werden.

                Ein Änderungsauftrag kann Anpassungen auf Positionsebene an einem Auftragsartikel/Produkt und Mengenanpassungen an einem Auftragsartikel/Produkt umfassen. Die Mengenanpassungen umfassen die Erhöhung der Menge einer Bestellposition/eines Produkts vor oder nach der Erfüllung, die Reduzierung der Menge einer Bestellposition/eines Produkts vor der Erfüllung (bezeichnet als „Auftrag stornieren“ oder „Stornieren“) und die Reduzierung der Menge einer Bestellung nach der Erfüllung (sog. „Retourenauftrag“ oder „Retoure“). Die Anpassungen auf Positionsebene umfassen das Erhöhen oder Senken der Kosten oder des Preises von Bestellungen oder einzelnen Bestellartikeln/Produkten. Zum Beispiel können die Anpassungen auf Positionsebene das Anwenden von Rabatten auf Bestellungen nach der Auftragserstellung vor der Erfüllung oder nach der Erfüllung umfassen. Die Rabatte können beispielsweise Rabatte auf den Gesamtpreis, Rabatte auf Bestellartikel und Rabatte auf Lieferkosten umfassen.

                Die API zum Abrufen von Bestellungen ermöglicht das Anzeigen von Bestellungen und ihren zugehörigen benutzerdefinierten Objekten und/oder Finanzdatensätzen (z. B. Produktdetails, Anpassungen, Steuern usw.) mit ausgewählten Änderungen. Die API zum Abrufen von Bestellungen kann verwendet werden, um den aktuellen Status einer Bestellung abzurufen, den zusammengefassten Status einer Bestellung zu einem bestimmten Datum abzurufen und einen möglichen Status einer Bestellung (zusammen mit ihren Änderungen) abzurufen. Die Bestelländerungs-API ermöglicht es Benutzern, den aktuellen Status einer oder mehrerer Bestellungen mit einer oder mehreren angewendeten Änderungen (z. B. die oben genannten Rabatte, reduzierten Mengen usw.) anzuzeigen, ohne diese Änderungen auf die zugrunde liegenden Daten der Bestellungen anzuwenden. Die Bestell-API 32 ermöglicht es Benutzern zu sehen, wie sich ausgewählte Änderungen auf die Bestellung auswirken würden, bevor sie die Transaktion zur Aktualisierung der Bestellung bestätigen, was im Laufe der Zeit die Anzahl der an das System übermittelten Transaktionen reduziert 16. In diesem Zusammenhang können die Benutzer zum Beispiel Entwickler/Programmierer sein, die mit dem CP verbunden sind 50, Personal wie Wirtschaftsprüfer oder Buchhalter, die mit dem CP verbunden sind 50, Benutzer des CP 50 wie E-Commerce-Verbraucher und dergleichen). In einem Beispiel muss ein Buchhalter-Benutzer möglicherweise den Status einer Bestellung und alle ihre Änderungen, die ab einem bestimmten Datum vorgenommen wurden, anzeigen. Da der Auftrag und das zugehörige Datenmodell (siehe z. B. Fig. 4 ) sensible Finanzinformationen enthalten, haben Buchhalter möglicherweise keinen Zugriff auf Details der Änderungen und sogar auf Elemente wie die Anzahl der Instanzen der Änderungen (ein bestimmter Artikel wird zurückgegeben) häufig). Mit der API zum Abrufen von Bestellungen kann der Buchhalter weiterhin alle Informationen über die ursprüngliche Bestellung und alle anwendbaren Änderungen zusammenfassen.

                Darüber hinaus können Benutzer die Bestell-API verwenden, um Informationen über eine Bestellung und alle ihre Änderungen zu erhalten 32 um all diese Daten abzufragen. In Ausführungsformen würde eine solche Abfrage mindestens umfassen: eine Abfrage zum Zurückgeben der Bestellung und ihrer untergeordneten Entitäten, wie zum Beispiel Bestellprodukte, Anpassungen, Steuern usw., und/oder eine Abfrage zum Zurückgeben von Änderungsaufträgen mit einem RelatedOrder-Feld, das auf die der ursprüngliche Orden und ihre zuvor erwähnten untergeordneten Entitäten.

                Die von der Bestell-API definierten API-Aufrufe 32 sind in Tabelle 1 zusammengefasst, die beispielhafte Anforderungs- und Antwortnachrichtentexte für jeden aufgelisteten API-Aufruf angibt.

                Im Beispiel von Tabelle 2 ist die Client-App 12ja und/oder App/Dienst 302 führt eine HTTP-POST-Methode unter Verwendung des aufgelisteten Universal Resource Indicator (URI) aus, wobei die orderId die dem Bestellobjekt zugeordnete Bestellkennung (ID) ist. Tabelle 8 zeigt auch die Anforderung und Antwort, die im Auszeichnungssprachenformat gesendet werden sollen. In einigen Ausführungsformen können die Anforderungsparameter an den URI im POST angehängt werden (z. B. nach dem „changeStatus“ in Tabelle 2). Die Anforderung enthält ein Statusfeld/Datenelement mit dem Wert „Aktiviert“. Die Antwort umfasst ein statusCode-Feld/Datenelement mit einem Wert von „200“ (z. B. „OK“ anzeigend) und ein Body-Feld mit einem orderId-Datenelement, das eine ID des Auftragsobjekts enthält. In anderen Ausführungsformen können die Anfrage und/oder die Antwort ein Standardplattformereignis umfassen, das gleich oder ähnlich dem Standardplattformereignis ist, das durch Tabelle 1 gezeigt wird 10 infra.

                Zusätzlich, wie in Tabelle 1 gezeigt, wird der API-Aufruf zum Abrufen von Bestellungen (z. B. „/commerce/orders/?expand=?&viewType=?“) enthält zwei Abfrageparameter, darunter „expand“ und „viewType“. Wenn der Abfrageparameter expand nicht angegeben wird, werden nur die Informationen auf Kopfzeilenebene zurückgegeben. Wenn der Abfrageparameter expand angegeben wird, werden die untergeordneten Datensätze zurückgegeben. Wenn der viewType nicht angegeben wird, wird nur die ursprüngliche Reihenfolge zurückgegeben. Wenn der viewType angegeben ist, werden der ursprüngliche Auftrag und die aktiven Änderungen zusammengefasst (IncludeChanges), der ursprüngliche Auftrag und alle Änderungen zusammengefasst (IncludePendingChanges) und/oder der ursprüngliche Auftrag und alle Änderungen zum Datum zurückgegeben ( AsOfDate).

                FEIGE. 4 zeigt ein beispielhaftes Entity-Relationship-Modell (ERM) 400 zum Ausführen verschiedener hierin erörterter Ausführungsformen. Das ERM 400 ist eine grafische Darstellung von Datenbankentitäten und deren Beziehungen zueinander. In FIG. In 4 stellt eine Box eine Entität dar, die ein in der Datenbank zu verfolgendes Objekt ist und das mehrere Instanzen von Daten sammeln und speichern kann. Eine Entität wird mit zwei Compartments dargestellt. Das obere Fach zeigt den Entitätsnamen oder das Label an und das untere Fach enthält eine Liste von Attributen. Ein „Attribut“ ist eine Eigenschaft oder ein Merkmal, das die von der Entität gespeicherten Daten beschreiben kann. Der Entitätsname kann einem Datensatz oder einer Zeile in einer Datenbank entsprechen und jedes aufgelistete Attribut kann einem Feld oder einer Spalte in der Datenbank entsprechen. Eine Beziehung zwischen zwei Entitäten wird durch eine Linie zwischen den beiden Entitäten angezeigt. Die Beziehung veranschaulicht eine Assoziation zwischen zwei Entitäten, und jede Beziehung umfasst eine Kardinalität und eine Modalität. Kardinalität bezieht sich auf die maximale Häufigkeit, mit der eine Instanz in einer Entität mit Instanzen in der zugehörigen Entität verknüpft werden kann. Modalität bezieht sich auf die minimale Häufigkeit, mit der eine Instanz in einer Entität einer Instanz in der zugehörigen Entität zugeordnet werden kann. Die Art der Beziehung wird durch unterschiedliche Symbole oder Notationen an jedem Ende der Zeile dargestellt. In FIG. In 4 steht ein Ring oder Kreis für Null, eine senkrechte Linie oder ein Strich steht für Eins und ein Krähenfußsymbol (mit drei Zehen) steht für viele oder unendlich. Diese Symbole werden paarweise verwendet, um die vier Kardinalitätstypen darzustellen, die eine Entität in einer Beziehung haben kann, wobei die innere Komponente der Notation das Minimum und die äußere Komponente das Maximum darstellt. Ein Kreis und ein Strich stehen beispielsweise für ein Minimum von Null und ein Maximum von eins (optional) zwei Striche stehen für ein Minimum von eins und ein Maximum von eins (obligatorisch) ein Kreis und ein Krähenfuß stehen für ein Minimum von Null und ein Maximum von vielen (optional) und ein Bindestrich und ein Krähenfuß stellen ein Minimum von eins und ein Maximum von vielen dar (obligatorisch).

                Unter Bezugnahme auf FIG. In 4 stellt die Entität Product2 ein Produktobjekt dar, das mehrere Felder aufweist, die für Mengen- und Erlöspläne verwendet werden (z. B. Renten). Die OrderItem-Entität stellt ein Bestellprodukt (z. B. Product2) dar, das eine Organisation verkauft, z. B. eine Position einer Bestellung. Die OrderItem-Entität enthält die folgenden Attribute: Typ, TotalLineAmount, TotalAdjustmentAmount (RSF), TotalTaxAmount (RSF) und TotalAmount (FORMULA). Die Entität OrderItem kann finanzielle Auswirkungen haben oder auch nicht, abhängig von der Abrechnungsregel und der Steuerregel, die der Position zugeordnet sind.

                Die OrderItemType-Entität (Aufzählung) stellt einen Artikel dar, den ein Kunde/Benutzer kauft (z. B. ein Produkt oder eine Dienstleistung). Der OrderItemType kann ein Bestellprodukt (Produkt), ein Bündelartikel (Produkt), der einen Artikel innerhalb eines gebündelten Produkts darstellt, oder eine Liefergebühr (Gebühr), die eine Liefergebühr für eine Bestellung darstellt, sein. Die OrderItemType-Entität enthält ein OrderItemTypeName-Attribut und ein OrderItemTypeCode-Attribut. OrderItemTypeCode repräsentiert ein Produkt oder eine Gebühr. Eine Produktauftragsposition ist grundsätzlich erfüllbar. Eine Charge-Bestellposition stellt eine zusätzliche Gebühr/Gebühr dar, die im Rahmen des Bestellvorgangs hinzugefügt wird. Die Auftragsposition Belastung ist grundsätzlich nicht erfüllbar. Beispiele für solche Bestellartikel umfassen eine Aufnahmegebühr für die Mitgliedschaft in einem Fitnessstudio, eine Bereitstellungsgebühr, eine Liefergebühr oder dergleichen.

                Die Entität OrderItem AdjustmentLineItem erklärt den Grund, wie ein Gesamtproduktpreis ermittelt wird, der sich vom Einheitspreis unterscheidet. Die Preisanpassung auf Auftragsebene muss möglicherweise auf Auftragspositionsebene verteilt werden. Die Entität OrderItem AdjustmentLineItem enthält die folgenden Attribute: Amount, TotalTax (RSF), CampaignName, CouponName und ReasonCode. In einigen Ausführungsformen sind ReasonCode pro Änderungstyp konfigurierbar. Die Entität OrderItem TaxLineItem stellt die Steuerschuld dar, die das zugeordnete Bestellprodukt anfällt. Das TaxLineItem würde als Ergebnis einer Anpassung mit der zugehörigen PriceAdjustment verknüpft.

                Die Entität OrderChangeLog stellt ein Protokoll von Auftragsänderungen dar und enthält die folgenden Attribute: Status, ChangeType und ChangeDetail. Das Attribut ChangeType enthält eine Mengenänderung (Menge), eine neue Anpassung, eine Adressänderung und/oder andere ähnliche Elemente.

                Die OrderAdjustmentGroupType-Entität (Enumeration) enthält einen Header und/oder eine Split Line. Der Header ist eine Anpassung auf Auftragskopfebene, die für alle Positionen gelten kann oder nicht. Die Split Line kann auf einer Preisaufschlüsselung, einem Teilversand usw. basieren.

                Die OrderItemGroupType-Entität (Aufzählung) kann eine Preisaufschlüsselungsgruppe, eine Muss zusammen versendet werden Gruppe, eine Coupongruppe, eine (CPQ) MDQ oder eine (CPQ) Angebotsgruppe (in Fig. 4 nicht gezeigt) sein oder enthalten.

                OrderItemGroupAssignment wird auch als OrderItemRelatedItem bezeichnet und zeigt Produktbeziehungen an. Die ProductRelationshipType-Entität (Aufzählung) kann ein BundledWith und/oder BundleItem, HasOption und/oder OptionFor (CPQ) CoveredBy und/oder Covering (z. B. PoT) sein oder enthalten (in Fig. 4 nicht gezeigt). Eine Bereitstellungsgruppe kann nicht in der generischen OrderItemGroup ausgedrückt werden, da die Plattform kein Rollup über ein Junction-Objekt unterstützt.

                FIG.Die 5 – 19 veranschaulichen verschiedene beispielhafte grafische Benutzerschnittstellen (GUIs), die die Bestell-APIs gemäß verschiedenen hierin erörterten Ausführungsformen implementieren. Insbesondere zeigen die Fign. 5 – 8 zeigen verschiedene Instanzen einer beispielhaften GUI in verschiedenen Stadien des Aufhebens oder Reduzierens einer aktiven Bestellung. 9 – 12 zeigen verschiedene Instanzen einer beispielhaften GUI in verschiedenen Stadien des Anwendens eines Rabatts auf eine Bestellsumme. 13 – 16 zeigen verschiedene Instanzen einer beispielhaften GUI in verschiedenen Stadien des Anwendens eines Rabatts auf einzelne Artikel und FIG. 17-19 zeigen verschiedene Instanzen einer Beispiel-GUI in verschiedenen Phasen der Anwendung eines Rabatts auf Versandkosten. Jede der FIG. 5-19 veranschaulichen Beispielschnittstellen, die auf einem Benutzersystem angezeigt werden können 12 (wie die verschiedenen GUIs und GCEs, die zuvor besprochen wurden). Die Beispiel-GUIs können von einer dedizierten Anwendung angezeigt oder gerendert werden, die vom Benutzersystem implementiert wird 12 oder in einem vom Benutzersystem implementierten Webbrowser gerendert 12. Während bestimmte beispielhafte GUIs veranschaulicht sind, können in verschiedenen Ausführungsformen andere Schnittstellen verwendet werden. Während die Beispiele der FIG. 5-19 können durch Programmcode/Module des Benutzersystems generiert werden 12, in anderen Ausführungsformen können die GUIs ganz oder teilweise durch Programmcode/Module am System generiert werden 16 und dem Benutzersystem zur Verfügung gestellt 12 über das Kommunikationssystem 12E für Rendering (z. B. eine oder mehrere Webseiten, die in einem Browser oder einer Client-App gerendert werden 12ja vom Benutzersystem bedient 12).

                FIG. 5 – 8 zeigen beispielhafte GUI-Instanzen in verschiedenen Stadien des Stornierens oder Reduzierens einer aktiven Bestellung. Unter Bezugnahme auf FIG. 5 , die eine GUI-Instanz zeigt 500 zur Auswahl eines oder mehrerer Artikel, die reduziert oder storniert werden sollen. Wie in FIG. 5 , die GUI-Instanz 500 enthält ein Datenbankobjekt (DBO) (z. B. eine Tabelle) grafisches Objekt 502, die grafisch ein Auftragsobjekt darstellt. Das grafische DBO-Objekt 502 enthält mehrere Datensätze, von denen jeder einem Artikel im Auftragsobjekt entspricht. Das grafische DBO-Objekt 502 enthält auch grafische Bedienelemente (GCE) 503, die jeweils einem Artikel in der Bestellung entsprechen, einschließlich einer ausgewählten GCE 503. Die Felder im Auftragsobjekt umfassen ein Produktdetailfeld, ein Statusfeld, ein Mengenfeld, ein Einheitspreisfeld, ein Anpassungsfeld, ein Steuerfeld und ein Artikelsummenfeld. In diesem Beispiel hat der Benutzer die GCE ausgewählt 503 entsprechend dem Produktdetail „Men's Denali Jacket Large Art.-Nr.: 880004322“ (wo die ausgewählte GCE 503 enthält ein Häkchen und den entsprechenden Datensatz im DBO-Grafikobjekt 502 ist markiert). Die GUI-Instanz 500 enthält auch ein grafisches Objekt 504 das auf eine Stufe im Prozess der Artikelreduzierung/-stornierung hinweist. Nach Auswahl der zu stornierenden oder zu reduzierenden Artikel kann der Benutzer mit der nächsten Stufe des Reduzierungs-/Stornierungsprozesses fortfahren, indem er die GCE auswählt 506 (z. B. die Schaltfläche "Weiter" in Fig. 5).

                FEIGE. 6 zeigt eine GUI-Instanz 600 zur Auswahl einer zu reduzierenden Menge und Gründe für die Reduzierung/Stornierung gemäß verschiedenen Ausführungsformen. GUI-Instanz 600 beinhaltet eine GCE 602 Damit kann der Benutzer die zu stornierende Menge auswählen. In diesem Beispiel ist die GCE 602 ist eine Dropdown-Liste, die mit verschiedenen Mengen vorbelegt ist, um den ausgewählten Artikel zu reduzieren, wenn ein Wert in der Dropdown-Liste ausgewählt wird, der der Anzahl der Artikel in der Bestellung entspricht, storniert die Bestellung. GUI-Instanz 600 beinhaltet auch eine GCE 604 die es dem Benutzer ermöglicht, einen Grund für die Mengenreduzierung oder -stornierung auszuwählen oder auf andere Weise einzugeben. In diesem Beispiel ist die GCE 604 ist eine Dropdown-Liste, die mit einer Liste vordefinierter Gründe für die Stornierung oder Reduzierung des Artikelbetrags vorbelegt ist. In anderen Ausführungsformen können andere GCEs verwendet werden, beispielsweise kann ein Textfeld enthalten sein, damit der Benutzer den Grund für die Reduzierung/Stornierung eingeben kann. Nach Auswahl der zu reduzierenden Menge und des Grundes für die Stornierung/Kürzung kann der Benutzer durch Auswahl der GCE zum nächsten Schritt des Reduzierungs-/Stornierungsprozesses übergehen 606. Bei Auswahl des GCE 606 (z. B. die Schaltfläche "Weiter" in Fig. 6), die Client-App 12ja (siehe z. B. Fig. 1A ) und/oder App/Dienst 302 (siehe z. B. FIG. 3) kann den in Tabelle 8 gezeigten API-Aufruf durchführen.

                Im Beispiel von Tabelle 8 ist die Client-App 12ja und/oder App/Dienst 302 führt eine HTTP-POST-Methode unter Verwendung des aufgelisteten Universal Resource Indicator (URI) aus, wobei die orderId die mit der Bestellung verknüpfte Bestellkennung (ID) ist und die orderItemId eine dem ausgewählten Artikel zugeordnete Kennung ist. Tabelle 8 zeigt auch die Anfrage, die im Format der Auszeichnungssprache (z. B. JSON) gesendet werden soll. In diesem Beispiel ist die Client-App 12ja und/oder App/Dienst 302 übergibt einen Delta-Betrag an das OMS 350 (z.B. an die EP 314 über den OMS-Dienst 312 von FIG. 3 ). Der Deltabetrag ist hier der Betrag, der in die Auftragsposition geändert werden soll. Darüber hinaus ist der Kunde dafür verantwortlich, alle zugehörigen Korrektur- und Steuerposten mit den ursprünglichen Posten zu verrechnen. Die Anfrage enthält ein Mengenfeld/Datenelement, ein Steuerfeld und ein Begründungsfeld/Datenelement. Darüber hinaus enthält das Steuerfeld ein Datenelement OriginalTax, ein Datenelement Betrag und ein Datenelement Typ. In diesem Beispiel hat das Mengenfeld/Datenelement den Wert -1, das Datenelement Gründe enthält den Wert „Woanders günstigeren Preis gefunden“, das Datenelement OriginalTax hat den Wert „0aux00000000001“, das Datenelement Betrag hat einen Wert von –10,00 und das Typdatenelement hat den Wert „Geschätzt“. In einigen Ausführungsformen können die Anforderungsparameter an den URI im POST angehängt werden (z. B. nach „changeQuantity“ in Tabelle 8). Tabelle 8 zeigt auch die Antwort, die der Client-App bereitgestellt wird 12ja und/oder App/Dienst 302 im Format der Auszeichnungssprache (z. B. JSON). Die Antwort enthält ein ChangeOrderId-Feld mit einer Änderungsauftrags-ID (z. B. einen Wert von „801x00000000010“ in Tabelle 8).

                FEIGE. 7 zeigt eine GUI-Instanz 700 um eine Vorschau einer Änderungsauftragszusammenfassung gemäß verschiedenen Ausführungsformen anzuzeigen. GUI-Instanz 700 enthält ein grafisches Objekt mit einer Änderungsauftragszusammenfassung 702 Anzeige des Auftragsstatus mit den ausgewählten Änderungen über GUI-Instanzen 500-600. Rendern der GUI-Instanz 700 (z. B. durch Auswahl der Schaltfläche Weiter 606 in FIG. 6) kann bewirken, dass Programmcode (z. B. ein Skript) ausgeführt wird, was bewirken kann, dass der in Tabelle 9 gezeigte API-Aufruf durchgeführt wird.

                Im Beispiel von Tabelle 9 ist die Client-App 12ja und/oder App/Dienst 302 führt eine HTTP-GET-Methode mit dem aufgelisteten URI aus, wobei changeOrderId die Änderungsauftrags-ID ist, die nach dem Senden der Änderungen erhalten wurde (z. B. „801x00000000010“ aus Tabelle 8). Dadurch können weniger Parameter an das EP übergeben werden 314, die den Overhead von Rechen-/Netzwerkressourcen reduzieren kann. Die GET-Methode für ChangeOrderId gibt Header-Informationen für einen bestimmten Änderungsauftrag zurück (z. B. die Antwortnachricht in Tabelle 9). Tabelle 9 zeigt auch die Antwort, die der Client-App bereitgestellt wird 12ja und/oder App/Dienst 302 im Format der Auszeichnungssprache (z. B. JSON). Die Antwort enthält ein OriginalOrderId-Feld einschließlich der Bestell-ID (z. B. „801x00000000001“) der Bestellung und verschiedene andere Felder, wie in Tabelle 9 gezeigt, die die geänderten Werte der geänderten Bestellung angeben. Nach der Vorschau der Änderungsauftragszusammenfassung 702, kann der Benutzer die Änderungen übernehmen, indem er das GCE auswählt 706 (z. B. die Senden-Schaltfläche in Fig. 7 ). Bei Auswahl des GCE 706, die Client-App 12ja und/oder App/Dienst 302 kann den in Tabelle 10 gezeigten API-Aufruf durchführen.

                Im Beispiel von Tabelle 10 ist die Client-App 12ja und/oder App/Dienst 302 führt eine HTTP-POST-Methode mit dem aufgelisteten URI aus, wobei changeOrderId die Änderungsauftrags-ID ist, die dem zuvor übermittelten Änderungsauftrag zugeordnet ist (z. B. „801x00000000010“ aus Tabelle 8). Die Anfrage ist ein Standard-Plattformereignis mit einem Änderungsauftragsstatustext, der ein OrderId-Feld enthält, das die Änderungsauftrags-ID enthält, die mit dem zuvor übermittelten Änderungsauftrag verknüpft ist (z. B. „801x00000000010“ aus Tabelle 8), das OriginalOrderId-Feld einschließlich der Auftrags-ID des ursprüngliche Bestellung (zB "801x00000000001"), ein OldStatusCode-Feld und ein NewStatusCode-Feld. Das Feld OldStatusCode enthält den Wert „Draft“, da der Änderungsauftrag nicht permanent gemacht wurde, und das Feld NewStatusCode enthält den Wert „Activated“, um die Änderungen an dem Auftrag zu bestätigen. In einigen Ausführungsformen, wenn ein Benutzer beschließt, die Mengenreduzierungsänderung vor dem Absenden eines Änderungsauftrags abzubrechen, wird der EP 314 legt fest, ob der im „Entwurf“ erstellte Änderungsauftrag gelöscht werden soll.

                FEIGE. 8 zeigt eine GUI-Instanz 800 Zeigen einer aktualisierten Bestellzusammenfassung gemäß verschiedenen Ausführungsformen. GUI-Instanz 800 ist ein Auftrags-Dashboard, das verschiedene Felder enthält, die Informationen für verschiedene Aufträge anzeigen, und auch grafische Objekte enthält 802 zeigt an, dass der Artikel erfolgreich storniert wurde. Ein zusammenfassendes Panel 804 der geänderten Reihenfolge enthält ein grafisches Objekt 806 zeigt den geänderten Status der Bestellung an (z. B. „CANCELED“). Rendern der GUI-Instanz 800 kann dazu führen, dass Programmcode (z. B. ein Skript) ausgeführt wird, wodurch ein Order Activated-Ereignis stattfindet. Wenn das Ereignis Order Activated stattfindet, muss der in Tabelle 11 gezeigte API-Aufruf erfolgen.

                Im Beispiel von Tabelle 11 ist die Client-App 12ja und/oder App/Dienst 302 führt eine HTTP-GET-Methode mit dem aufgelisteten URI aus, wobei orderId die Bestell-ID der Bestellung ist, und enthält einen Parameter zum Einschließen der aktualisierten Änderungen an der Bestellung (z. B. „&viewType=IncludeChanges“). Darüber hinaus kann die Antwort auf die GET-Methode ein Datenelement zur Darstellung der Reihenfolge enthalten, das angeben kann, wie das Zusammenfassungsfeld 804 zu arrangieren und/oder zu erbringen ist.

                FIG. 9 – 12 zeigen beispielhafte GUI-Instanzen in verschiedenen Stadien des Anwendens eines Rabatts auf eine Bestellung nach der Erstellung gemäß verschiedenen Ausführungsformen. Unter Bezugnahme auf FIG. 9 , die eine GUI-Instanz zeigt 900 um einen Rabatt auszuwählen, der auf eine Bestellung angewendet werden soll. Die GUI-Instanz 900 zeigt GCEs an, die verschiedenen Rabatten entsprechen, die auf eine bestehende Bestellung angewendet werden können. In diesem Beispiel hat der Benutzer die GCE ausgewählt 902 entsprechend der Rabattoption „Bestellsumme“. Die GUI-Instanz 900 enthält auch ein grafisches Objekt 904 die eine Phase im Änderungsprozess der Position anzeigt. Nach Auswahl der anzuwendenden Rabattoption kann der Benutzer mit der nächsten Phase des Vorgangs zum Ändern der Position fortfahren, indem er die GCE auswählt 906 (z.B. die Schaltfläche „Weiter“).

                FEIGE. 10 zeigt eine GUI-Instanz 1000 zum Auswählen eines Bestellgesamtrabatts gemäß verschiedenen Ausführungsformen. GUI-Instanz 1000 enthält ein grafisches Objekt 1002 Angeben des aktuellen Gesamtbestellbetrags (z. B. "279,00 $" in Fig. 10). Die GUI-Instanz 1000 beinhaltet auch eine GCE 1004 (z. B. ein Textfeld), das es dem Benutzer ermöglicht, einen Rabattbetrag einzugeben, der auf die Bestellsumme angewendet werden soll, eine GCE 1005 (z. B. ein Textfeld), das es dem Benutzer ermöglicht, einen Rabattprozentsatz einzugeben, der auf die Bestellsumme angewendet werden soll, und ein grafisches Objekt 1007 Angabe des zu rabattierenden Betrags basierend auf dem eingegebenen Prozentsatz (z. B. „27,90 USD“ in Fig. 10 basierend auf dem Wert „10%“, der in das Textfeld eingegeben wurde). 1005). GUI-Instanz 1000 beinhaltet auch eine GCE 1008 die es dem Benutzer ermöglicht, einen Grund für den Rabatt auszuwählen oder anderweitig einzugeben. In diesem Beispiel ist die GCE 1008 ist eine Dropdown-Liste, die mit einer Liste vordefinierter Gründe für die Anwendung des Rabatts vorbelegt ist. In anderen Ausführungsformen können andere GCEs verwendet werden, beispielsweise kann ein Textfeld enthalten sein, um dem Benutzer zu ermöglichen, den Grund für den Gesamtrabatt der Bestellung einzugeben. Nach Auswahl des Rabattbetrags und des Grundes für den Gesamtrabatt der Bestellung kann der Benutzer mit der nächsten Stufe im Prozess des Gesamtrabatts der Bestellung fortfahren, indem er die GCE . auswählt 1006. Bei Auswahl des GCE 1006 (z. B. die Schaltfläche "Weiter" in Fig. 10), die Client-App 12ja und/oder App/Dienst 302 kann den in Tabelle 12 gezeigten API-Aufruf ausführen.

                Im Beispiel von Tabelle 12 ist die Client-App 12ja und/oder App/Dienst 302 führt eine HTTP POST-Methode mit dem aufgelisteten URI aus, wobei orderId die mit der Bestellung verknüpfte Bestell-ID ist. Tabelle 12 zeigt auch die Anfrage, die in einem Auszeichnungssprachenformat (z. B. JSON) gesendet werden soll. In diesem Beispiel werden alle Verteilungen in ein einzelnes OrderAdjustmentGroup-Objekt gruppiert (siehe z. B. Fig. 4). Die Anfrage enthält ein Verteilungsfeld mit einem OriginalOrderItem-Datenelement mit einer ID der ursprünglichen Bestellposition (z. B. „802x00000000001“), ein Betragsdatenelement mit einem Wert von –27,90, ein Steuerfeld/Datenelement mit einem Betragsdatenelement mit einen Wert von –2,25 und ein Typdatenelement, das einen Wert von „Geschätzt“ enthält, und ein Grunddatenelement/Feld, das einen Wert von „Kunde beschwert“ enthält. In einigen Ausführungsformen kann die Anfrage an den URI im POST angehängt werden (z. B. nach den „Aktionen/Anpassen“ in Tabelle 12). Tabelle 12 zeigt auch die Antwort, die der Client-App bereitgestellt wird 12ja und/oder App/Dienst 302 im Format einer Auszeichnungssprache (z. B. JSON). Die Antwort enthält ein ChangeOrderId-Feld mit einer Änderungsauftrags-ID (z. B. einen Wert von „801x00000000011“ in Tabelle 12).

                FEIGE. 11 zeigt eine GUI-Instanz 1100 um eine Zusammenfassung des Gesamtbestellrabatts gemäß verschiedenen Ausführungsformen in der Vorschau anzuzeigen. GUI-Instanz 1100 enthält ein grafisches Objekt mit einer Rabattzusammenfassung 1104 Angabe der über die GUI-Instanz ausgewählten Rabattparameter 1000 von FIG. 10. Die GUI-Instanz 1100 enthält auch ein grafisches Objekt 1105 zeigt den Gesamtrabattbetrag an. Die GUI-Instanz 1100 enthält auch ein grafisches Objekt mit einer Zusammenfassung des Gesamtbestellrabatts 1102 zeigt den Status des Auftrags mit den ausgewählten Änderungen an. Das grafische Objekt der Gesamtbestellrabattzusammenfassung 1102 zeigt die Gesamtbeträge aus dem ursprünglichen Auftrag, die Gesamtbeträge des Änderungsauftrags und die aggregierten Gesamtbeträge an. Rendern der GUI-Instanz 1100 (z. B. durch Auswahl der Schaltfläche Weiter 1006 in FIG. 10) kann bewirken, dass Programmcode (z. B. ein Skript) ausgeführt wird, was bewirken kann, dass der in Tabelle 13 gezeigte API-Aufruf durchgeführt wird.

                Im Beispiel von Tabelle 13 ist die Client-App 12ja und/oder App/Dienst 302 führt eine HTTP-GET-Methode mit dem aufgelisteten URI aus, wobei changeOrderId die Änderungsauftrags-ID ist, die nach dem Senden der Änderungen erhalten wurde (z. B. „801x00000000011“ aus Tabelle 12). Dadurch können weniger Parameter an das EP übergeben werden 314, die den Overhead von Rechen-/Netzwerkressourcen reduzieren kann. Die GET-Methode für ChangeOrderId gibt Header-Informationen für einen bestimmten Änderungsauftrag zurück (z. B. die Antwortnachricht in Tabelle 13). Tabelle 13 zeigt auch die Antwort, die der Client-App bereitgestellt wird 12ja und/oder App/Dienst 302 im Format der Auszeichnungssprache (z. B. JSON). Die Antwort enthält ein OriginalOrderId-Feld, das die Bestell-ID (z. B. „801x00000000001“) der Bestellung enthält, und verschiedene andere Felder, wie in Tabelle 13 gezeigt, die die geänderten Werte der geänderten Bestellung angeben. Nach der Vorschau der Zusammenfassung des Gesamtbestellrabatts 1102, kann der Benutzer die Änderungen bestätigen, indem er eine geeignete GCE auswählt (z. B. eine Schaltfläche zum Senden, die der GCE gleich oder ähnlich ist). 706 von FIG. 7). Bei Auswahl eines solchen GCE wird die Client-App 12ja und/oder App/Dienst 302 kann den in Tabelle 14 gezeigten API-Aufruf ausführen.

                Im Beispiel von Tabelle 14 ist die Client-App 12ja und/oder App/Dienst 302 führt eine HTTP-POST-Methode mit dem aufgelisteten URI aus, wobei changeOrderId die Änderungsauftrags-ID ist, die dem zuvor übermittelten Änderungsauftrag zugeordnet ist (z. B. „801x00000000011“ aus Tabelle 12). Die Anforderung ist ein Standardplattformereignis mit einem Änderungsauftragsstatustext, der ein OrderId-Feld enthält, das die Änderungsauftrags-ID enthält, die mit dem zuvor übermittelten Änderungsauftrag verknüpft ist (z. B. „801x00000000010“ aus Tabelle 8), das OriginalOrderId-Feld einschließlich der Auftrags-ID des ursprüngliche Bestellung (zB "801x00000000001"), ein OldStatusCode-Feld und ein NewStatusCode-Feld. Das Feld OldStatusCode enthält den Wert „Draft“, da der Änderungsauftrag nicht permanent gemacht wurde, und das Feld NewStatusCode enthält den Wert „Activated“, um die Änderungen an dem Auftrag zu bestätigen. Zusätzlich kann der „aktivierte“ Endpunkt (z. B. der OMS-Dienst 312 und/oder EP 314 von FIG. 3) kann einfach zurückkehren 200 für den Erfolg oder 400 wenn ein Speicherfehler auftritt. In verschiedenen Ausführungsformen ist die Aktivierung ein synchroner Prozess.

                Nach Übermittlung der Änderungen an die EP 314 über den OMS-Dienst 312, die GUI-Instanz 1200 von FIG. 12 gerendert und angezeigt werden. Bezugnehmend auf FIG. 12 , GUI-Instanz 1200 zeigt an, dass der ausgewählte Rabatt erfolgreich angewendet wurde. Rendern der GUI-Instanz 1200 kann dazu führen, dass Programmcode (z. B. ein Skript) ausgeführt wird, wodurch ein Order Activated-Ereignis stattfindet. Wenn das Ereignis Order Activated stattfindet, muss der in Tabelle 15 gezeigte API-Aufruf erfolgen.

                Im Beispiel von Tabelle 15 ist die Client-App 12ja und/oder App/Dienst 302 führt eine HTTP-GET-Methode mit dem aufgelisteten URI aus, wobei orderId die Bestell-ID der Bestellung ist, und enthält einen Parameter zum Einschließen der aktualisierten Änderungen an der Bestellung (z. B. „&viewType=IncludeChanges“). Außerdem kann die Antwort auf das GET-Verfahren ein Datenelement zur Darstellung der Reihenfolge enthalten.

                Unter Bezugnahme auf FIG. 13, die die GUI-Instanz anzeigt 900 zum Auswählen eines Rabatts, der auf eine Bestellung angewendet werden soll (siehe z. B. Fig. 9), wo der Benutzer die GCE ausgewählt hat 1302 entsprechend der Rabattoption „Einzelartikel“. Nach Auswahl der anzuwendenden Rabattoption kann der Benutzer mit der nächsten Stufe des Vorgangs zum Ändern der Position fortfahren, indem er die GCE . auswählt 906 (z. B. die Schaltfläche "Weiter" in Fig. 13).

                FEIGE. 14 zeigt eine GUI-Instanz 1400 zum Auswählen einzelner zu rabattierender Artikel gemäß verschiedenen Ausführungsformen. Wie in FIG. 14 , die GUI-Instanz 1400 enthält ein grafisches DBO-Objekt 1402, die grafisch ein Auftragsobjekt darstellt. Das grafische DBO-Objekt 1402 enthält mehrere Datensätze, von denen jeder einem Artikel im Auftragsobjekt entspricht. Das grafische DBO-Objekt 1402 beinhaltet auch GCE 1403, die jeweils einem Artikel in der Bestellung entsprechen. Die Felder im Auftragsobjekt umfassen ein Produktdetailfeld, ein Statusfeld, ein Mengenfeld, ein Einheitspreisfeld, ein Anpassungsfeld, ein Steuerfeld und ein Artikelsummenfeld. In diesem Beispiel hat der Benutzer die GCE ausgewählt 1403 entsprechend der „Men's Denali Jacket Large Art.-Nr.: 880004322“ und der GCE 1403 entsprechend dem „Men's Etip Facet Glove Large Item #: 890032201“ (wo die ausgewählten GCEs 1403 fügen Sie Häkchen und die entsprechenden Datensätze in das DBO-Grafikobjekt ein 1402 sind markiert). Nach Auswahl des/der zu rabattierenden Artikel(s) kann der Benutzer mit der nächsten Stufe des Reduktions-/Stornierungsprozesses fortfahren, indem er die GCE auswählt 1406 (z. B. die Schaltfläche "Weiter" in Fig. 14).

                FEIGE. 15 zeigt eine GUI-Instanz 1500 zum Auswählen von Rabatten für die ausgewählten Artikel gemäß verschiedenen Ausführungsformen. Die GUI-Instanz 1500 beinhaltet auch GCE 1504 entsprechend jedem über die GUI-Instanz ausgewählten Element 1400 von FIG. 14. Die GCE 1504 (z. B. Textfelder in Fig. 15 ) ermöglichen es dem Benutzer, einen Rabattbetrag einzugeben, der auf jeden Artikel angewendet werden soll. GUI-Instanz 1000 beinhaltet auch GCE 1508 die es dem Benutzer ermöglichen, einen Grund für den Rabatt für jeden Artikel auszuwählen oder anderweitig einzugeben. In diesem Beispiel sind die GCEs 1504 sind Textfelder und die GCEs 1508 sind Dropdown-Listen, die mit einer Liste vordefinierter Gründe für die Anwendung des Rabatts vorbelegt sind. In anderen Ausführungsformen können andere GCEs verwendet werden, zum Beispiel kann ein Textfeld enthalten sein, um es dem Benutzer zu ermöglichen, den Grund für den Gesamtrabatt der Bestellung einzugeben. Nachdem der Benutzer einen Rabatt für jeden Artikel und den Grund für den Rabatt für jeden Artikel ausgewählt hat, kann der Benutzer mit der nächsten Stufe des Bestellsummenrabattprozesses fortfahren, indem er die GCE auswählt 1506. Bei Auswahl des GCE 1006 (z. B. die Schaltfläche "Weiter" in Fig. 10), die Client-App 12ja und/oder App/Dienst 302 können entsprechende API-Aufrufe durchführen, wie in den Tabellen 16 und 17 gezeigt.

                Im Beispiel von Tabelle 16 ist die Client-App 12ja und/oder App/Dienst 302 führt eine HTTP-POST-Methode unter Verwendung der aufgelisteten URI aus, wobei orderId die mit der Bestellung verknüpfte Bestell-ID ist und orderItemId1 eine ID des ersten Artikels in der Bestellung ist (z. fünfzehn ). Tabelle 16 zeigt auch die Anfrage, die in einem Auszeichnungssprachenformat (z. B. JSON) gesendet werden soll. Die Anforderung umfasst ein Anpassungsfeld mit einem Betragsdatenelement mit einem Wert von –17,90, ein Steuerfeld/Datenelement mit einem Betragsdatenelement mit einem Wert von –1,44 und ein Typdatenelement mit einem Wert von „Geschätzt“ und a Grunddatenelement/-feld mit dem Wert „Kundenbeschwerde“. In einigen Ausführungsformen kann die Anfrage an den URI im POST angehängt werden (z. B. nach den „Aktionen/Anpassung“ in Tabelle 16). Tabelle 16 zeigt auch die Antwort, die der Client-App bereitgestellt wird 12ja und/oder App/Dienst 302 im Format einer Auszeichnungssprache (z. B. JSON). Die Antwort enthält ein ChangeOrderId-Feld mit einer Änderungsauftrags-ID (z. B. einen Wert von „801x00000000015“ in Tabelle 16).

                Im Beispiel von Tabelle 17 ist die Client-App 12ja und/oder App/Dienst 302 führt eine HTTP-POST-Methode unter Verwendung der aufgelisteten URI aus, wobei orderId die mit der Bestellung verknüpfte Bestell-ID ist und orderItemId2 eine ID des ersten Artikels in der Bestellung ist (z. B. der „Men's Etip Facet Glove Large Item #: 890032201“ in FIG . fünfzehn ). Tabelle 17 zeigt auch die Anfrage, die in einem Auszeichnungssprachenformat (z. B. JSON) gesendet werden soll. Die Anfrage enthält ein ChangeOrderId-Datenelement mit einer ID des Änderungsauftrags (z. B. "802x00000000015", die als Antwort auf die Anfrage von Tabelle 16 zurückgegeben wird) und dieselben Felder/Datenelemente wie die erste von Tabelle 16 gezeigte Anfrage (obwohl die Werte die in diesen Feldern/Datenelementen enthalten sind, können je nach den vom Benutzer eingegebenen Rabattbeträgen unterschiedlich sein). Die vom vorherigen Aufruf zurückgegebene ChangeOrderId wird in diese zweite Änderungsauftragsanforderung/-aufruf aufgenommen, damit sie an den bestehenden Änderungsauftrag angehängt werden kann. In einigen Ausführungsformen kann die Anfrage an den URI im POST angehängt werden (z. B. nach den „Aktionen/Anpassen“ in Tabelle 17). Tabelle 17 zeigt auch die Antwort, die der Client-App bereitgestellt wird 12ja und/oder App/Dienst 302 im Format einer Auszeichnungssprache (z. B. JSON). Die Antwort enthält ein ChangeOrderId-Feld mit derselben Änderungsauftrags-ID, die als Antwort auf die erste Anfrage/den ersten Aufruf zurückgegeben wurde (z. B. ein Wert von „801x00000000015“ in den Tabellen 9 und 10).

                In einigen Ausführungsformen kann ein zusammengesetzter Auftragsänderungs-API-Aufruf erfolgen, wobei mehrere Auftragsänderungs-API-Aufrufe zu einem einzigen Aufruf kombiniert werden. In diesen Ausführungsformen ist die EP 314 (siehe z. B. Fig. 3 ) können alle Änderungen zu einem einzigen Änderungsauftrag zusammenfassen. Ein Beispiel für eine solche zusammengesetzte Bestelländerungs-API ist in Tabelle 18 gezeigt. In Tabelle 18 kann das Snippet in der Anfrage gleich oder ähnlich dem Inhalt der in den Tabellen 9 und 10 gezeigten Anfrage sein.

                FEIGE. 16 zeigt eine GUI-Instanz 1600 um eine Zusammenfassung der Bestellartikelrabatte gemäß verschiedenen Ausführungsformen in der Vorschau anzuzeigen. GUI-Instanz 1600 enthält ein grafisches Objekt mit einer Rabattzusammenfassung 1604 Angabe der über die GUI-Instanz ausgewählten Rabattparameter 1500 von FIG. fünfzehn . Die GUI-Instanz 1600 enthält auch ein grafisches Objekt 1605 zeigt den Gesamtrabattbetrag an, der angewendet werden soll. Die GUI-Instanz 1600 enthält auch ein grafisches Objekt mit einer Zusammenfassung des Gesamtbestellrabatts 1602 zeigt den Status des Auftrags mit den ausgewählten Änderungen an. Das grafische Objekt der Gesamtbestellrabattzusammenfassung 1602 zeigt die Gesamtbeträge aus dem ursprünglichen Auftrag, die Gesamtbeträge des Änderungsauftrags und die aggregierten Gesamtbeträge an. Rendern der GUI-Instanz 1600 (z. B. durch Auswahl der Schaltfläche Weiter 1506 in FIG. 15) kann bewirken, dass Programmcode (z. B. ein Skript) ausgeführt wird, was bewirken kann, dass der in Tabelle 19 gezeigte API-Aufruf durchgeführt wird.

                Im Beispiel von Tabelle 19 ist die Client-App 12ja und/oder App/Dienst 302 führt eine HTTP-GET-Methode mit dem aufgelisteten URI aus, wobei changeOrderId die Änderungsauftrags-ID ist, die nach dem Senden der Änderungen erhalten wurde (z. B. „801x00000000011“ aus Tabelle 18). Dadurch können weniger Parameter an das EP übergeben werden 314, die den Overhead von Rechen-/Netzwerkressourcen reduzieren kann. Die GET-Methode für ChangeOrderId gibt Header-Informationen für einen bestimmten Änderungsauftrag zurück (z. B. die Antwortnachricht in Tabelle 19). Tabelle 19 zeigt auch die Antwort, die der Client-App bereitgestellt wird 12ja und/oder App/Dienst 302 im Format der Auszeichnungssprache (z. B. JSON). Die Antwort enthält ein OriginalOrderId-Feld, das die Bestell-ID (z. B. "801x00000000001") der Bestellung enthält, und verschiedene andere Felder, wie in Tabelle 19 gezeigt, die die geänderten Werte der geänderten Bestellung angeben. Nach der Vorschau der Zusammenfassung des Gesamtbestellrabatts 1102, kann der Benutzer die Änderungen bestätigen, indem er eine geeignete GCE auswählt (z. B. eine Schaltfläche zum Senden, die der GCE gleich oder ähnlich ist). 706 von FIG. 7). Bei Auswahl eines solchen GCE wird die Client-App 12ja und/oder App/Dienst 302 kann den in Tabelle 7 gezeigten API-Aufruf durchführen, wobei das Feld/Datenelement OrderId die gegenwärtige Änderungsauftrags-ID enthält, die mit dem zuvor übermittelten Änderungsauftrag verknüpft ist (z. B. „801x00000000015“). Nach Übermittlung der Änderungen an die EP 314 über den OMS-Dienst 312, die GUI-Instanz 1200 von FIG. 12 gerendert und angezeigt werden, und der in Tabelle 8 gezeigte API-Aufruf kann ebenfalls durchgeführt werden.

                Unter Bezugnahme auf FIG. 17 , die die GUI-Instanz anzeigt 900 zum Auswählen eines Rabatts, der auf eine Bestellung angewendet werden soll (siehe z. B. Fig. 9), wo der Benutzer die GCE ausgewählt hat 1702 entsprechend der Rabattoption „Versandsumme“. Nach Auswahl der anzuwendenden Rabattoption kann der Benutzer mit der nächsten Stufe des Vorgangs zum Ändern der Position fortfahren, indem er die GCE . auswählt 906 (z. B. die Schaltfläche "Weiter" in Fig. 17).

                FEIGE. 18 zeigt eine GUI-Instanz 1800 zum Auswählen einzelner zu rabattierender Artikel gemäß verschiedenen Ausführungsformen. GUI-Instanz 1800 enthält verschiedene GCEs, die es dem Benutzer ermöglichen, einen Gesamtrabatt für den Versand einschließlich eines grafischen Objekts auszuwählen 1004 um den gesamten/Gesamtversandbetrag auszuwählen, der rabattiert werden soll, ein GCE 1805 (z. B. ein Textfeld), das es dem Benutzer ermöglicht, einen Rabattbetrag einzugeben, der auf den Versandbetrag angewendet werden soll, und eine GCE 1807 (z. B. ein Textfeld), das es dem Benutzer ermöglicht, einen Rabattprozentsatz einzugeben, der auf den Versandbetrag angewendet werden soll. GUI-Instanz 1800 beinhaltet auch eine GCE 1808 die es dem Benutzer ermöglicht, einen Grund für den Versandbetragsrabatt auszuwählen oder anderweitig einzugeben. In diesem Beispiel ist die GCE 1808 ist eine Dropdown-Liste, die mit einer Liste vordefinierter Gründe für die Anwendung des Rabatts vorbelegt ist. In anderen Ausführungsformen können andere GCEs verwendet werden, beispielsweise kann ein Textfeld enthalten sein, um dem Benutzer zu ermöglichen, den Grund für den Gesamtrabatt der Bestellung einzugeben. Nach Auswahl des Rabattbetrags und des Grundes für den Gesamtrabatt der Bestellung kann der Benutzer mit der nächsten Stufe im Prozess des Gesamtrabatts der Bestellung fortfahren, indem er die GCE . auswählt 1006. Bei Auswahl des GCE 1806 (z. B. die Schaltfläche "Weiter" in Fig. 18), die Client-App 12ja und/oder App/Dienst 302 kann den in Tabelle 20 gezeigten API-Aufruf durchführen.

                Im Beispiel von Tabelle 20 ist die Client-App 12ja und/oder App/Dienst 302 führt eine HTTP POST-Methode mit dem aufgelisteten URI aus, wobei orderId die der Bestellung zugeordnete Bestell-ID und orderItemId die ID des Bestellartikels ist, auf den der Rabatt angewendet werden soll. Tabelle 20 zeigt auch die Anfrage, die in einem Auszeichnungssprachenformat (z. B. JSON) gesendet werden soll. Die Anfrage enthält ein Anpassungsfeld mit einem Betragsdatenelement mit einem Wert von –5,00 und ein Grunddatenelement/-feld mit einem Wert von „Kundenbeschwerde“. In einigen Ausführungsformen kann die Anfrage an den URI im POST angehängt werden. Tabelle 20 zeigt auch die Antwort, die der Client-App bereitgestellt wird 12ja und/oder App/Dienst 302 im Format einer Auszeichnungssprache (z. B. JSON). Die Antwort enthält ein ChangeOrderId-Feld mit einer Änderungsauftrags-ID (z. B. einen Wert von „801x00000000020“ in Tabelle 20).

                FEIGE. 19 zeigt eine GUI-Instanz 1900 um eine Zusammenfassung der Bestellartikelrabatte gemäß verschiedenen Ausführungsformen in der Vorschau anzuzeigen. GUI-Instanz 1900 enthält ein grafisches Objekt mit einer Rabattzusammenfassung 1904 Angabe der über die GUI-Instanz ausgewählten Rabattparameter 1800 von FIG. 18. Die GUI-Instanz 1900 enthält auch ein grafisches Objekt 1905 zeigt den anzuwendenden Gesamtrabattbetrag (z. B. "5,00 $" in Fig. 19). Die GUI-Instanz 1900 enthält auch ein grafisches Objekt mit einer Zusammenfassung des Gesamtbestellrabatts 1902 zeigt den Status des Auftrags mit den ausgewählten Änderungen an. Das grafische Objekt der Gesamtbestellrabattzusammenfassung 1902 zeigt die Gesamtbeträge aus dem ursprünglichen Auftrag, die Gesamtbeträge des Änderungsauftrags und die aggregierten Gesamtbeträge an. Rendern der GUI-Instanz 1900 (z. B. durch Auswahl der Schaltfläche Weiter 1806 in FIG. 18) kann bewirken, dass Programmcode (z. B. ein Skript) ausgeführt wird, was bewirken kann, dass der in Tabelle 21 gezeigte API-Aufruf durchgeführt wird.

                Im Beispiel von Tabelle 21 ist die Client-App 12ja und/oder App/Dienst 302 führt ein HTTP aus

                GET-Methode mit dem aufgelisteten URI, wobei changeOrderId die Änderungsauftrags-ID ist, die nach dem Senden der Änderungen erhalten wurde (z. B. „801x00000000020“ aus Tabelle 20). Die GET-Methode für ChangeOrderId gibt Header-Informationen für einen bestimmten Änderungsauftrag zurück (z. B. die Antwortnachricht in Tabelle 21). Tabelle 21 zeigt auch die Antwort, die der Client-App bereitgestellt wird 12ja und/oder App/Dienst 302 im Format der Auszeichnungssprache (z. B. JSON). Die Antwort enthält ein OriginalOrderId-Feld, das die Bestell-ID (z. B. "801x00000000001") der Bestellung enthält, und verschiedene andere Felder, wie in Tabelle 21 gezeigt, die die geänderten Werte der geänderten Bestellung angeben. Nach der Vorschau der Zusammenfassung des Gesamtbestellrabatts 1102, kann der Benutzer die Änderungen bestätigen, indem er eine geeignete GCE auswählt (z. B. eine Schaltfläche zum Senden, die der GCE gleich oder ähnlich ist). 706 von FIG. 7). Bei Auswahl eines solchen GCE wird die Client-App 12ja und/oder App/Dienst 302 kann den in Tabelle 7 gezeigten API-Aufruf tätigen, wobei das Feld/Datenelement OrderId die aktuelle Änderungsauftrags-ID enthält, die mit dem zuvor übermittelten Änderungsauftrag verknüpft ist (z. B. "801x00000000020"). Nach Übermittlung der Änderungen an die EP 314 über den OMS-Dienst 312, die GUI-Instanz 1200 von FIG. 12 gerendert und angezeigt werden, und der in Tabelle 8 gezeigte API-Aufruf kann ebenfalls durchgeführt werden.

                In jeder der oben genannten Ausführungsformen könnten mehrere Aktionen zu einem einzigen Änderungsauftrag kombiniert werden. Beispielsweise kann ein Stornierungsänderungsauftrag mit einem Rabattänderungsauftrag kombiniert werden.

                In jeder der oben genannten Ausführungsformen kann ein Autorisierungsprotokoll verwendet werden, um Benutzern und/oder Apps zu erlauben 12ja um sicher auf Daten zuzugreifen, ohne ihre Zugangsdaten preiszugeben (z. B. Benutzername und Passwort, digitale Signaturen, digitale Zertifikate usw.). Bevor die Auftrags-API-Aufrufe ausgeführt werden, muss die Client-App 12ja, Apps/Dienste 302, und/oder der OMS-Dienst 312 (siehe z. B. Fig. 3) authentifizieren des Benutzers, Client-App 12ja und/oder App/Dienst 302 über das Autorisierungsprotokoll. Beispiele solcher Autorisierungsprotokolle können OAuth, Security Assertion Markup Language (SAML), OpenID, eXtensible Access Control Markup Language (XACML) und/oder dergleichen umfassen. In einem Beispiel, in dem OAuth 2.0 als Autorisierungsprotokoll verwendet wird, ist die Client-App 12ja und/oder App/Dienst 302 werden über einen von mehreren verschiedenen OAuth 2.0-Authentifizierungsabläufen authentifiziert. Ein OAuth-Authentifizierungsablauf definiert eine Reihe von Schritten, die verwendet werden, um den Authentifizierungsprozess zwischen der Client-App zu koordinieren 12ja und/oder App/Dienst 302 und das OMS 350. Zu den unterstützten OAuth-Flows gehören: Webserver-Flows (bei denen der Server das Consumer-Secret sicher schützen kann) User-Agent-Flows (von Anwendungen verwendet, die das Consumer-Secret nicht sicher speichern können) und Benutzername-Passwort-Flows (bei denen die Anwendung direkten Zugriff auf die Benutzeranmeldeinformationen hat ). Authentifizierungsanforderungen werden an bestimmte Endpunkte gesendet, bei denen es sich um URLs handelt, die verwendet werden, um Authentifizierungsanforderungen zu stellen. Nach erfolgreicher Authentifizierung der App/des Benutzers mit dem OMS 350, die Client-App 12ja und/oder App/Dienst 302 erhält ein Zugriffstoken, das verwendet werden kann, um die Order-API-Aufrufe durchzuführen. Die zuvor beschriebenen Anforderungen werden an dieselben oder unterschiedliche Endpunkte gesendet, die die Funktionalität, die die Nutzlast der Anforderungen bereitstellt, eindeutig identifizieren.

                In jeder der oben genannten Ausführungsformen ist die EP 314 kann die in den zuvor erörterten Anforderungsnachrichten bereitgestellten Werte speichern, den angepassten/geänderten Zustand des Auftragsobjekts (z. B. den Auftragsobjektstatus mit den berechneten Änderungen, die auf das Auftragsobjekt angewendet wurden) in Verbindung mit der Änderungsauftrags-ID (siehe z Anforderungsparameter in den Tabellen 8, 12, 16-18 und 20 oben). In diesen Ausführungsformen ist die EP 314 kann die Änderungen an den zugrunde liegenden Auftragsdaten festschreiben (z. B. durch Schreiben der Änderungen in das System 16) als Reaktion auf den Empfang einer Festschreibungs-/Aktivierungsanforderung (siehe z. B. Tabellen 10 und 14 oben). In diesen Ausführungsformen ist die EP 314 kann einen geeigneten temporären Speichermechanismus verwenden, um die Werte zu speichern, einschließlich beispielsweise Puffern, Web-Caching-System(en), einem Remote Direct Memory Access (RDMA)-System, Memcached/MemcacheDB und/oder dergleichen. In diesen Ausführungsformen ist die Client-App 12ja und/oder App/Dienst 302 kann die Änderungsauftrags-ID übermitteln, um die Änderungen zu bestätigen, ohne alle Änderungsparameter an das System übergeben zu müssen 16 (siehe z. B. Tabellen 2, 6, 12 und 14 oben). In einigen Ausführungsformen können, wenn der Benutzer neue Werte in einer anderen Anforderung übermittelt, die gespeicherten Werte durch die neuen Werte ersetzt werden und eine neue Änderungsauftrags-ID kann bestimmt und der Client-App bereitgestellt werden 12ja und/oder App/Dienst 302. Die EP 314 kann die Änderungsauftrags-ID für eine Anfrage unter Verwendung eines Zufallszahlengenerators, einer Hash-Funktion zum Berechnen eines Hashs der übermittelten Werte und/oder anderer relevanter Werte (z. B. Benutzer- oder Organisations-ID oder dergleichen) und/oder unter Verwendung beliebiger anderen geeigneten Mechanismus. Außerdem wird die Änderungsauftrags-ID in der Antwort zurückgegeben, um den erfolgreichen Abschluss der Transaktion anzuzeigen (z. B. Speicherung der Anforderungsparameter und Berechnung der angeforderten Auftragsänderungen). Zusätzlich oder alternativ könnte ein geeigneter HTTP-Statuscode zurückgegeben werden, um den Erfolg anzuzeigen (z. B. 200 ("OK"), 202 ("Akzeptiert"), 205 („Inhalt zurücksetzen“), einen benutzerdefinierten Statuscode und/oder dergleichen). Andernfalls kann eine Fehlermeldung oder ein Statuscode (z. B. 4XY-Statuscode, wobei X und Y Zahlen sind) zurückgegeben werden, um eine erfolglose Transaktion anzuzeigen.

                FIG. 20-21 veranschaulichen Prozesse 2000 und 2100jeweils zum Praktizieren von Aspekten der hierin erörterten Ausführungsformen. Zur Veranschaulichung werden die Abläufe von Prozessen 2000 und 2100 wird so beschrieben, dass sie von Elementen/Komponenten ausgeführt wird, die mit Bezug auf die 1 und 2 gezeigt und beschrieben wurden. 1A-17 . Andere Computergeräte können jedoch Prozesse ausführen 2000-2100 in einer Vielzahl von Implementierungen, Anordnungen und/oder Umgebungen. In Ausführungsformen umfasst/enthalten das/die Computersystem(e) in einem Speichersystem gespeicherten Programmcode, der, wenn er von einem Prozessorsystem ausgeführt wird, für das/die Computersystem(e) konfigurierbar ist/sind, um die verschiedenen Operationen von Prozessen auszuführen 2000 und 2100. Während in den Fign. In den 20 und 21 können diese Operationen in verschiedenen Ausführungsformen neu geordnet, in zusätzliche Operationen unterteilt, kombiniert oder ganz weggelassen werden.

                Unter Bezugnahme auf FIG. 20 , das einen Auftragsverwaltungsprozess zeigt 2000 durchgeführt von einer E-Commerce-Plattform (EP) 314 (siehe z. B. Fig. 3 ). Verfahren 2000 beginnt im Betrieb 2005 wo die EP 314 erhält eine Anfrage über eine Bestell-API 32. In Ausführungsformen dient die Anforderung zum Abrufen eines aktuellen Zustands eines Bestellobjekts mit einer oder mehreren Änderungen des aktuellen Zustands des Bestellobjekts. Insbesondere kann die Anfrage (oder die Nutzlast oder der Hauptteil der Anfragenachricht) eine Bestell-ID und/oder eine Bestellartikel-ID mit Parametern/Datenelementen für jede der einen oder mehreren an dem Bestellobjekt vorzunehmenden Änderungen angeben. Als Reaktion auf den Eingang der Anfrage, im Betrieb 2010 die EP 314 ermittelt den aktuellen Zustand des Auftragsobjekts. In Ausführungsformen ist die EP 314 kann einen Mieterraum abfragen 112 für Auftragsobjekte in einer Mieter-DB 22 (siehe z. B. Fig. 1B). Im Betrieb 2015, die EP 314 wendet die eine oder mehrere Änderungen auf den aktuellen Zustand des Auftragsobjekts an, ohne die gespeicherten Daten des Auftragsobjekts zu ändern, und bei Betrieb 2020, die EP 314 bestimmt einen geänderten Zustand des Auftragsobjekts basierend auf der Anwendung der einen oder mehreren Änderungen des aktuellen Zustands des Auftragsobjekts. Im Betrieb 2025, die EP 314 sendet eine Antwort an die anfragende Entität (z. B. eine App/einen Dienst 302 betrieben von einem CP 50, eine Client-Anwendung 12ja von einem Benutzersystem betrieben 12, oder dergleichen). In Ausführungsformen zeigt die Antwort den geänderten Zustand des Auftragsobjekts an. Im Betrieb 2030 Prozess 2000 endet oder wiederholt sich nach Bedarf.

                Unter Bezugnahme auf FIG. 21 , die einen Auftragsverwaltungsprozess zeigt 2000 erfolgt durch eine CP-App, die von verschiedenen Hardware-Elementen eines CP bedient werden kann 50 und/oder verschiedene Hardwareelemente eines Benutzersystems 12. Verfahren 2100 beginnt im Betrieb 2105 wobei die CP-App ein zu änderndes Auftragsobjekt auswählt. In einigen Ausführungsformen ist der Betrieb 2105 beinhaltet das Rendern/Anzeigen einer ersten Instanz einer GUI, die eine GCE enthält, wobei die GCE zur Modifikation eines existierenden Auftragsobjekts dient, das von einem entfernten Datenbanksystem gespeichert wird. Im Betrieb 2110, wählt die CP-App Änderungen am Auftragsobjekt aus. In einigen Ausführungsformen ist der Betrieb 2110 umfasst das Erfassen einer Eingabe an die GCE in der ersten Instanz der GUI, wobei die Eingabe eine oder mehrere ausgewählte Änderungen an dem Auftragsobjekt umfasst.

                Im Betrieb 2115, sendet die CP-App eine Anfrage für das Auftragsobjekt mit den ausgewählten Änderungen. In einigen Ausführungsformen ist der Betrieb 2115 beinhaltet den Aufruf einer Bestell-API 32 um die Anfrage an die E-Commerce-Plattform zu senden 314 über den OMS-Dienst 312. In diesen Ausführungsformen betrifft die Anforderung einen aktuellen Zustand des Auftragsobjekts mit der einen oder mehreren ausgewählten Änderungen des aktuellen Zustands des Auftragsobjekts. Im Betrieb 2120, erhält die CP-App das Auftragsobjekt mit den ausgewählten Änderungen übernommen. In einigen Ausführungsformen ist der Betrieb 2120 beinhaltet das Rendern/Anzeigen einer zweiten Instanz der GUI einschließlich eines grafischen Objekts, das den geänderten Zustand des Auftragsobjekts anzeigt.

                Im Betrieb 2125, bestimmt die CP-App, ob die ausgewählten Änderungen festgeschrieben oder aktiviert werden sollen. In einigen Ausführungsformen ist der Betrieb 2125 umfasst das Erfassen einer Eingabe an eine GCE in der zweiten Instanz der GUI, wobei die Eingabe eine Anweisung umfasst, die ausgewählten Änderungen an dem Auftragsobjekt festzuschreiben oder zu aktivieren. Wenn im Betrieb 2125, die CP-App bestimmt, dass die Änderungen nicht festgeschrieben werden sollen, dann geht die CP-App wieder in Betrieb 2110 um andere oder neue Änderungen am Auftragsobjekt auszuwählen. Wenn im Betrieb 2125, die CP-App bestimmt, dass die Änderungen festgeschrieben werden sollen, dann fährt die CP-App mit dem Betrieb fort 2130 um eine Anfrage zu senden, um die Änderungen am Auftragsobjekt zu bestätigen. Im Betrieb 2135 Prozess 2000 endet oder wiederholt sich nach Bedarf.

                Die spezifischen Details der spezifischen Aspekte der hierin offenbarten Implementierungen können auf jede geeignete Weise kombiniert werden, ohne vom Geist und Umfang der offenbarten Implementierungen abzuweichen. Andere Implementierungen können jedoch auf spezifische Implementierungen bezogen auf jeden einzelnen Aspekt oder spezifische Kombinationen dieser einzelnen Aspekte gerichtet sein. Während die offenbarten Beispiele hierin häufig unter Bezugnahme auf eine Implementierung beschrieben werden, in der eine On-Demand-Datenbankdienstumgebung in einem System mit einem Anwendungsserver implementiert ist, der ein Front-End für einen On-Demand-Datenbankdienst bereitstellt, der mehrere Mandanten unterstützen kann, die vorliegenden Implementierungen sind nicht auf mandantenfähige Datenbanken oder die Bereitstellung auf Anwendungsservern beschränkt. Implementierungen können unter Verwendung anderer Datenbankarchitekturen praktiziert werden, beispielsweise ORACLE®, DB2® von IBM® und dergleichen, ohne vom Umfang der beanspruchten Implementierungen abzuweichen.

                Es versteht sich auch, dass einige der offenbarten Implementierungen in Form verschiedener Arten von Hardware, Software, Firmware, Middleware oder Kombinationen davon, einschließlich in Form von Steuerlogik, und unter Verwendung solcher Hardware oder Software in einer modularen Form ausgeführt werden können oder integrierte Weise. Andere Wege oder Verfahren sind unter Verwendung von Hardware und einer Kombination von Hardware und Software möglich. Darüber hinaus kann jede der in dieser Anmeldung beschriebenen Softwarekomponenten oder -funktionen als Softwarecode implementiert werden, der von einem oder mehreren Prozessoren unter Verwendung einer geeigneten Computersprache wie beispielsweise Python, PyTorch, NumPy, Ruby, Ruby on Rails ausgeführt werden soll. Scala, Smalltalk, Java™, C++, C#, „C“, Rust, Go (oder „Golang“), JavaScript, Server-Side JavaScript (SSJS), PHP, Pearl, Lua, Torch/Lua mit Just-In-Time Compiler (LuaJIT), Accelerated Mobile Pages Script (AMPscript), VBScript, JavaServer Pages (JSP), Active Server Pages (ASP), Node.js, ASP.NET, JAMscript, Hypertext Markup Language (HTML), Extensible Markup Language (XML .) ), RESTful API Modeling Language (RAML), Wiki-Markup oder Wikitext, Wireless Markup Language (WML), Java Script Object Notion (JSON), Apache® MessagePack™ Cascading Stylesheets (CSS), erweiterbare Stylesheet-Sprache (XSL), Moustache-Vorlagensprache , Handlebars Template Language, Guide Template Language (GTL), Apache® Thrift, Abstract Syntax Notation One (ASN.1 ), Google® Protocol Buffers (protobuf), Salesforce® Apex®, Salesforce® Visualforce®, Salesforce® Lightning®, Salesforce® Wave™ Dashboard Designer, Salesforce® Force.com® IDE, Android® Studio™ integrierte Entwicklungsumgebung (IDE) , Apple® iOS® Software Development Kit (SDK) und/oder andere Programmiersprachen oder Entwicklungstools, einschließlich proprietärer Programmiersprachen und/oder Entwicklungstools. Darüber hinaus können einige oder alle der hierin beschriebenen Softwarekomponenten oder -funktionen eine geeignete Abfragesprache verwenden, um Informationen in einer oder mehreren Datenbanken oder Datenstrukturen abzufragen und zu speichern, wie zum Beispiel Structure Query Language (SQL), Objektabfragesprache ( OQL), Salesforce® OQL (SOQL), Salesforce® Object Search Language (SOSL), Salesforce® Analytics Query Language (SAQL) und/oder andere Abfragesprachen. Der Softwarecode kann als computer- oder prozessorausführbare Anweisungen oder Befehle auf einem physischen, nicht flüchtigen computerlesbaren Medium gespeichert werden. Beispiele geeigneter Medien umfassen Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), magnetische Medien wie eine Festplatte oder eine Diskette oder ein optisches Medium wie eine Compact Disk (CD) oder DVD (Digital Versatile Disk). ), Flash-Speicher und dergleichen, oder eine beliebige Kombination solcher Speicher- oder Übertragungsvorrichtungen.

                Computerlesbare Medien, die mit dem Software-/Programmcode codiert sind, können mit einem kompatiblen Gerät verpackt oder getrennt von anderen Geräten bereitgestellt werden (z. B. per Internet-Download). Jedes solche computerlesbare Medium kann sich auf oder innerhalb eines einzelnen Computergeräts oder eines gesamten Computersystems befinden und kann sich unter anderen computerlesbaren Medien innerhalb eines Systems oder Netzwerks befinden. Ein Computersystem oder eine andere Rechenvorrichtung umfasst einen Monitor, Drucker oder eine andere geeignete Anzeige, um einem Benutzer eines der hierin erwähnten Ergebnisse bereitzustellen.

                Obwohl hierin einige Implementierungen beschrieben wurden, versteht es sich, dass sie nur beispielhaft und nicht einschränkend dargestellt wurden. Somit sollten die Breite und der Umfang der vorliegenden Anmeldung nicht durch irgendeine der hierin beschriebenen Implementierungen beschränkt sein, sondern sollten nur in Übereinstimmung mit den folgenden und später eingereichten Ansprüchen und deren Äquivalenten definiert werden.


                Schau das Video: Error 601 internal battery 601 may need replacement