-
HINTERGRUND
-
Die vorliegende Erfindung betrifft allgemein das Gebiet der Verwaltung von Inhalten und konkret das Verwalten von entfernten Inhalten mit einem auf Abonnement/Benachrichtigung beruhenden Dienst für Inhaltsänderungen.
-
Die Weiterentwicklung der Computertechnologie hat dazu geführt, dass Personen viele verschiedene Datenverarbeitungseinheiten haben. Zum Beispiel kann eine Person einen Arbeitscomputer, einen Heimcomputer und eine oder mehrere mobile Einheiten wie zum Beispiel Smartphones und Tablets haben. Zeitgleich mit der Zunahme an Datenverarbeitungseinheiten wächst die Datenmenge, auf die durch die Datenverarbeitungseinheiten und Server in einer Cloud-Umgebung zum Speichern der Daten zugegriffen wird.
-
Wenn sich diese Personen auf ihren täglichen Reisen von zu Hause zur Arbeit und wieder zurück nach Hause bewegen, greifen sie auf ihre Daten von den vielen Datenverarbeitungseinheiten zu, die ihnen zur Verfügung stehen. Die Synchronisation des Zugriffs und der Speicherung ihrer Daten ist komplex geworden, da man nicht weiß, wann sich die Daten ändern und welches Gerät die aktuellste Version der Daten aufweist.
-
KURZDARSTELLUNG
-
Gemäß einer Ausführungsform der vorliegenden Erfindung ein Verfahren zum Bereitstellen einer Benachrichtigung über eine Änderung in einem gespeicherten Objekt, das Verfahren aufweisend: Laden, durch eine Änderungsüberwachungseinheit, einer Abonnementliste, die einem oder mehreren gespeicherten Objekten zugehörig ist, die von der Änderungsüberwachungseinheit überwacht werden; Erkennen, durch die Änderungsüberwachungseinheit, einer Änderung in mindestens einem des einen oder der mehreren gespeicherten Objekte; und als Reaktion auf das Erkennen der Änderung, Senden, durch die Änderungsüberwachungseinheit, einer geänderte Objekte kennzeichnenden Änderungsbenachrichtigung an einen Abonnenten, welcher der Abonnementliste zugehörig ist.
-
Gemäß einer anderen Ausführungsform der vorliegenden Erfindung ein Verfahren zum Benachrichtigen über Änderungen an gespeicherten Objekten, das Verfahren aufweisend: Laden, durch eine Änderungsüberwachungseinheit, einer ersten Abonnementliste, die einem oder mehreren in einem entfernten Inhaltsrepository gespeicherten Objekten zugehörig ist; Abrufen, durch die Änderungsüberwachungseinheit, eines oder mehrerer Änderungsprotokolle, die eine oder mehrere Änderungen aufweisen, die dem entfernten Inhaltsrepository zugehörig sind; Abrufen, durch die Änderungsüberwachungseinheit, einer zweiten Abonnementliste, die dem einen oder den mehreren in dem entfernten Inhaltsrepository gespeicherten Objekten zugehörig ist; Aktualisieren, durch die Änderungsüberwachungseinheit, der ersten Abonnementliste beruhend auf einer Unterschiedlichkeit von Objektidentitäten, die der ersten Abonnementliste zugehörig sind, und Objektidentitäten, die der zweiten Abonnementliste zugehörig sind; Ermitteln, durch die Änderungsüberwachungseinheit, ob mindestens eine der einen oder mehreren Änderungen, die dem einen oder den mehreren Änderungsprotokollen zugehörig sind, Objekte betreffen, die in der ersten Abonnementliste gekennzeichnet sind; als Reaktion auf das Ermitteln, dass mindestens eine der einen oder mehreren Änderungen Objekte betreffen, die in der ersten Abonnementliste gekennzeichnet sind, Senden, durch die Änderungsüberwachungseinheit, einer oder mehrerer Änderungsbenachrichtigungen, die eine oder mehrere geänderte Objekte kennzeichnen, an den Abonnenten; Empfangen, durch die Änderungsüberwachungseinheit, jeweils einer oder mehrerer Antworten auf die eine oder mehreren Änderungsbenachrichtigungen, wobei die eine oder mehreren Antworten einen Statuscode aufweisen; und Aktualisieren, durch die Änderungsüberwachungseinheit, der ersten Abonnementliste beruhend auf dem Statuscode.
-
Gemäß einer anderen Ausführungsform der vorliegenden Erfindung ein Verfahren zum Bereitstellen einer Benachrichtigung über eine Änderung in einem gespeicherten Objekt, das Verfahren aufweisend: Laden, durch eine Änderungsüberwachungseinheit, einer Abonnementliste, die einem oder mehreren gespeicherten Objekten zugehörig ist, die von der Änderungsüberwachungseinheit überwacht werden; Erkennen, durch die Änderungsüberwachungseinheit, einer Änderung in mindestens einem des einen oder der mehreren gespeicherten Objekte; als Reaktion auf das Erkennen der Änderung, Senden, durch die Änderungsüberwachungseinheit, einer geänderte Objekte kennzeichnenden Änderungsbenachrichtigung an einen Abonnenten, welcher der Abonnementliste zugehörig ist; und Aktualisieren, durch die Änderungsüberwachungseinheit, der Abonnementliste beruhend auf mindestens einem Vergleich jeweils einer oder mehrerer Objektidentitäten und eines oder mehrerer Statuscodes aus einer oder mehreren Antworten auf die Änderungsbenachrichtigung, und Speichern einer aktualisierten Abonnementliste in einem lokalen Cachespeicher.
-
Gemäß einer anderen Ausführungsform der vorliegenden Erfindung ein Computerprogrammprodukt zum Benachrichtigen über Änderungen an gespeicherten Objekten, das Computerprogrammprodukt aufweisend: ein oder mehrere durch einen Computer lesbare Speichermedien und auf dem einen oder den mehreren durch einen Computer lesbaren Speichermedien gespeicherte Programmanweisungen, die Programmanweisungen aufweisend: Programmanweisungen, die durch eine Änderungsüberwachungseinheit ausgeführt werden, zum Laden einer ersten Abonnementliste, die einem oder mehreren in einem entfernten Inhaltsrepository gespeicherten Objekten zugehörig ist; Programmanweisungen, die durch die Änderungsüberwachungseinheit ausgeführt werden, zum Abrufen eines oder mehrerer Änderungsprotokolle, die eine oder mehrere Änderungen aufweisen, die dem entfernten Inhaltsrepository zugehörig sind; Programmanweisungen, die durch die Änderungsüberwachungseinheit ausgeführt werden, zum Abrufen einer zweiten Abonnementliste, die dem einen oder den mehreren in dem entfernten Inhaltsrepository gespeicherten Objekten zugehörig ist; Programmanweisungen, die durch die Änderungsüberwachungseinheit ausgeführt werden, zum Aktualisieren der ersten Abonnementliste beruhend auf einer Unterschiedlichkeit von Objektidentitäten, die der ersten Abonnementliste zugehörig sind, und Objektidentitäten, die der zweiten Abonnementliste zugehörig sind; Programmanweisungen, die durch die Änderungsüberwachungseinheit ausgeführt werden, zum Ermitteln, ob mindestens eine der einen oder mehreren Änderungen, die dem einen oder den mehreren Änderungsprotokollen zugehörig sind, Objekte betreffen, die in der ersten Abonnementliste gekennzeichnet sind; als Reaktion auf das Ermitteln, dass mindestens einer der einen oder mehreren Änderungen Objekte betreffen, die in der ersten Abonnementliste gekennzeichnet sind, Programmanweisungen, die durch die Änderungsüberwachungseinheit ausgeführt werden, zum Senden einer oder mehrerer Änderungsbenachrichtigungen, die eine oder mehrere geänderte Objekte kennzeichnen, an den Abonnenten; Programmanweisungen, die durch die Änderungsüberwachungseinheit ausgeführt werden, zum Empfangen jeweils einer oder mehrerer Antworten auf die eine oder mehreren Änderungsbenachrichtigungen, wobei die eine oder mehreren Antworten einen Statuscode aufweisen; und Programmanweisungen, die durch die Änderungsüberwachungseinheit ausgeführt werden, zum Aktualisieren der ersten Abonnementliste beruhend auf dem Statuscode.
-
Gemäß einer anderen Ausführungsform der vorliegenden Erfindung ein Computersystem zum Benachrichtigen über Änderungen an gespeicherten Objekten, das Computersystem aufweisend: einen oder mehrere Computerprozessoren; ein oder mehrere nichtflüchtige durch einen Computer lesbare Speichermedien; Programmanweisungen, die auf dem einen oder den mehreren nichtflüchtigen durch einen Computer lesbaren Speichermedien gespeichert sind, zum Ausführen durch mindestens einen des einen oder der mehreren Computerprozessoren, die Programmanweisungen aufweisend: Programmanweisungen, die durch eine Änderungsüberwachungseinheit ausgeführt werden, zum Laden einer ersten Abonnementliste, die einem oder mehreren in einem entfernten Inhaltsrepository gespeicherten Objekten zugehörig ist; Programmanweisungen, die durch die Änderungsüberwachungseinheit ausgeführt werden, zum Abrufen eines oder mehrerer Änderungsprotokolle, die eine oder mehrere Änderungen aufweisen, die dem entfernten Inhaltsrepository zugehörig sind; Programmanweisungen, die durch die Änderungsüberwachungseinheit ausgeführt werden, zum Abrufen einer zweiten Abonnementliste, die dem einen oder den mehreren in dem entfernten Inhaltsrepository gespeicherten Objekten zugehörig ist; Programmanweisungen, die durch die Änderungsüberwachungseinheit ausgeführt werden, zum Aktualisieren der ersten Abonnementliste beruhend auf einer Unterschiedlichkeit von Objektidentitäten, die der ersten Abonnementliste zugehörig sind, und Objektidentitäten, die der zweiten Abonnementliste zugehörig sind; Programmanweisungen, die durch die Änderungsüberwachungseinheit ausgeführt werden, zum Ermitteln, ob mindestens eine der einen oder mehreren Änderungen, die dem einen oder den mehreren Änderungsprotokollen zugehörig sind, Objekte betreffen, die in der ersten Abonnementliste gekennzeichnet sind; als Reaktion auf das Ermitteln, dass mindestens einer der einen oder mehreren Änderungen Objekte betreffen, die in der ersten Abonnementliste gekennzeichnet sind, Programmanweisungen, die durch die Änderungsüberwachungseinheit ausgeführt werden, zum Senden einer oder mehrerer Änderungsbenachrichtigungen, die eine oder mehrere geänderte Objekte kennzeichnen, an den Abonnenten; Programmanweisungen, die durch die Änderungsüberwachungseinheit ausgeführt werden, zum Empfangen jeweils einer oder mehrerer Antworten auf die eine oder mehreren Änderungsbenachrichtigungen, wobei die eine oder mehreren Antworten einen Statuscode aufweisen; und Programmanweisungen, die durch die Änderungsüberwachungseinheit ausgeführt werden, zum Aktualisieren der ersten Abonnementliste beruhend auf dem Statuscode.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein Blockschaubild einer Datenverarbeitungsumgebung zum Überwachen von Änderungen von entfernten Inhalten gemäß Ausführungsformen der vorliegenden Erfindung.
-
2 ist ein Blockschaubild eines Abonnementdienstes, der einem System zum Überwachen von Änderungen von entfernten Inhalten zugehörig ist, gemäß Ausführungsformen der vorliegenden Erfindung.
-
3A–C sind Ablaufpläne, die Prozessschritte von Abonnement/Benachrichtigungs-Verfahrens darstellen, die einem System zum Überwachen von Änderungen von entfernten Inhalten zugehörig sind, gemäß Ausführungsformen der vorliegenden Erfindung; und
-
4 ist ein Blockschaubild von internen und externen Komponenten einer Datenverarbeitungsumgebung gemäß Ausführungsformen der vorliegenden Erfindung.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die hierin dargestellten Ausführungsformen berücksichtigen die Herausforderungen beim Aufrechterhalten der Konsistenz von Inhalten, wenn ein Benutzer zwischen vielen verschiedenen Datenverarbeitungseinheiten wechselt und Aktualisierungen des Inhalts von den verschiedenen Datenverarbeitungseinheiten aus bereitstellt. Ausführungsformen der vorliegenden Erfindung sind Ansätze zum Bereitstellen einer Änderungsüberwachungseinheit zur Ermöglichung eines Abonnementdienstes zum Empfangen von Benachrichtigungen über Inhaltsänderungen in einem entfernten Repository, unabhängig davon, ob das entfernte Repository einen nativen Abonnement/Benachrichtigungs-Mechanismus aufweist. Auf diese Weise können mehrere Datenverarbeitungseinheiten den Zugriff auf eine lokale Kopie des entfernten Inhalts mit der Gewissheit beibehalten, dass die lokale Kopie vorherige Änderungen, die durch den Benutzer von einer beliebigen der zugehörigen Datenverarbeitungseinheiten aus vorgenommen wurden, umfasst.
-
1 ist ein Blockschaubild einer Datenverarbeitungsumgebung 100 gemäß einer Ausführungsform der vorliegenden Erfindung. Die Datenverarbeitungsumgebung 100 weist einen Repository-Standort 102 und einen Abonnementserver 104 auf, wobei Server (nicht gezeigt), die dem Repository-Standort 102 und dem Abonnementserver 104 zugehörig sind, über ein Netzwerk 114 für den Datenaustausch mit Abonnementclients 116 verbunden sind. Zum Beispiel können solche Ausführungsformen in Rechenzentrums-, Cloud-Computing-, Storage-Area-Network-(SAN-) und Network-Attached-Storage-(NAS-)Anwendungen verwendet werden. In bestimmten Ausführungsformen stellen das Nutzer-Computersystem 102 und das Provider-Computersystem 110 virtuelle Maschinen dar. Im Allgemeinen stehen der Repository-Standort 102 und der Abonnementserver 104 stellvertretend für jede beliebige elektronische Einheit oder eine Kombination von elektronischen Einheiten, die in der Lage sind, maschinenlesbare Programmanweisungen auszuführen, wie in Bezug auf 4 ausführlicher beschrieben wird.
-
Der Abonnementserver 104 weist einen Abonnementdatenspeicher 110 und einen Abonnementdienst 112 auf. Der Abonnementdatenspeicher 110 speichert die Identität von Inhalt, z.B. eine Liste von Identitäten von Objekten, die Benutzer abonniert haben und die sich in dem Inhaltsrepository 102 befinden. Eine Objektidentität ist eindeutig in dem Inhaltsrepository 106, und mit dieser Objektidentität kann die Ausführungsform das zugehörige Objekt in dem Inhaltsrepository 106 identifizieren. In einem anderen Aspekt weist die Ausführungsform für jedes Abonnement dem Abonnement eine Abonnementkennung zu, wobei die Abonnementkennung im Abonnementdatenspeicher 110 eindeutig ist.
-
Bei der Abonnementkennung handelt es sich um eine aufsteigende Folge, die mit jedem neuen Abonnement erhöht wird. Es sei angemerkt, dass die Abonnementkennung für gekündigte Abonnements nicht wiederverwendet wird. Ein Datenbankmanagementsystem (DBMS) kann die Abonnementkennung erzeugen, z.B. kann eine Spalte festgelegt werden, wie z.B. „IMMER ALS IDENTITÄT ERZEUGT (STARTE MIT 1, ERHÖHE UM 1, KEIN CACHESPEICHER)“, aber nicht darauf beschränkt. Dies führt dazu, dass ein neues Abonnement die größte Abonnementkennung in dem Abonnementdatenspeicher 110 aufweist. Entsprechend kann ein Abonnent mehrere Objekte abonnieren, und mehrere Abonnenten können ein einzelnes Objekt abonnieren, sodass eine Zuordnung von abonnierten Benutzern zu abonnierten Objekten auch in dem Abonnementdatenspeicher 110 gespeichert wird. Die Zuordnung bietet die Möglichkeit, eine Liste von Teilnehmern zu identifizieren, die zu benachrichtigen sind, wenn ein Objekt geändert wird.
-
Der Abonnementdienst 112 bietet die Möglichkeit, mit dem Abonnementdatenspeicher 110 und dem einen oder den mehreren Abonnementclients 116 Daten auszutauschen. In einem Aspekt verwaltet der Abonnementdienst 112 Abonnenten, die Abonnements für dem Inhaltsrepository 106 zugehörige Objekte anlegen und löschen. In einem anderen Aspekt verwaltet der Abonnementdienst 112 das Bereitstellen von Benachrichtigungen für die Abonnenten über Änderungen an den Objekten und die Identität der Objekte, die sie abonniert haben.
-
Der Repository-Standort 102 weist ein Inhaltsrepository 106 und eine Änderungsüberwachungseinheit 108 auf. Das Inhaltsrepository 106 und die Änderungsüberwachungseinheit 108 können sich auf demselben Server befinden, oder die Änderungsüberwachungseinheit 108 kann sich auf einem Server vor Ort beim Inhaltsrepository 106 befinden, vorzugsweise auf einem Server mit geringer Latenz zu dem Server, der das Inhaltsrepository hostet.
-
Bei dem Inhaltsrepository 106 handelt es sich um einen Speicherort für Objekte wie z.B. Daten, Datenbanken, Eingabe/Ausgabe-Cachespeicher, Dokumente, Ordner und Medien, aber nicht darauf beschränkt. Es sei angemerkt, dass das Inhaltsrepository ein Änderungsereignisprotokoll zum Nachverfolgen sämtlicher Änderungen an dem durch das Inhaltsrepository 106 verwalteten Inhalt aufweisen kann. Es sei des Weiteren angemerkt, dass das Inhaltsrepository einen nativen Dienst für Abonnementänderungen aufweisen kann, der native Service jedoch als Teil des Inhaltsrepository umgesetzt ist und nicht auf andere Repositories übertragbar ist. Zum Beispiel handelt es sich bei Content Management Interoperability Services (CMIS) um einen offenen Standard, der es verschiedenen Content-Management-Systemen ermöglicht, eine gemeinsame Schnittstelle bereitzustellen, z.B. eine Funktion „GetContentChanges“, die alle am Repository vorgenommenen Änderungen abrufen kann.
-
Die Änderungsüberwachungseinheit 108 wird in dem entfernten Standort eingesetzt, um das Erkennen von Änderungen zwischen dem Inhaltsrepository 106 und der Änderungsüberwachungseinheit 108 zu optimieren. Die Änderungsüberwachungseinheit 108 initialisiert sich durch Laden und Zwischenspeichern der Abonnementinformationen, die von dem Abonnementdatenspeicher 110 abgerufen wurden. In einer Ausführungsform kann die Änderungsüberwachungseinheit 108 den Cachespeicher dauerhaft auf einem lokalen Speicher speichern, um das Nachladen aus dem lokalen Cachespeicher durch die Änderungsüberwachungseinheit 108 zu optimieren. Es sei angemerkt, dass das Vorliegen einer aktualisierten Abonnementliste in dem lokalen Cachespeicher ein Indikator für die Änderungsüberwachungseinheit 108 sein kann, die aktualisierte Abonnementliste aus dem lokalen Cachespeicher zu laden. Die Änderungsüberwachungseinheit 108 tauscht mit dem Inhaltsrepository 106 Daten aus und überwacht das Inhaltsrepository 106 auf Änderungen an dem Inhalt. Die Änderungsüberwachungseinheit 108 überwacht das Inhaltsrepository durch periodisches Prüfen der Änderungsprotokolle, die dem Inhaltsrepository zugehörig sind, auf Änderungen an Objekten, die in den zwischengespeicherten Abonnementinformationen festgelegt sind.
-
Die Änderungsüberwachungseinheit 108 sendet eine Benachrichtigungsmeldung an den Abonnementservice 112, wenn die Änderungsüberwachungseinheit 108 eine Änderung an einem Objekt erkennt, das aktuell von einem beliebigen der Abonnenten, die dem Abonnementdienst 112 zugehörig sind, abonniert ist. Darüber hinaus verfolgt die Änderungsüberwachungseinheit 108 Änderungen in dem Abonnementdatenspeicher 110 im Hinblick auf neue Objektabonnements oder Objektabonnementkündigungen und passt Benachrichtigungen entsprechend an.
-
Als ein Beispiel für das Erkennen neuer Objektabonnements fragt die Änderungsüberwachungseinheit 108 in einem vorher festgelegten Zeitintervall den Abonnementdatenspeicher nach einer Liste jeglicher Änderungen in abonnierten Daten seit der letzten Prüfung durch die anfragende Änderungsüberwachungseinheit 108 ab. Die Änderungsüberwachungseinheit 108 nutzt den Vorteil des (vorstehend beschriebenen) Mechanismus, der zum Zuweisen von Abonnementkennungen verwendet wird, d.h., eine aufsteigende Folge ohne erneute Verwendung von nicht abonnierten Kennungen, um schnell zu ermitteln, ob der Cachespeicher auf Grund neuer Abonnements eine Aktualisierung benötigt. Zum Beispiel bemerkt die Änderungsüberwachungseinheit 108, dass die höchste Abonnementkennung, die sie besitzt, 1959 ist, wenn sie den Abonnementdatenspeicher 110 abfragt. Das Ergebnis der Abfrage zeigt, dass die aktuell höchste Abonnementkennung in dem Abonnementdatenspeicher 110 gleich 1977 ist, also numerisch größer ist, wobei die Änderungsüberwachungseinheit 108 den Cachespeicher mit den neuesten Abonnementdaten aktualisiert.
-
Betrachtet man ein Beispiel einer alternativen Ausführungsform zum Erkennen neuer Abonnements, so kann die Änderungsüberwachungseinheit 108 die höchste, d.h. maximale, Abonnementkennung, die sie besitzt, z.B. 1959, an den Abonnementdienst 112 senden. Der Abonnementdienst 112 kann der Änderungsüberwachungseinheit eine Liste von Abonnements mit Abonnementkennungen bereitstellen, die numerisch größer als 1959 sind und bis zur höchsten Abonnementkennung in dem Abonnementdatenspeicher 110 reichen, z.B. von 1960 bis 1977, wobei 1977 die höchste Abonnementkennung ist, d.h. mit einem numerisch größten Wert, zum Zeitpunkt der Anfrage. Wenn die Änderungsüberwachungseinheit die Liste empfängt, kann sie auf Grund der Tatsache, dass der Abonnementdienst 112 Abonnementkennungen in aufsteigender Reihenfolge vergibt, einfach den Cachespeicher mit der bereitgestellten Liste aktualisieren.
-
Als ein Beispiel des Erkennens von gekündigten Abonnements sendet die Änderungsüberwachungseinheit 108 eine Änderungsmitteilung an eine Benachrichtigungskomponente 202. Die Benachrichtigungskomponente 202 bestimmt während des Verarbeitens der Änderungsmitteilung aus der Abfrage des Abonnementdatenspeichers 110, dass der zugehörige Abonnementclient 116 das Abonnement gekündigt hat. Entsprechend sendet die Benachrichtigungskomponente 202 eine Nachricht an die Änderungsüberwachungseinheit 108, das Abonnement zu entfernen und das Bereitstellen von Mitteilungen an den zugehörigen Abonnementclient 116 für das abonnierte Objekt einzustellen.
-
Bei dem Netzwerk 114 kann es sich zum Beispiel um ein Telekommunikationsnetz, ein lokales Netzwerk (LAN), ein Weitverkehrsnetz (WAN), wie zum Beispiel das Internet, oder eine Kombination aus diesen handeln und dazu können drahtgebundene, drahtlose oder faseroptische Verbindungen gehören. Zu dem Netzwerk 114 können ein oder mehrere drahtgebundene und/oder drahtlose Netzwerke gehören, die in der Lage sind, Daten-, Sprach- und/oder Videosignale zu empfangen und zu übertragen, darunter Multimedia-Signale, die Sprach-, Daten- und Videoinformationen beinhalten. Im Allgemeinen kann es sich bei dem Netzwerk 114 um eine beliebige Kombination von Verbindungen und Protokollen handeln, welche Datenübertragungen zwischen dem Repository-Server 102, dem Abonnementserver 104 und einem oder mehreren Abonnementclients 116 innerhalb der Datenverarbeitungsumgebung 100 unterstützen.
-
Bei dem Abonnementclient 116 kann es sich um jede beliebige programmierbare elektronische Einheit handeln, die in der Lage ist, maschinenlesbare Anweisungen auszuführen und mit verschiedenen Komponenten und Geräten Daten auszutauschen, wie z.B. dem Repository-Server 102 und dem Abonnementserver 104 innerhalb der Datenverarbeitungsumgebung 100, aber nicht darauf beschränkt. Zum Beispiel kann es sich bei dem Abonnementclient 116 um einen Desktop-Computer, einen Laptop-Computer, eine mobile Einheit oder jede beliebige andere entsprechend konfigurierte Einheit handeln.
-
2 ist ein Blockschaubild einer Komponente 200 des Abonnementservers 104, d.h. des Abonnementdienstes 112, gemäß Ausführungsformen der vorliegenden Erfindung. Der Abonnementdienst 112 weist eine Benachrichtigungskomponente 202 und eine Abonnementkomponente 204 auf.
-
Die Benachrichtigungskomponente 202 stellt die Fähigkeit bereit, Benachrichtigungen über Änderungen an abonnierten Objekten an einen oder mehrere Abonnementclients 116, z.B. mobile Einheiten von Benutzern, zu senden. Die Benachrichtigung weist die Identität des Objekts auf, das sich geändert hat. Beruhend auf den Informationen in der Benachrichtigung kann der Benutzer geeignete Maßnahmen ergreifen, wie z.B. das Auffinden und Abrufen einer neuen Kopie des Objekts aus dem Inhaltsrepository 106, aber nicht darauf beschränkt. Es sei angemerkt, dass mehr als ein Benutzer dasselbe Objekt abonniert haben kann, und entsprechend wird eine Benachrichtigung an jeden abonnierten Benutzer gesendet.
-
Die Abonnementkomponente 204 stellt die Möglichkeit bereit, Anfragen über das Abonnieren/Beenden eines Abonnements von einem Abonnementclient 116 zu empfangen und zu verarbeiten. Nachdem ein Abonnementclient 116 eine Anfrage über das Abonnieren/Beenden eines Abonnements an die Abonnementkomponente 204 gesendet hat, aktualisiert die Abonnementkomponente 204 den Abonnementdatenspeicher 110 mit Informationen, welche die Anfrage beschreiben. Zum Beispiel weist eine Abonnementanfrage den Ort und die Identität eines Objekts auf, für das der Abonnementclient 116 Änderungsbenachrichtigungen sehen möchte. Die Art der Änderung der Anfrage weist mindestens eine der Folgenden auf: Aktualisieren, Löschen, Neuindizieren, etc. Es sei angemerkt, dass Objekte wie z.B. Ordner, aber nicht darauf beschränkt, darüber hinaus Benachrichtigungen aufweisen können, die dem Hinzufügen von Objekten zu dem Ordner und dem Löschen von Objekten aus dem Ordner zugehörig sind.
-
3A zeigt eine Ausführungsform von Prozessschritten eines Abonnement-Inhaltsänderungsverfahrens 300, das von der Änderungsüberwachungseinheit 108 durchgeführt wird, gemäß Ausführungsformen der vorliegenden Erfindung.
-
In Schritt 302 lädt die Änderungsüberwachungseinheit 108 die Objektabonnementliste aus dem Abonnementdatenspeicher 110. Die Änderungsüberwachungseinheit 108 speichert die Objektabonnementliste lokal in dem Cachespeicher. In einer alternativen Ausführungsform speichert die Änderungsüberwachungseinheit 108 den Cachespeicher dauerhaft lokal ab, damit ein erneutes Laden des Cachespeichers keinen Datenaustausch mit dem Abonnementdatenspeicher 110 erfordert. Als Nächstes erhält die Änderungsüberwachungseinheit 108 in Schritt 304 das aktuelle Änderungsprotokoll von dem Inhaltsrepository 106. Es sei angemerkt, dass das aktuelle Änderungsprotokoll sämtliche Änderungen an dem Inhaltsrepository aufweist, nicht nur die der Objektabonnementliste zugehörigen Änderungen.
-
Als Nächstes ermittelt die Änderungsüberwachungseinheit 108 in Schritt 306, ob es in dem Änderungsprotokoll neue Änderungen gibt. Es sei angemerkt, dass es sich bei neuen Änderungen um Änderungen handelt, die aufgetreten sind, seitdem die vorhergehende Änderung erkannt wurde. Wenn die Änderungsüberwachungseinheit 108 keine neuen Änderungen erkennt, kehrt die Änderungsüberwachungseinheit 108 zu Schritt 304 zurück und sucht nach neuen Änderungen. Es sei angemerkt, dass vor der nächsten Prüfung auf Änderungen eine zeitliche Verzögerung konfiguriert werden kann. Die konfigurierte zeitliche Verzögerung kann vorher festgelegt werden, oder in einer alternativen Ausführungsform kann die zeitliche Verzögerung automatisch konfiguriert werden, beruhend auf Faktoren wie zum Beispiel der Zeitspanne seit Erfassung der letzten Änderung, aber nicht darauf beschränkt.
-
Wenn neue Änderungen aus dem Inhaltsrepository verfügbar sind, erhält die Änderungsüberwachungseinheit 108 in Schritt 308 eine neue Kopie der Objektabonnementliste aus dem Abonnementdatenspeicher 110 und speichert die Objektabonnementliste in dem Cachespeicher. Beim Bearbeiten der neuen Kopie ermittelt die Änderungsüberwachungseinheit 108, ob eine der Abonnementkennungen in der neuen Kopie größer ist als die Abonnementkennungen im Cachespeicher, d.h. ermittelt, ob es neue Abonnements gibt. Wenn es neue Abonnements gibt, fügt die Änderungsüberwachungseinheit 108 die neuen Abonnements zu dem Cachespeicher hinzu.
-
Als Nächstes ermittelt die Änderungsüberwachungseinheit 108 in Schritt 310, ob eine der neuen Änderungen in dem Änderungsprotokoll Objekten entspricht, die den Abonnementkennungen in dem Cachespeicher zugehörig sind. Wenn dann die Änderungsüberwachungseinheit 108 in Schritt 312 keine Übereinstimmungen zwischen den neuen Änderungen und den Objekten erkennt, die den Abonnementkennungen in dem Cachespeicher zugehörig sind, kehrt die Änderungsüberwachungseinheit 108 zu Schritt 304 zurück und sucht nach Änderungen. Wenn die Änderungsüberwachungseinheit 108 Übereinstimmungen erkennt, fährt die Änderungsüberwachungseinheit 108 mit Schritt 314 fort.
-
In Schritt 314 sendet die Änderungsüberwachungseinheit 108 eine Benachrichtigung an die Benachrichtigungskomponente 202, die angibt, dass es Änderungen an abonnierten Objekten gibt. Die Änderungsüberwachungseinheit 108 empfängt dann eine Antwort auf die vorher gesendete Benachrichtigung, die den Status der Nachrichtenlieferung angibt. Als Nächstes ermittelt die Änderungsüberwachungseinheit in Schritt 316, ob die empfangene Antwort einen Abonnement-Beenden-Statuscode beinhaltet, der angibt, dass ein Objekt von keinem Abonnementclient 116 mehr abonniert ist. Wenn der Abonnement-Beenden-Statuscode nicht empfangen wird, kehrt die Änderungsüberwachungseinheit 108 zu Schritt 304 zurück und sucht nach Änderungen. Wenn der Abonnement-Beenden-Code empfangen wird, fährt die Änderungsüberwachungseinheit mit Schritt 318 fort. In Schritt 318 entfernt die Änderungsüberwachungseinheit 108 die zugehörige Abonnementkennung aus dem Cachespeicher und kehrt zu Schritt 304 zurück und sucht nach neuen Änderungen.
-
3B zeigt eine alternative Ausführungsform von Prozessschritten eines Abonnement-Inhaltsänderungsverfahrens 340, das von der Änderungsüberwachungseinheit 108 durchgeführt wird, gemäß Ausführungsformen der vorliegenden Erfindung. Bei Schritt 342 lädt die Änderungsüberwachungseinheit 108 das Abonnement, wie vorstehend beschrieben wurde. Als Nächstes erkennt die Änderungsüberwachungseinheit 108 in Schritt 344 eine Änderung in einem abonnierten Objekt, wie vorstehend beschrieben wurde. Als Nächstes sendet die Änderungsüberwachungseinheit 108 in Schritt 346 eine Änderungsbenachrichtigung an den Abonnenten, wie vorstehend beschrieben wurde.
-
3C zeigt eine andere alternative Ausführungsform von Prozessschritten eines Abonnement-Inhaltsänderungsverfahrens 370, das von der Änderungsüberwachungseinheit 108 durchgeführt wird, gemäß Ausführungsformen der vorliegenden Erfindung. Bei Schritt 372 lädt die Änderungsüberwachungseinheit 108 das Abonnement, wie vorstehend beschrieben wurde. Als Nächstes erkennt die Änderungsüberwachungseinheit 108 in Schritt 374 eine Änderung in einem abonnierten Objekt, wie vorstehend beschrieben wurde. Als Nächstes sendet die Änderungsüberwachungseinheit 108 in Schritt 376 eine Änderungsbenachrichtigung an den Abonnenten, wie vorstehend beschrieben wurde. Als Nächstes aktualisiert die Änderungsüberwachungseinheit 108 in Schritt 378 die Abonnementliste, wie vorstehend beschrieben wurde.
-
4 zeigt ein Blockschaubild 400 von Komponenten der Datenverarbeitungseinheit 104 gemäß einer veranschaulichenden Ausführungsform der vorliegenden Erfindung. Man sollte sich bewusst sein, dass 4 lediglich eine Veranschaulichung einer Umsetzung bereitstellt und keinerlei Einschränkungen in Bezug auf die Umgebungen, in denen verschiedene Ausführungsformen umgesetzt werden können, mit sich bringt. Es können viele Abwandlungen an der abgebildeten Umgebung vorgenommen werden.
-
Die Datenverarbeitungseinheit 104 beinhaltet ein Datenübertragungsnetz 402, das den Austausch von Daten zwischen (einem) Computerprozessor(en) 404, einem Hauptspeicher 406, einem dauerhaften Speicher 408, einer Datenübertragungseinheit 410 und (einer) Eingabe/Ausgabe-(E/A-)Schnittstelle(n) 412 und einem Cachespeicher 414 bereitstellt. Das Datenübertragungsnetz 402 kann mit jeder beliebigen Architektur umgesetzt werden, die zum Weiterleiten von Daten und/oder Steuern von Informationen zwischen Prozessoren (wie zum Beispiel Mikroprozessoren, Datenübertragungs- und Netzwerkprozessoren usw.), Systemspeicher, Peripheriegeräten und beliebigen anderen Hardware-Komponenten innerhalb eines Systems ausgelegt ist. Zum Beispiel kann das Datenübertragungsnetz 402 mit einem oder mehreren Bussen umgesetzt werden.
-
Bei dem Hauptspeicher 406 und dem dauerhaften Speicher 408 handelt es sich um durch einen Computer lesbare Speichermedien. In dieser Ausführungsform beinhaltet der Hauptspeicher 406 Direktzugriffsspeicher (RAM) und Cachespeicher 414. Allgemein kann der Hauptspeicher 406 jedes beliebige flüchtige oder nichtflüchtige durch einen Computer lesbare Speichermedium beinhalten. Der Cachespeicher 414 ist ein schneller Speicher, der die Leistungsfähigkeit vom/von Computer-Prozessor(en) 404 erhöht, indem er kürzlich aus dem Hauptspeicher 406 abgerufene Daten und Daten in der Nähe von abgerufenen Daten bereithält.
-
Die Analysierkomponente 108 und die Datendatei 110 (Datendatei 156 in der Datenverarbeitungsumgebung 150) sind in dauerhaftem Speicher 408 zur Ausführung und/oder zum Zugriff durch einen oder mehrere der jeweiligen Computerprozessoren 404 über einen oder mehrere Speicher des Hauptspeichers 406 gespeichert. In dieser Ausführungsform beinhaltet der dauerhafte Speicher 408 ein magnetisches Festplattenlaufwerk. Alternativ oder zusätzlich zu dem magnetischen Festplattenlaufwerk kann der dauerhafte Speicher 408 ein Solid-State-Festplattenlaufwerk, eine Halbleiterspeichereinheit, einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM), Flash-Speicher oder jedes beliebige andere durch einen Computer lesbare Speichermedium beinhalten, das in der Lage ist, Programmanweisungen oder digitale Informationen zu speichern.
-
Die von dem dauerhaften Speicher 408 verwendeten Medien können auch auswechselbar sein. Es kann zum Beispiel ein Wechselplattenlaufwerk für den dauerhaften Speicher 408 verwendet werden. Zu anderen Beispielen gehören optische und magnetische Platten, Thumb-Drives und Smartcards, die in ein Laufwerk zum Übertragen auf ein anderes durch einen Computer lesbares Speichermedium, das auch ein Teil des dauerhaften Speichers 408 ist, eingeführt werden.
-
Die Datenübertragungseinheit 410 sorgt in diesen Beispielen für die Datenübertragung zu anderen Datenverarbeitungssystemen oder -einheiten. Die Datenübertragungseinheit 410 kann eine oder mehrere Netzwerkschnittstellenkarten beinhalten. Die Datenübertragungseinheit 410 kann die Datenübertragung durch Verwendung von physischen und/oder drahtlosen Datenübertragungsverbindungen bereitstellen. Die Analysierkomponente 108 kann durch die Datenübertragungseinheit 410 in den dauerhaften Speicher 408 heruntergeladen werden.
-
Eine oder mehrere Eingabe/Ausgabe-Schnittstellen 412 ermöglichen die Eingabe und Ausgabe von Daten von/zu anderen Einheiten, die mit der Datenverarbeitungseinheit 104 verbunden sein können. Zum Beispiel kann die Eingabe/Ausgabe-Schnittstelle 412 eine Verbindung zu externen Einheiten 416 wie zum Beispiel einer Tastatur, einem Ziffernblock, einem Touchscreen und/oder einer anderen geeigneten Eingabeeinheit bereitstellen. Die externen Einheiten 416 können auch tragbare durch einen Computer lesbare Speichermedien wie zum Beispiel Thumb-Drives, tragbare optische oder magnetische Platten und Speicherkarten beinhalten. Software und Daten, die verwendet werden, um Ausführungsformen der vorliegenden Erfindung zu praktizieren, z.B. die Analysierkomponente 108 und die Daten 110 (Datendatei 156 in der Datenverarbeitungsumgebung 150), können auf derartigen tragbaren, durch einen Computer lesbaren Speichermedien gespeichert und über die I/O-Schnittstelle(n) 412 in den dauerhaften Speicher 408 geladen werden. Die E/A-Schnittstelle(n) 412 ist/sind auch mit einer Anzeige 418 verbunden.
-
Die Anzeige 418 stellt einen Mechanismus zur Anzeige von Daten für einen Benutzer bereit, und es kann sich dabei zum Beispiel um einen berührungsempfindlichen Bildschirm handeln.
-
Die hierin beschriebenen Programme werden beruhend auf der Anwendung identifiziert, für die sie in einer spezifischen Ausführungsform der Erfindung umgesetzt werden. Man sollte sich jedoch bewusst sein, dass jede bestimmte Programm-Nomenklatur hierin lediglich der Bequemlichkeit halber verwendet wird, und folglich darf die Erfindung nicht auf die ausschließliche Verwendung in einer beliebigen spezifischen Anwendung, die durch eine derartige Nomenklatur identifiziert und/oder impliziert wird, beschränkt werden.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) beinhalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Glasfaserkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
-
Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
-
Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernten Computer oder vollständig auf dem entfernten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern durch durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
-
Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
-
Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
-
Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist darüber hinaus anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
-
Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zwecke der Veranschaulichung aufgeführt, sollen jedoch nicht gesamthaft stehen für bzw. begrenzt sein auf die offenbarten Ausführungsformen. Für Fachleute werden viele Abänderungen und Abweichungen ersichtlich sein, ohne von dem Umfang und dem Gedanken der Erfindung abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsform, die praktische Anwendung oder technische Verbesserung von auf dem Markt vorgefundenen Technologien bestmöglich zu erläutern oder um es anderen Fachleuten zu ermöglichen, die hierin offenbarten Ausführungsformen zu verstehen.