Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
SYNCHRONIZATION OF HIERARCHICAL DATA
Document Type and Number:
WIPO Patent Application WO/2018/019720
Kind Code:
A1
Abstract:
The invention relates to the synchronization of hierarchical data between a transmitter and a receiver by the use of hash codes.

Inventors:
HERTER HERMANN (DE)
MAROK JASPREET SINGH (DE)
CEH ANDREIJ (DE)
Application Number:
PCT/EP2017/068488
Publication Date:
February 01, 2018
Filing Date:
July 21, 2017
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
BAYER BUSINESS SERVICES GMBH (DE)
International Classes:
G06F17/30; G06F19/00
Foreign References:
US20060174129A12006-08-03
US20060174129A12006-08-03
US20110264629A12011-10-27
Other References:
ANONYMOUS: "GitHub - marc136/node-folder-hash at 9c680bb87b508a4080b155200fcb96dc319d909b", 21 November 2015 (2015-11-21), XP055413423, Retrieved from the Internet [retrieved on 20171009]
THOMAS OTTMANN; PETER WIDMAYER: "Algorithmen und Datenstrukturen, 5. auflage", 2012, SPEKTRUM-VERLAG, ISBN: 9783827428035
Attorney, Agent or Firm:
BIP PATENTS (DE)
Download PDF:
Claims:
Patentansprüche

1. Verfahren umfassend die folgenden Schritte:

Bereitstellen von Objekten, die in mindestens zwei Aggregationsebenen, einer untersten Aggregationsebene, einer obersten Aggregationsebene und optional weiteren Aggregationsebenen zwischen der untersten und der obersten Aggregationsebene vorliegen, wobei jedes Objekt über eine eindeutige Kennung verfügt, wobei Objekte, die zu einem Objekt in einer höheren Aggregationsebene zusammengefasst sind, als Kind-Objekte bezeichnet werden, wobei Objekte, zu denen Kind-Objekte einer niedrigeren Aggregationsebene gehören, als

Vater-Objekte bezeichnet werden,

Übermitteln der Objekte von einem Sender an einen Empfänger,

Erzeugen von Hash-Codes für jedes Vater-Objekt auf Basis der dazugehörigen Kind-Objekte durch den Sender und durch den Empfänger, wobei die Erzeugung eines Hash-Codes auf Basis der eindeutigen Kennungen des Vater- Objekts und a.) auf Basis der eindeutigen Kennungen der zugehörigen Kind-Objekte erfolgt, wenn die Kind-Objekte in der untersten Aggregationsebene vorliegen,

b.) auf Basis der für die Kind-Objekte erzeugten Hash-Codes erfolgt, wenn die Kind-

Objekte in einer Aggregationsebene oberhalb der untersten Aggregationsebene vorliegen,

Vergleichen der von Sender und Empfänger erzeugten Hash-Codes von Objekten einer oberen Aggregationsebene, vorzugsweise der obersten Aggregationsebene. 2. Verfahren nach Anspruch 1, wobei es sich zumindest bei einem Teil der Objekte um physische Objekte handelt.

3. Verfahren nach Anspruchl oder 2, wobei es mindestens ein Objekt in der obersten Aggregationsebene gibt, das lediglich eine eindeutige Kennung ist und kein physisches Objekt umfasst. 4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass vor Erzeugung eines Hash-Codes diejenigen Kennungen und diejenigen bereits erzeugten Hash-Codes, die in die Erzeugung einfließen, in eine definierte Reihenfolge gebracht werden, die zwischen Sender und Empfänger abgestimmt worden ist.

5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, dass bei der Erzeugung der Hash-Codes die einfließenden Kennungen und die einfließenden Hash-Codes auf- oder absteigend sortiert werden, und die Kennungen der Objekte, für die der jeweilige Hash-Code erzeugt wird, der sortierten Reihenfolge voran- oder nachgestellt werden.

6. Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, dass es sich bei den Objekten um Waren, vorzugsweise um pharmazeutische Produkte handelt.

7. Verfahren nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, dass die Aggregationsebenen unterschiedliche Verpackungsstufen und/oder Bündelungen der Objekte darstellen.

8. Verfahren nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, dass es Teil eines Prozesses zur Verfolgung von Waren von einer ersten Vertriebsstation zu einer zweiten Vertriebsstation ist.

9. Verfahren nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, dass bei Änderung eines Objekts die von der Änderung betroffenen Hash-Codes mit einem digitalen Hinweis versehen werden, dass sie aktualisiert werden müssen.

10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, dass eine Aktualisierung der Hash-Codes zu definierten Zeitpunkten und/oder bei Eintritt eines Ereignisses erfolgt.

11. Computerprogrammprodukt mit Compute rogrammcodemitteln zum Ausführen der in den Ansprüchen 1 bis 10 genannten Schritte zur Erzeugung von Hash-Codes und/oder zum Vergleich von Hash-Codes durch einen Computer.

Description:
Synchronisation hierarchischer Daten

Die vorliegende Erfindung befasst sich mit der Synchronisation hierarchischer Daten zwischen einem Sender und einem Empfänger unter Verwendung von Hash-Codes, in die die hierarchische Struktur der Daten einfließt (hierarchische Hash-Codes).

Die Synchronisation hierarchischer Daten zwischen einem Sender und einem Empfänger spielt bei vielen industriellen, logistischen und geschäftlichen Prozessen eine wichtige Rolle.

Als Beispiel sei die Verfolgung von Waren, insbesondere von pharmazeutischen Produkten angeführt. Pharmazeutische Produkte unterliegen weltweit einer Reihe von behördlichen Regularien. Dazu zählt in einigen Staaten die Anforderung, eine RückVerfolgbarkeit von pharmazeutischen Produkten zu gewährleisten (Track & Trace). Dazu werden einzelne Pharmaverpackungen mit einer eindeutigen Kennung (z.B. einer Seriennummer) versehen (Serialisierung), um sie zu einem späteren Zeitpunkt eindeutig identifizieren zu können.

Diese Kennung ist in der Regel ein (alpha-)numerischer Code, der üblicherweise in maschinenlesbarer Form - zum Beispiel als Barcode oder 2Dmatrix-code - auf der Pharmaverpackung aufgebracht ist oder in einem RFID-Transponder, der mit der Pharmaverpackung verbunden ist, gespeichert ist.

US 2006/0174129 AI offenbart ein Verfahren zur Authentifizierung von Artikeln. Jeder einzelne Artikel trägt eine eindeutige Kennung, die in einem RFID-Transponder, der mit dem Artikel verbunden ist, gespeichert ist. Ein Sender erzeugt aus den einzelnen Kennungen Hash-Codes. Die Hash-Codes werden zusammen mit den Artikeln oder separat von dem Sender an einen Empfänger übermittelt. Der Empfänger erzeugt seinerseits Hash-Codes aus den Kennungen und kann durch Vergleich der selbst erzeugten Hash-Codes mit den vom Sender übermittelten Hash-Codes die Authentizität der übermittelten Artikel überprüfen. Das Verfahren beschränkt sich allerdings auf die Abbildung reiner Vater-Kind-Beziehungen, so dass zum vollständigen Abgleich einer Hierarchie alle Vater-Hash-Codes überprüft werden müssen.

Pharmazeutische Produkte werden in der Regel nicht in Form einzelner Verpackungen vertrieben sondern es werden mehrere einzelne Verpackungen zu größeren Einheiten (Bündeln) zusammengefasst. Mehrere Bündel können in einem Karton zusammengefasst und mehrere Kartons auf einer Palette gestapelt werden. Die einzelnen Verpackungen tragen ihrerseits ebenfalls eine eindeutige Kennung.

Auf einer abstrakten Ebene liegt hier eine Hierarchie von Objekten mit mehreren Aggregationsebenen vor. Figur 1 verdeutlicht dies beispielhaft anhand einer Verpackungshierarchie. Die kleinsten Verpackungseinheiten werden als „Kind-Objekte" oder„Kinder" bezeichnet; sie liegen in der untersten (nullten) Aggregationsebene (Ebene 0) vor. Sie besitzen selbst keine Kind- Objekte. Objekte der nächst-höheren Verpackungsebene, in der mehrere „Kinder" zusammengefasst sind, werden als „Vater-Objekte" oder„Väter" bezeichnet (Ebene 1). Mehrere „Väter" können ihrerseits wieder zu einer Einheit zusammengefasst werden. Dabei sind diese „Väter" ihrerseits„Kinder" der nächsthöheren Einheit. Objekte der obersten Aggregationsebene werden hier als Top-Element(e) bezeichnet - sie besitzen nur„Kinder", aber keinen Vater.

Der Prozess des Zusammenfassens von mehreren Einheiten in eine„höhere" Einheit wird auch als Aggregation bezeichnet. Das Objekt, in dem mehrere Objekte zusammengefasst sind, wird auch als Aggregat bezeichnet. Die Beziehung zwischen den Objekten auf unterschiedlichen Aggregationsebenen wird auch als Hierarchie bezeichnet.

Aufgrund der (je nach Land unterschiedlichen) gesetzlichen Pflicht des Herstellers einer Ware und/oder der beteiligten Vertriebspartner, den Umgang mit den serialisierten Objekten (z.B. Erstellung, Versand, etc.) nachverfolgen zu können, werden die Serialisierungs- und Aggregationsdaten in den entsprechenden IT-Systemen der beteiligten Unternehmen gespeichert und verarbeitet.

Pharmazeutische Produkte durchlaufen üblicherweise eine Kette von Vertriebspartnern bevor sie schließlich beim Patienten ankommen. Eine effiziente logistische Handhabung der Produkte setzt voraus, dass jeder der in der Kette involvierten Vertriebspartner die Aggregationsinformationen vom vorherigen Vertriebspartner auf (elektronischem) Wege übermittelt bekommt. Ohne diese Information wäre der aktuelle Vertriebspartner gezwungen, vor dem Weiterversand den Inhalt der jeweiligen Aggregationsstufe erneut zu bestimmen und hierzu bis auf die unterste Verpackungsebene auszupacken.

Um die Korrektheit der Serialisierungs- und Aggregationsdaten entlang der Vertriebskette zu gewährleisten, ist eine Synchronisation zwischen den beteiligten IT-Systemen sowohl innerhalb eines Unternehmens als auch unternehmensübergreifend notwendig. Die Synchronisation sollte dabei das einzelne Objekt inkl. seiner Gültigkeit und die dazu gehörende Vater-Kind-Beziehung umfassen.

US 2011/0264629 AI offenbart ein Verfahren zur Synchronisation von Datensätzen zwischen einem Sender und mehreren Empfängern. Bei diesem Verfahren werden die Datensätze in verschiedene Ebenen unterteilt und Hash-Codes für die Elemente der einzelnen Ebenen erzeugt. Bei der Synchronisation der Datensätze werden nacheinander die Hash-Codes der einzelnen Ebenen verglichen. In die Erzeugung der Hash-Codes für eine obere Ebene fließen allerdings keine Informationen über die darunter liegenden Ebenen ein. Verallgemeinert lässt sich das heutzutage gängige Verfahren zur Synchronisation wie folgt beschreiben:

1) Der Sender (z.B. einer Ware) übermittelt zu einem vereinbarten Zeitpunkt die Aggregationsdaten an den Empfänger (z.B. der Ware). Hierzu werden 1 bis n Aggregationsnachrichten verschickt.

2) Der Empfänger verarbeitet die übermittelten Nachrichten und führt einen mengenbasierten Abgleich zwischen Lieferdokument, physischer Ware und Anzahl Objekte in seinem IT- System durch.

3) Leitet der Empfänger die Waren an einen nächsten Vertriebspartner weiter, übermittelt der Empfänger dem Sender die entsprechenden Aggregationsdaten der weitergeleiteten Wareneinheiten. Dabei muss er die komplette Hierarchie übermitteln.

Die unter Punkt 2) genannte mengenbasierte Überprüfung erlaubt keinerlei Rückschlüsse auf die Korrektheit der Aggregation; d.h., die Vater-Kind-Beziehungen werden komplett außer Acht gelassen.

Im Gegensatz zu dem stark vereinfachten Beispiel in Figur 1 umfassen reale Hierarchien Hunderte oder Tausende von Objekten. Dementsprechend umfangreich sind die Datenmengen, die zwischen den IT-Systemen ausgetauscht werden müssen, um die IT-Systeme synchron zu halten.

Aufgrund der Datenmengen werden die Daten zwischen den Vertriebspartnern nicht zwangsläufig in einer einzigen großen Nachricht ausgetauscht, sondern in vielen kleineren, in sich abgeschlossen Nachrichten. Diese Nachrichte müssen heute einzeln verarbeitet werden.

Neben der hohen Fehleranfälligkeit durch verzögerte und verloren gegangene Nachrichten bedeutet dies einen hohen Bedarf an Rechner- und Speicherkapazitäten, sowie einen hohen Netz Werkverkehr (LAN und WAN).

Eine fehlende oder inkonsistente Nachricht bedeutet eine Abweichung zwischen den real verpackten Objekten und ihrer digitalen Abbildung in den IT-Systemen. Diese Abweichung pflanzt sich im schlimmsten Fall durch die komplette Vertriebskette bis zur ersten realen Überprüfung der Waren fort und kann neben erhöhten Aufwänden (Retouren, Korrektur von behördlichen Unterlagen etc.) auch zu negativen Auswirkungen auf den Ruf eines Unternehmens führen.

Es besteht demnach Bedarf, die Synchronisation hierarchischer Daten zwischen Sender und Empfänger zu vereinfachen, und zwar sowohl innerhalb eines Unternehmens (in der Regel werden Serialisierungs- und Aggregationsdaten an verpackungstechnischen Einrichtungen eines Unternehmens erzeugt und an ein oder mehrere unternehmensinterne Track&Trace- „

- 4 -

Abteilungen/IT-Systeme übertragen) als auch unternehmensübergreifend (wie im Fall der Lieferung von Waren wie oben beschrieben).

Gelöst wird diese Aufgabe durch die Gegenstände der unabhängigen Ansprüche 1 und 11. Bevorzugte Ausführungsformen finden sich in den abhängigen Ansprüchen sowie in der vorliegenden Beschreibung.

Ein erster Gegenstand der vorliegenden Erfindung ist somit ein Verfahren umfassend die folgenden Schritte:

Bereitstellen von Objekten, die in mindestens zwei Aggregationsebenen - einer untersten Aggregationsebene, einer obersten Aggregationsebene und optional weiteren Aggregationsebenen zwischen der untersten und der obersten Aggregationsebene - vorliegen, wobei jedes Objekt über eine eindeutige Kennung verfügt, wobei Objekte, die zu einem Objekt in einer höheren Aggregationsebene zusammengefasst sind, als Kind-Objekte bezeichnet werden, wobei Objekte, zu denen Kind-Objekte einer niedrigeren Aggregationsebene gehören, als

Vater-Objekte bezeichnet werden,

Übermitteln der Objekte von einem Sender an einen Empfänger,

Erzeugen von Hash-Codes für jedes Vater-Objekt auf Basis der dazugehörigen Kind-Objekte durch den Sender und durch den Empfänger, wobei die Erzeugung eines Hash-Codes auf Basis der eindeutigen Kennungen des Vater- Objekts und a.) auf Basis der eindeutigen Kennungen der zugehörigen Kind-Objekte erfolgt, wenn die Kind-Objekte in der untersten Aggregationsebene vorliegen,

b.) auf Basis der für die Kind-Objekte erzeugten Hash-Codes erfolgt, wenn die Kind-

Objekte in einer Aggregationsebene oberhalb der untersten Aggregationsebene vorliegen,

Vergleichen der von Sender und Empfänger erzeugten Hash-Codes von Objekten einer oberen Aggregationsebene, vorzugsweise der obersten Aggregationsebene.

Kern der vorliegenden Erfindung ist die Verwendung von hierarchischen Hash-Codes zur Synchronisation von IT-Systemen. In den hierarchischen Hash-Codes, die zwischen den IT- Systemen ausgetauscht werden, ist die Hierarchie von übermittelten Objekten kondensiert. Dabei ist in jedem Hash-Codes eines Vater-Objekts die komplette Hierarchie der darunterliegenden und zugehörigen Kind-Objekte kondensiert: Kennungen der Kind-Objekte und die Beziehungen der Kind-Objekte unterhalb des Vater-Objekts zueinander und zum Vater-Objekt. Dies gilt für jede Aggregationsebene, so dass der Hash-Codes des mindestens einen Top-Elements die komplette Hierarchie repräsentiert. Die vorliegende Erfindung bietet somit die Möglichkeit, die Vollständigkeit und die Richtigkeit der Übermittlung von Objekten und deren Aggregationsbeziehungen schnell und effizient auf Basis von Hash-Codes zu prüfen. Im Vergleich zu den im Stand der Technik beschriebenen Verfahren reicht es in diesem Fall den Hash-Wert des obersten Elements zu vergleichen, um auf Vollständigkeit und Richtigkeit zu prüfen. Ein Hash-Code ist das Ergebnis einer mathematischen Funktion, der so genannten Hash-Funktion. Hash-Funktionen sind beispielsweise aus der Kryptografie hinlänglich bekannt.

Eine Hash-Funktion, auch Streuwertfunktion genannt, ist eine Abbildung, die eine Eingabemenge auf eine Zielmenge (den Hash-Code) abbildet. Speziell in der Informatik verwendet man auch den Begriff Hash- Algorithmus, da Hash-Funktionen oftmals in Form eines Algorithmus statt einer mathematischen Funktion spezifiziert werden. Die Eingabemenge ist in der Regel wesentlich größer als die Zielmenge, so dass die Datenmenge bei Erzeugung eines Hash-Codes reduziert wird. Der Prozess der Hash-Code-Erzeugung ist nicht umkehrbar, d.h. aus dem Hash-Code lassen sich die eingeflossenen Daten nicht mehr reproduzieren. Eine Änderung der einfließenden Daten führt zu einer Änderung des resultierenden Hash-Codes. Beispiele für Hash-Funktionen (Hash-Algorithmen) finden sich zum Beispiel in Informatikstandardwerken wie „Algorithmen und Datenstrukturen" von Thomas Ottmann und Peter Widmayer, Spektrum- Verlag, 5. Auflage 2012, ISBN-13: 9783827428035. Es finden sich auch in diversen Standardlösungen am Markt entsprechende Funktionen, wie zum Beispiel in SAP-Produkten den Funktionsbaustein CALCULATE_HASH_FOR_RAW der zwei Algorithmen SHA1 und MD5 unterstützt, oder die Klasse CL_ABAP_MESSAGE_DIGEST, die zusätzlich den Algorithmus SHA256 unterstützt.

In dem erfindungsgemäßen Verfahren erhält ein Empfänger von einem Sender eine Mehrzahl von Objekten. Dabei sind zwei Fälle zu unterscheiden:

1) Die Objekte liegen in mindestens zwei Aggregationsebenen vor. Das bedeutet, dass es mindestens ein Vater-Objekt gibt, dem ein oder mehrere Kind-Objekte zugeordnet sind.

2) Es existieren keine Vater-Kind-Beziehungen zwischen den Objekten sondern alle Objekte sind reine Kind-Objekte. In einem solchen Fall kann ein logisches Top-Element als Vater eingeführt werden, um eine logische Hierarchie herzustellen. So kann dieser Fall 2) in den oberen Fall 1) überführt werden. Sollte also keine Aggregationsbeziehung zwischen den Objekten vorliegen, kann ,

- 6 - das Verfahren immer noch auf ein logisches Top-Element, zum Beispiel die Produktcharge, angewendet werden.

Wenn also nachfolgend davon die Rede ist, dass Objekte in „mindestens zwei Aggregationsebenen" vorliegen, umfasst dies den Fall, dass eine Ebene mit Objekten vorliegt, die in einer höheren Ebene zu einem logischen Objekt zusammengefasst sind.

Figur 2 veranschaulicht die Beziehungen zwischen den Objekten in einer einfachen Hierarchie mit drei Aggregationsebenen. In der untersten Aggregationsebene gibt es eine Mehrzahl an Objekten (3, 4, 5 und 6).

Die unterste Aggregationsebene sei nachfolgend auch als nullte Aggregationsebene bezeichnet. Der Begriff „nullte Aggregationsebene" wurde gewählt, weil in dieser Ebene keine Aggregation von Objekten stattfindet sondern erst auf der nächsthöheren ersten Aggregationsebene (und zwar auf Basis der Objekte der nullten Aggregationsebene).

Jedes Objekt jeder Aggregationsebene trägt eine eindeutige Kennung.

Unter einer eindeutigen Kennung wird allgemein eine Information verstanden, die mit dem Objekt verknüpft ist, und durch die ein Objekt eindeutig identifiziert werden kann. Auch wenn zwei Objekte von einem Benutzer als „gleich", d.h. austauschbar angesehen werden, lassen sie sich aufgrund ihrer unterschiedlichen Kennungen voneinander unterscheiden. In der Regel handelt es sich bei der Kennung um einen (alpha-)numerischen Code und/oder eine maschinell lesbare Repräsentation eines (alpha-)numerischen Codes. Im Beispiel der Figur 2 tragen die Objekte die eindeutigen Kennziffern 1 , 2, 3, 4, 5 und 6 als eindeutige Kennungen. Weitere Beispiele für Kennungen sind im nachfolgenden Text beispielhaft aufgeführt.

In Figur 2 sind die Kind-Objekte 3, 4 und 5 zu einem Vater-Objekt 2 zusammengefasst. Ferner sind die Objekte 2 und 6 zu einem Vater-Objekt 1 zusammengefasst. Die Objekte der untersten (nullten) Aggregationsebene sind somit reine Kind-Objekte, während die Objekte in der obersten Aggregationsebene (hier das Top-Element 1) reine Vater-Objekte sind.

Bei einer Anzahl n von Aggregationsebenen gibt es demnach eine unterste Ebene und (n-1) höhere Ebenen. Von den (π-l) höheren Aggregationsebenen ist die höchste Aggregationsebene die oberste Aggregationsebene. Die Objekte der obersten Aggregationsebene werden hier auch als Top- Elemente bezeichnet. Zwischen der untersten und der obersten Aggregationsebene liegen (n-2) weitere Aggregationsebenen.

Die in der untersten Aggregationsebene vorliegenden Objekte sind reine Kind-Objekte. Die Objekte der obersten Aggregationsebene sind reine Vater-Objekte. Es ist denkbar, dass auf der obersten Aggregationsebene nur ein Vater-Objekt vorhanden ist (ein Top-Element). Es ist aber auch denkbar, dass auf der obersten Aggregationsebene mehrere Vater-Objekte vorliegen (mehrere Top-Elemente). Alle Objekte in Aggregationsebenen zwischen der untersten und der obersten Aggregationsebene sind sowohl Kind- als auch Vater-Objekte.

Wie bereits beschrieben, kann es sich bei dem mindestens einen Top-Element auch um ein logisches Element handeln, d.h. um eine reine eindeutige Kennung. Während die Objekte in der Regel physische Objekte sind, ist es also denkbar, dass in der obersten Aggregationsebene mehrere (physische) Objekte nicht zu einer höheren physischen Einheit zusammengefasst sind, sondern lediglich durch eine gemeinsame eindeutige Kennung miteinander logisch verbunden/verknüpft sind. Sowohl auf der Sender- als auch auf der Empfängerseite werden ein oder mehrere Hash-Codes erzeugt, in denen die komplette Hierarchie der übermittelten Objekte kondensiert ist.

Der Hash-Code wird auf Basis der eindeutigen Kennungen der übermittelten Objekte und auf Basis der vorliegenden Hierarchie erzeugt. In den Hash-Code fließt also sowohl die Information ein, welche Objekte übermittelt wurden (eindeutige Kennungen), als auch in welchen hierarchischen Beziehungen die Objekte zueinander stehen (Hierarchie).

Wird also beispielsweise bei der Übermittlung der Objekte vom Sender an den Empfänger ein falsches Objekt übertragen, liegen beim Sender und beim Empfänger unterschiedliche Kennungen für das jeweilige Objekt vor und der vom Sender erzeugte Hash-Code stimmt nicht mit dem vom Empfänger erzeugten Hash-Code überein. Wird beispielsweise bei der Übermittlung der Objekte vom Sender an den Empfänger ein Objekt vergessen, so liegen beim Sender und beim Empfänger unterschiedliche Hierarchien vor und der vom Sender erzeugte Hash-Code stimmt nicht mit dem vom Empfänger erzeugten Hash-Code überein.

Damit repräsentiert der Hash-Code für die übermittelten Objekte die gesamte Information über die übermittelten Objekte und ihre Beziehungen zueinander. Kennt der Empfänger alle beteiligten Objekte (zum Beispiel, weil sie ursprünglich von ihm versandt worden sind), genügt es, anstelle aller Kennungen der übermittelten Objekte nur den Hash-Code des mindestens einen Top-Elements zwischen Sender und Empfänger zu übertragen, um mittels Vergleich mit dem selbst erzeugten Hash-Code entscheiden zu können, ob die Übermittlung vollständig und richtig war. Dadurch müssen weniger Daten zwischen Sender und Empfänger transferiert werden und es müssen weniger Vergleiche durchgeführt werden.

Das erfindungsgemäße Verfahren kann zur Synchronisierung der IT-Systeme eines Senders und eines Empfängers in Bezug auf Daten über eine Hierarchie von Objekten, die von dem Sender an 0

- o - den Empfänger übermittelt worden sind, eingesetzt werden. Dabei umfasst das erfindungsgemäße Verfahren die Schritte:

Übermitteln der Objekte durch den Sender an den Empfänger,

Übermitteln von Informationen über die übermittelten Objekte vom Sender an den Empfänger, wobei die Informationen die eindeutigen Kennungen der übermittelten Objekte und die hierarchischen Beziehungen zwischen den übermittelten Objekten umfasst,

Erzeugen eines Hash-Codes für jedes Objekt der obersten Aggregationsebene durch den Sender und durch den Empfänger, wobei der Hash-Code auf Basis der Kennungen der übermittelten Objekte und auf Basis der hierarchischen Beziehungen zwischen den übermittelten Objekten erzeugt wird,

Vergleich des oder der vom Sender erzeugten Hash-Codes mit dem oder den vom Empfänger erzeugten Hash-Code(s).

Der Vergleich der Hash-Codes dient der Synchronisation der IT-Systeme von Sender und Empfänger. Dabei erfolgt ein solcher Vergleich zu unterschiedlichen Anlässen, von denen einige nachfolgend skizziert werden.

Ein möglicher Anlass ist die Verifikation von übermittelten Aggregationsdaten.

Zu diesem Anlass übermittelt ein Sender in einem ersten Schritt Objekte, die in mindestens zwei Aggregationsebenen vorliegen, an einen Empfänger. Zudem übermittelt der Sender die Informationen über die übermittelten Objekte inklusive der vorliegenden Hierarchie an den Empfänger in einer oder in mehreren, vorzugsweise elektronischen Nachrichten. Diese Informationen werden hier auch als Aggregationsdaten bezeichnet.

Der Sender erzeugt einen Hash-Code pro Vater-Objekt, in dem die Aggregationsdaten kondensiert sind. Der Empfänger empfängt die (vorzugsweise elektronischen) Nachrichten vom Sender und speist sie in sein IT-System ein. Daneben empfängt er die vom Sender übermittelten Objekte.

Um nun zu prüfen, ob er alle Nachrichten korrekt erhalten hat, erzeugt er ebenfalls einen Hash- Code pro Vater-Objekt, in dem die Aggregationsdaten kondensiert sind.

Durch Vergleich der vom Sender für die Top-Elemente erzeugten Hash-Codes mit den vom Empfänger für die Top-Elemente erzeugten Hash-Codes lässt sich erkennen, ob alle Nachrichten vom Sender beim Empfänger korrekt angekommen sind.

Dabei kann der Sender die von ihm erzeugten Hash-Codes für die Top-Elemente an den Empfänger übermitteln und der Empfänger den Vergleich ausführen, oder der Empfänger die von ihm erzeugten Hash-Codes für die Top-Elemente an den Sender übermitteln und der Sender den Vergleich ausführen, oder sich der Sender und der Empfänger die erzeugten Hash-Codes für die Top-Elemente gegenseitig zur Verfügung stellen, damit beide den Vergleich durchführen können.

Das genannte Verfahren lässt sich wie folgt zusammenfassen:

Verifikation von übermittelten Aggregationsdaten, umfassend durch die folgenden Schritte: - Übermitteln von Objekten durch einen Sender an einen Empfänger, wobei die Objekte in mindestens zwei Aggregationsebenen, einer untersten Aggregationsebene, einer obersten Aggregationsebene und optional weiteren Aggregationsebenen zwischen der untersten und der obersten Aggregationsebene vorliegen, und wobei jedes Objekt über eine eindeutige Kennung verfügt,

Übermitteln von Informationen über die übermittelten Objekte vom Sender an den Empfänger, wobei die Informationen die eindeutigen Kennungen der übermittelten Objekte und die hierarchischen Beziehungen zwischen den übermittelten Objekten umfasst, - Erzeugen eines Hash-Codes für jedes Objekt der obersten Aggregationsebene durch den Sender und durch den Empfänger, wobei der Hash-Code auf Basis der Kennungen der übermittelten Objekte und auf Basis der hierarchischen Beziehungen zwischen den übermittelten Objekten erzeugt wird, - Vergleich des vom Sender erzeugten Hash-Codes mit dem vom Empfänger erzeugten Hash- Code.

Ein weiterer möglicher Anlass ist die Bestätigung des Erhalts von Objekten.

Zu diesem Anlass übermittelt ein Sender in einem ersten Schritt Objekte, die in mindestens zwei Aggregationsebenen vorliegen, an einen Empfänger. Alle Objekte tragen eine eindeutige Kennung.

Der Sender erzeugt einen oder mehrere Hash-Codes für die übermittelten Objekte, wobei in die Erzeugung der Hash-Codes die eindeutigen Kennungen der Objekte sowie ihre hierarchischen Beziehungen zueinander einfließen (oder der Sender erzeugt die entsprechenden Hash-Codes vor der Übermittlung der Objekte). Der Empfänger empfängt die Objekte und erzeugt anhand der eindeutigen Kennungen und der hierarchischen Beziehungen der Objekte zueinander ebenfalls einen oder mehrere Hash-Codes.

Der Empfänger bestätigt den Erhalt der Objekte dadurch, dass er den oder die erzeugten Hash- Codes an den Sender übermittelt. Durch Vergleich der vom Sender und vom Empfänger erzeugten Hash-Codes kann der Sender erkennen, ob alle Objekte beim Empfänger angekommen sind.

Denkbar ist aber auch, dass der Sender den oder die von ihm erzeugten Hash-Codes an den Empfänger übermittelt, damit der Empfänger erkennen kann, ob alle Objekte, die der Sender übermittelt hat, auch korrekt beim Empfänger angekommen sind.

Denkbar ist ferner, dass sich Sender und Empfänger die erzeugten Hash-Codes gegenseitig zur Verfügung stellen.

Das genannte Verfahren lässt sich wie folgt zusammenfassen:

Überprüfung der korrekten Übermittlung von Objekten von einem Sender an einen Empfänger, umfassend die folgenden Schritte:

Bereitstellen von Objekten, wobei jedes Objekt eine eindeutige Kennung trägt, und sich mehrere Objekte (Kind-Objekte) in mindestens einer Aggregationsebene zu mindestens einem übergeordneten Top-Element zusammenfassen lassen,

Übermitteln der Objekte von dem Sender an den Empfänger,

- Erzeugen eines Hash-Codes für das mindestens eine Top-Element auf Basis der Kennungen der Objekte und auf Basis der Hierarchie der Objekte in den Aggregationsebenen durch den Sender und durch den Empfänger,

Vergleich des vom Sender erzeugten Hash-Codes mit dem vom Empfänger erzeugten Hash- Code. Ein weiterer möglicher Anlass ist die Übermittlung eines veränderten Objektbestands.

In einem ersten Schritt übermittelt ein Sender Objekte, die in mindestens zwei Aggregationsebenen vorliegen, an einen ersten Empfänger. Alle Objekte tragen eine eindeutige Kennung.

Sowohl der Sender als auch der erste Empfänger bilden in ihrem jeweiligen IT-System ab, dass die Objekte nun beim Empfänger sind. Der erste Empfänger leitet einen Teil der Objekte (wobei „ein Teil der Objekte" auch „alle Objekte" bedeuten kann), an einen zweiten Empfänger.

Der erste Empfänger und/oder der zweite Empfänger erzeugen für die weiter geleiteten Objekte einen oder mehrere Hash-Codes, wobei die Hash-Codes auf Basis der eindeutigen Kennungen der weitergeleiteten Objekte und auf Basis der hierarchischen Beziehungen der Objekte zueinander erzeugt werden.

Der erste Empfänger und/oder der zweite Empfänger übermitteln die erzeugten Hash-Codes für die Top-Elemente zusammen mit den Kennungen der Top-Elemente an den Sender. Der Sender erzeugt für die Top-Elemente ebenfalls die entsprechenden Hash-Codes. Stimmen die Hash-Codes n überein, ist sichergestellt, dass die bisherige Aggregation beim Sender aktuell noch gültig ist und er kann über seinen eigenen Datenbestand alle beteiligten Objekte ermitteln, die an den zweiten Empfänger weitergeleitet worden sind, und er kann sein IT-System entsprechend aktualisieren, da nun ein Teil des Objektbestands nicht mehr beim ersten Empfänger lagert sondern beim zweiten Empfänger. Weichen die Hash-Codes ab, weiß der Sender, dass die Informationen zwischen ihm und dem ersten Empfänger nicht mehr synchron sind und kann entsprechende Schritte einleiten, um die Synchronität wiederherzustellen.

Das genannte Verfahren lässt sich wie folgt zusammenfassen:

Übermittlung eines veränderten Objektbestands, in dem ein erster Empfänger einen Teil von Objekten, die der erste Empfänger von einem Sender erhalten hat, an einen zweiten Empfänger weiterleitet, wobei jedes weitergeleitete Objekt eine eindeutige Kennung trägt, wobei die weitergeleiteten Objekte in mindestens zwei Aggregationsebenen, einer untersten Aggregationsebene, einer obersten Aggregationsebene und optional weiteren Aggregationsebenen zwischen der untersten und der obersten Aggregationsebene vorliegen, dadurch gekennzeichnet, dass der erste Empfänger für jedes weitegeleitete Objekt der obersten Aggregationsebene einen Hash-Code erzeugt, wobei der Hash-Code auf Basis der Kennungen der weitergeleiteten Objekte und auf Basis der hierarchischen Beziehungen zwischen den weitergeleiteten Objekten erzeugt wird, und der erste Empfänger oder der zweite Empfänger die erzeugten Hash-Codes an den Sender übermittelt.

Ein weiterer Gegenstand der vorliegenden Erfindung ist ein Computerprogrammprodukt, das in den Arbeitsspeicher eines Computers geladen werden kann und Compute rogrammabschnitte umfasst, die den Computer dazu veranlassen, für eine Hierarchie von eindeutigen Kennungen von Objekten einen Hash-Code auf Basis der eindeutigen Kennungen der Objekte und auf Basis der hierarchischen Beziehungen der Objekte zueinander zu berechnen.

Die Erfindung wird nachstehend näher erläutert, ohne zwischen den Erfindungsgegenständen (Verfahren, Computerprogrammprodukt) zu differenzieren. Die nachfolgenden Erläuterungen sollen vielmehr für alle Erfindungsgegenstände in analoger Weise gelten, unabhängig davon, in welchem Kontext (Verfahren, Computerprogrammprodukt) sie erfolgen. Es zeigen:

Fig. 1 : Ein Beispiel für eine Hierarchie mit verschiedenen Verpackungsstufen.

Fig. 2.: Ein Beispiel für eine verallgemeinerte Hierarchie von Objekten mit drei Aggregationsebenen. Fig. 3: Ein Beispiel für die Erzeugung von Hash-Codes nach einem bevorzugten erfindungsgemäßen Verfahren.

Ein zentraler Punkt der vorliegenden Erfindung stellt die Erzeugung eines oder mehrerer hierarchischer Hash-Codes dar. In die Erzeugung eines hierarchischen Hash-Codes fließen sowohl die Kennungen der übermittelten Objekte als auch ihre hierarchischen Beziehungen zueinander wie nachfolgend beschriebenen ein.

Es wird eine Hierarchie von Objekten übertragen, d.h. mehrere Objekte, die in mindestens zwei Aggregationsebenen vorliegen.

In der obersten Aggregationsebene gibt es mindestens ein Top-Element (das mindestens eine Top- Element). In der nullten Aggregationsebene befinden sich reine Kind-Objekte mit ihren eindeutigen Kennungen.

Mindestens ein Kind-Objekt in der nullten Aggregationsebene ist einem Vater-Objekt in der ersten Aggregationsebene zugeordnet.

Für jedes Vater-Objekt in der Hierarchie wird ein Hash-Code erzeugt. Der Prozess zur Erzeugung der Hash-Codes startet vorzugsweise für ein Vater-Objekt in der ersten Aggregationsebene. Es wird zunächst ermittelt, welche Kind-Objekte diesem Vater-Objekt zugeordnet sind (natürlich kann der Prozess prinzipiell auch aus Sicht der Kind-Objekte in der nullten Aggregationsebene erfolgen: es wird ermittelt, welche Kind-Objekte in einer höheren Aggregationsebene zu einem Vater-Objekt zusammengefasst sind; nachfolgend wird der Prozess aus anschaulichen Gründen jedoch aus Sicht der Vater-Objekte beschrieben).

In den Hash-Code fließen die Kennungen der Objekte ein. Also werden alle Kennungen derjenigen Kind-Objekte in der nullten Aggregationsebene ermittelt und aufgelistet, die zu einem Vater- Objekt in der ersten Aggregationsebene gehören. Zusätzlich wird auch die Kennung des Vater- Objekts ermittelt. Dann wird ein erster Hash-Code erzeugt, in den die Kennungen der Kind- Objekte und die Kennung des Vater-Objekts einfließen.

Bekanntlich ist die Hash-Code-Erzeugung inputsensitiv und damit abhängig von der Reihenfolge der Kennungen, die in die Erzeugung des Hash-Codes einfließen. Um die Vergleichbarkeit sicherzustellen, wird für die eindeutigen Kennungen der zugehörigen Kinder zunächst (vorzugsweise mittels einer Sortierfunktion) eine eindeutige Reihenfolge hergestellt. Die Vater- Kennung wird dabei vorzugsweise nicht in der Sortierung berücksichtigt, sondern vorzugsweise an erster Stelle übergeben. Es ist aber auch denkbar, die Vater-Kennung ans Ende der Reihenfolge zu stellen oder die Kennungen der beteiligten Objekte ineinander zu verschachteln. Wichtig ist, dass die Reihenfolge definiert ist, und dass Sender und Empfänger sich über die Art und Weise, wie der Hash-Code erzeugt wird, vorab verständigt haben.

Vorzugsweise werden Sortierfunktionen eingesetzt, um eine definierte Reihenfolge der Kennungen der beteiligten Objekte zu erzeugen. Sortierfunktionen oder auch Sortierverfahren sind Algorithmen, die dazu dienen, ein Tupel zu sortieren. Handelt es sich bei den zu sortierenden Daten um Wörter, so kann eine Sortierung nach dem Alphabet erfolgen, wie es beispielsweise in einem Lexikon der Fall ist. Handelt es sich bei den zu sortierenden Daten um Zahlen, kann die Sortierung anhand ihres numerischen Werts (von der niedrigsten Zahl bis zur höchsten Zahl oder umgekehrt) erfolgen. Alphanumerische Zeichenketten können beispielsweise auf Basis des ASCII- oder ANSI- Codes sortiert werden.

Sind die Kennungen der zugehörigen Kinder in eine eindeutige Reihenfolge gebracht und ist die Kennung des entsprechenden Vater-Objekts dieser Reihenfolge z.B. vorangestellt oder nachgestellt, wird die so erzeugte Kette an Daten dem Hash-Algorithmus übergeben.

Das Ergebnis ist ein erster Hash-Code für ein erstes Vater-Objekt in der ersten Aggregationsebene, in den die Kennung des Vater-Objekts, die Kennungen der dazugehörigen Kind-Objekte und die hierarchische Beziehung zwischen den Objekten zueinander eingeflossen sind.

Falls es weitere Vater-Objekte in der ersten Aggregationsebene gibt, werden für alle weiteren Väter der ersten Aggregationsebene die entsprechenden Hash-Codes auf Basis der eigenen sowie der eindeutigen Kennungen der zugehörigen Kind-Objekte der nullten Aggregationsebene gebildet. Man erhält damit für jedes Vater-Objekt in der ersten Aggregationsebene einen (eindeutigen) Hash- Code.

Gibt es eine oder mehrere weitere Aggregationsebenen oberhalb der ersten Aggregationsebene, wird der Prozess fortgesetzt. Es wird ein beliebiges Vater-Objekt in der zweiten Aggregationsebene herausgegriffen und es wird der Hash-Code für dieses Vater-Objekt auf Basis der eigenen Kennung und auf Basis von Informationen zu den dazugehörigen Kind-Objekten in einer oder mehreren tieferen Aggregationsebenen erzeugt. Im Unterschied zu den Vater-Objekten der ersten Aggregationsebene wird der Hash-Code für die Vater-Objekte der zweiten (und jeder weiteren) Aggregationsebene aber auf Basis der für die dazugehörigen Kind-Objekte (die ja ihrerseits auch Vater-Objekte sind) erzeugten (eindeutigen) Hash-Codes erzeugt (nicht auf Basis der Kennungen der Kind-Objekte). Dies ist beispielsweise in Figur 3 veranschaulicht (siehe hierzu auch die Beschreibung zur Fig. 3 weiter unten).

Auch im Fall der Erzeugung eines Hash-Codes für ein Vater-Objekt auf Basis seiner Kennung und der Hash-Codes der zugehörigen Kind-Objekte erfolgt vor Anwendung der Hash-Funktion eine eindeutige Reihung (z.B. mittels Sortierung) der Hash-Codes der Kind-Objekte.

Der Prozess setzt sich innerhalb der vorliegenden Hierarchie von unten nach oben fort, bis für jedes Vater-Objekt ein entsprechender Hash-Code erzeugt worden ist. Zuletzt wird der Hash-Codes für das mindestens eine Top-Element erzeugt (falls mehrere Top-Elemente vorhanden sind, wird für jedes Top-Element ein Hash-Code erzeugt). Daraus ergibt sich verallgemeinert die folgende Traversierung durch den Aggregationsbaum: Seien K die Kinder eines Vaters V, so ergibt sich eine post-order Traversierung der Form K-V mit Ausgangspunkt bei den Top-Elementen. Durch den rekursiven Durchlauf wird sichergestellt, dass zuerst alle Hash- Werte der unterliegenden Aggregationsebenen ermittelt werden.

Das Besondere an dem Hash-Code eines Vater-Objekts ist, dass er die gesamte Hierarchie unterhalb des Vater-Objekts und die Zuordnung zum Vater-Objekt selbst widerspiegelt.

Durch eine Änderung der Hierarchie, zum Beispiel durch das Entfernen eines Kind-Objektes, ändert sich der Hash-Code H des Vater-Objekts, in den die Kennung des Kind-Objekts (oder der Hash-Code des Kind-Objekts, wenn das Kind-Objekt seinerseits ein Vater-Objekt ist) eingeflossen ist. Damit ändert sich aber auch der Hash-Code H2 des Vater-Objekts in der nächsthöheren Aggregationsebene, in den der Hash-Code Hi eingeflossen ist, und so fort.

Der Hash-Code eines Vater-Objekts repräsentiert damit die gesamte darunter liegende Hierarchie. Um zu prüfen, ob Objekte, die von einem Sender an einen Empfänger übermittelt worden sind, auch korrekt übermittelt worden sind, ist es erfindungsgemäß nicht erforderlich, für jedes einzelne Objekt eine Kennung zur Prüfung zurückzuschicken. Es reicht, die Hash-Codes der obersten Aggregationsebene zu vergleichen (die Hash-Codes der Top-Elemente). Stimmen sie überein, so sind alle Objekte, die vom Sender verschickt worden sind, auch beim Empfänger angekommen bzw. alle Änderungen in der Hierarchie verifiziert. Stimmen sie nicht überein, so ist der Versand fehlerhaft und die Fehlersuche kann beginnen. Bei dieser Fehlersuche kann man die Hash-Codes der nächstniedrigeren Aggregationsebene vergleichen. Bei allen Hash-Codes, die übereinstimmen, sind die Aggregate korrekt übermittelt worden. Bei allen Hash-Codes, die nicht übereinstimmen, sind ein oder mehrere Objekte nicht oder mit einer anderen Kennung übermittelt worden. Denkbar ist auch, dass Objekte übermittelt worden sind, die der Sender nicht erfasst hat. Der Vergleich der Hash-Codes wird„nach unten" (von den obersten in Richtung der untersten Aggregationsebene) so lange fortgesetzt, bis alle richtig übersandten Aggregate und Objekte sowie alle Fehler ermittelt worden sind. Das beschriebene, bevorzugte, erfindungsgemäße Verfahren zur Erzeugung der hierarchischen Hash-Codes lässt sich wie folgt zusammenfassen:

Bereitstellen einer Hierarchie von Objekten in mindestens zwei Aggregationsebenen, einer untersten Aggregationsebene und einer obersten Aggregationsebene und optional weiteren Aggregationsebenen zwischen der untersten und der obersten Aggregationsebene, wobei jedes Objekt eine eindeutige Kennung trägt, wobei Objekte, die zu einem Objekt in einer höheren Aggregationsebene zusammengefasst sind, als Kind-Objekte bezeichnet werden, wobei Objekte, zu denen Kind-Objekte einer niedrigeren Aggregationsebene gehören, als Vater-Objekte bezeichnet werden,

Übermitteln der Objekte von einem Sender an einen Empfänger,

Erzeugen von Hash-Codes für jedes Vater-Objekt auf Basis der dazugehörigen Kind-Objekte durch den Sender und durch den Empfänger, wobei die Erzeugung eines Hash-Codes auf Basis der eindeutigen Kennungen des Vater-

Objekts und a. ) auf Basis der eindeutigen Kennungen der zugehörigen Kind-Objekte erfolgt, wenn die

Kind-Objekte in der untersten Aggregationsebene vorliegen,

b. ) auf Basis der für die Kind-Objekte erzeugten Hash-Codes erfolgt, wenn die Kind- Objekte in einer Aggregationsebene oberhalb der untersten Aggregationsebene vorliegen, wobei vor Erzeugen eines Hash-Codes die in die Erzeugung des Hash-Codes einfließenden Kennungen und einfließenden Hash-Codes in eine definierte Reihenfolge gebracht werden,

Vergleichen der von Sender und Empfänger erzeugten Hash-Codes der Objekte einer oberen Aggregationsebene, vorzugsweise der obersten Aggregationsebene.

Figur 3 zeigt beispielhaft die bevorzugte Erzeugung der Hash-Codes für alle Objekte in einer Hierarchie. MLHC steht dabei für„Multi Level Hierarchy Code" und bezeichnet den erzeugten hierarchischen Hash-Code.

In der untersten (nullten) Aggregationsebene befinden sich sechs einzelne Objekte. Sie tragen zur vereinfachten Veranschaulichung nur eine Ziffer als eindeutige Kennung. Das in der untersten Ebene von links nach rechts gesehen erste Objekt trägt die eindeutige Kennung 1. Das von links nach rechts gesehen nächste Objekt trägt die eindeutige Kennung 2. Es folgend die Objekte mit den eindeutigen Kennungen 4, 3, 8 und 9. , ,

- 16 -

Die Objekte mit den Kennungen 1 und 2 sind in der ersten Aggregationsebene zu einem Aggregat zusammengefasst. Dieses Aggregat trägt ebenfalls eine eindeutige Kennung, die Ziffer 5. Ebenso sind die Objekte mit den Kennungen 3 und 4 zu einem Aggregat mit der Ziffer 6 zusammengefasst.

Die Objekte mit den Kennungen 8 und 9 sind in der Ebene 2 zu einem Aggregat 10 zusammengefasst.

Die Aggregate 5 und 6 sind zu einem Aggregat 7 in der nächsthöheren Aggregationsebene zusammengefasst. Die Aggregate 7 und 10 sind zu einem Aggregat 11 in der obersten Aggregationsebene zusammengefasst. Objekt 11 ist somit das Top-Element der Hierarchie.

Vergleicht man die Hierarchie 11 -> 7 -> (5, 6) -> (1, 2) mit der Hierarchie 11 -> 10 -> (8, 9), so erkennt man, dass die Hierarchie 11 -> 7 -> (5, 6) -> (1, 2) über eine Aggregationsebene mehr verfügt als die Hierarchie 11 -> 10 -> (8, 9). Dies ist jedoch unerheblich. Das erfindungsgemäße Verfahren erfasst auch solche gemischten Hierarchien.

Die Hash-Code-Erzeugung beginnt mit einem Aggregat in der ersten Aggregationsebene. Dies ist im Fall der Hierarchie 11 -> 7 -> (5, 6) -> (1, 2) das Aggregat 5 oder das Aggregat 6. Der Hash- Code MLHC(5) des Aggregats 5 wird auf Basis seiner eigenen Kennung (5) sowie der Kennungen 1 und 2 erzeugt. Der Hash-Code MLHC(6) des Aggregats 6 wird auf Basis seiner eigenen Kennung (6) sowie der Kennungen 3 und 4 erzeugt. Vor Erzeugung der Hash-Codes werden die Kennziffern (Kennungen) aufsteigend sortiert. Zur Veranschaulichung der Sortierreihenfolge befindet sich Objekt 4 links von Objekt 3; in der sortierten Reihenfolge befindet sich die Kennziffer 3 hingegen links von der Kennziffer 4: MLHC(6) = hash(6, 3, 4).

Den sortierten Kennziffern der Kinder ist die Kennung des Vaters jeweils vorangestellt.

Der Hash-Code MLHC(7) des Aggregats 7 wird auf Basis seiner eigenen Kennung (7) und der Hash-Codes MLHC(5) und MLHC(6) erzeugt.

Der Hash-Code MLHC(10) des Aggregats 10 wird auf Basis seiner eigenen Kennung und der Kennungen 8 und 9 erzeugt.

Der Hash-Code MLHC(l l) des Aggregats 11 wird auf Basis seiner eigenen Kennung und der Hash-Codes MLHC(7) und MLHC(10) erzeugt.

Für die Erfindung ist es unerheblich, wer den Vergleich der Hash-Codes vornimmt.

In einer Ausführungsform quittiert der Empfänger den Empfang der Objekte vom Sender dadurch, dass der Empfänger den oder die erzeugten Hash-Codes der obersten Aggregationsebene an den Sender übermittelt. Der Sender vergleicht den oder die vom Empfänger erzeugten Hash-Codes mit den entsprechenden Hash-Codes, die der Sender selbst erzeugt hat. In einer anderen Ausführungsform übermittelt der Sender die Objekte und die entsprechenden erzeugten Hash-Codes. Der Empfänger erzeugt seinerseits die Hash-Codes und prüft durch Vergleich der selbst erzeugten Hash-Codes mit den übermittelten Hash-Codes, ob alle Objekte übermittelt (Vollständigkeit) und ob die richtigen Objekte übermittelt (Richtigkeit) worden sind. In einer anderen Ausführungsform übermitteln sich Sender und Empfänger gegenseitig die erzeugten Hash-Codes. Beide sind in der Lage, einen Vergleich der Hash-Codes vorzunehmen und synchronisieren auf diese Weise ihre IT-Systeme.

Die vorliegende Erfindung lässt sich prinzipiell für beliebige Objekte einsetzen. Die Objekte können physische Objekte oder digitale Objekte sein. Beispiele für digitale Objekte sind Text-Dateien, Bild-Dateien, Musik-Dateien, Video-Dateien und dergleichen, deren Hierarchie durch die Ordnerstuktur oder andere logische Top-Elemente gegeben ist. Beispiele für physische Objekte sind Waren. Auch Lebewesen wie Pflanzen, Tiere und Menschen können Objekte im Sinne der vorliegenden Erfindung sein.

In einer bevorzugten Ausführungsform handelt es sich bei den Objekten um physische (d.h. körperliche oder auch fassbare) Objekte. Bevorzugte physische Objekte sind Waren.

Unter dem Begriff Ware werden bewegliche Sachen verstanden, die Gegenstand des Handelsverkehrs sind oder sein können. Bevorzugte Waren im Sinne der vorliegenden Erfindung sind solche, bei denen eine RückVerfolgbarkeit durch staatliche Behörden und/oder per Gesetz gefordert ist. Besonders bevorzugte Waren sind pharmazeutische Produkte (Arzneimittel, Medikamente, Diagnostika und andere).

Waren liegen im Handelsverkehr üblicherweise in verschiedenen Aggregationsebenen vor. Dies sei am Beispiel eines Medikaments verdeutlicht. Die kleinste Einheit, in der Medikamente üblicherweise im Handelsverkehr weitergereicht werden, ist eine Medikamentenschachtel, in der das Medikament (z.B. ein Blister mit darin enthaltenden Tabletten) zusammen mit einem Beipackzettel gelagert ist. Die Medikamentenschachtel ist üblicherweise eine Faltschachtel aus Karton. Im Handelsverkehr werden jedoch keine einzelnen Medikamentenschachteln vom Hersteller zu einer Vertriebsstation oder von einer Vertriebsstation zur nächsten Vertriebsstation transportiert. Stattdessen werden mehrere Medikamentenschachteln zum Beispiel in einem Versandkarton zusammengefasst.

Einzelne Medikamentenschachteln können als nullte Aggregationsebene aufgefasst werden, ein Bündel aus Medikamentenschachteln kann als erste Aggregationsebene aufgefasst werden. Prinzipiell könnte man die einzelnen Tabletten, die in einem Blister zusammengefasst sind, bereits als erste Aggregationsebene verstehen. Da aber Medikamente im Handelsverkehr üblicherweise . 0

- lo

nicht in Form einzelner Tabletten vertrieben werden, ist es sinnvoller, zum Beispiel den Versandkarton als erste Aggregationsebene zu definieren. Im Weiteren wird beispielhaft der Versandkarton als erste Aggregationsebene aufgefasst, ohne dabei das Verfahren zu beschränken.

Die Versandkartons aus zusammengefassten Medikamentenschachteln können wiederum zu einer höheren Aggregationseinheit zusammengefasst werden. Zum Beispiel können mehrere Versandkartons auf einer Palette gelagert werden. Die Palette stellt damit eine weitere Aggregationseinheit in einer weiteren Aggregationsebene dar.

Erfindungsgemäß sind die einzelnen Waren auf allen Aggregationsebenen mit einer eindeutigen Kennung versehen. Das bedeutet, dass auch die kleinste, im Handelsverkehr als Einheit auftretende Ware eine Kennung trägt, die sie von anderen Einheiten unterscheidet. Auf den Fall der Medikamentenschachteln angewandt bedeutet das, dass eine Medikamentenschachtel eine eindeutige Kennung trägt, die sie von einer zweiten Medikamentenschachtel unterscheidet.

Unter Kennung wird dabei vorzugsweise eine Folge von Zeichen und/oder Ziffern verstanden, die prinzipiell der maschinellen Datenverarbeitung zugänglich gemacht werden kann. Vorzugsweise ist die Kennung eine maschinenlesbare Repräsentation einer Folge von Zeichen und/oder Ziffern.

Eine Kennung könnte demnach eine Folge von Ziffern sein. Die Ziffernfolge einer ersten Ware unterscheidet sich von der Ziffernfolge einer zweiten Ware, während die erste und zweite Ware von einem Ver- oder Gebraucher als austauschbar angesehen werden.

Die Kennung liegt vorzugsweise in einer Form vor, in der sie einer maschinellen Erfassung zugänglich ist. Ein Beispiel ist ein optisch lesbarer Code. Weit verbreitete Formen von optischen Codes sind Barcodes oder 2D-Codes. Beispiele für Barcodes sind„Codabar" und„Code 128"; Beispiele für 2D-Codes sind„Aztec Code",„Matrix Code" und„QR Code".

Ein optisch lesbarer Code ist üblicherweise auf der Verpackung der Ware aufgedruckt.

Die Kennung kann aber auch in dem Speicher eines RFID-Transponders gespeichert sein, der mit der Ware verbunden ist. Weitere Kennungen sind denkbar.

Zur eindeutigen Kennzeichnung (z.B. Serialisierung) der einzelnen Waren wird die Verwendung eines optisch lesbaren Codes als Kennung bevorzugt. Bevorzugt wird ein 2D-Code verwendet, besonders bevorzugt ist der 2D Matrix Code.

Neben den einzelnen Waren sind auch die Aggregationseinheiten der höheren Aggregationsebenen mit eindeutigen Kennungen (z.B. SSCC = Serial Shipping Container Code) versehen.

Waren durchlaufen üblicherweise mehrere Vertriebsstationen, bevor sie an ihren finalen Bestimmungsort gelangen. Im Fall der Medikamentenschachteln erfolgt der Vertrieb vom Hersteller über Großhändler und Zwischenhändler zu Ärzten, Krankenhäusern und Apotheken, bevor sie schließlich beim Patienten angelangen.

In einer solchen Vertriebskette gibt es damit eine erste Vertriebsstation (Sender) von der die Waren an eine zweite Vertriebsstation (Empfänger) transportiert werden. Bei der ersten Vertriebsstation kann es sich um einen Hersteller der Waren handeln. Es kann aber auch eine Firma sein, die die Waren verpackt. Auch ein Großhändler kann die erste Vertriebsstation im Sinne dieser Erfindung sein.

Auch der Transport von Waren innerhalb eines Unternehmens kann mittels des erfindungsgemäßen Verfahrens überprüft werden. In einem solchen Fall ist die erste Vertriebsstation (Sender) eine Abteilung innerhalb eines Unternehmens, von der Waren an eine andere Abteilung (Empfänger) desselben Unternehmens übermittelt werden.

Bevorzugt ist die erste Vertriebsstation die Organisation, die gesetzlichen oder behördlichen Bestimmungen hinsichtlich der RückVerfolgbarkeit der Waren unterliegt. Bevorzugt ist die erste Vertriebsstation also diejenige, die gegenüber einer Behörde oder anderen staatlichen Organisation nachweisen muss, von wo nach wo Waren transportiert worden sind.

Die zweite Vertriebsstation ist eine Vertriebsstation, die Waren in Empfang nimmt (Empfänger) und die sich in der Logistikkette hinter der ersten Vertriebsstation befindet. Es kann sich dabei um diejenige Vertriebsstation handeln, die in der Vertriebskette unmittelbar auf die erste Vertriebsstation folgt; es ist aber auch denkbar, dass sich zwischen der ersten und der zweiten Vertriebsstation eine oder mehrere weitere Vertriebsstationen befinden.

Die erste Vertriebsstation transportiert damit Waren an die zweite Vertriebsstation - entweder direkt oder über eine oder mehrere weitere Vertriebsstationen.

Die zweite Vertriebsstation nimmt die Waren in Empfang und erfasst die Waren. Unter Erfassung wird verstanden, dass alle eingegangenen Waren registriert werden. Dies geschieht üblicherweise durch Einlesen der Kennungen der höchsten Aggregationsebenen, wie zum Beispiel von den Paletten in ein Computersystem.

Im Fall von optischen Codes werden die einzelnen optischen Codes auf den Aggregationseinheiten und den einzelnen Waren mit Hilfe eines optischen Scanners eingelesen. Bei der Verwendung von RFID-Transpondern werden die Kennungen aller RFID-Transponder mit Hilfe eines entsprechenden Lesegeräts ausgelesen. Die ausgelesenen Daten werden in einem Computer-System erfasst und gespeichert.

Sowohl die erste als auch die zweite Vertriebsstation erzeugen die Hash-Codes zu den übermittelten Waren. Dazu werden die eindeutigen Kennungen der nullten Aggregationsebene (Medikamentenschachteln) ermittelt, vorzugsweise sortiert und einem Hash-Algorithmus 2Q zugeführt, der einen eindeutigen Hash-Code erzeugt. Liegen mehr als zwei Aggregationsebenen vor, werden die Hash-Codes der höheren Verpackungseinheiten auf Basis der Hash-Codes der dazugehörigen niederen Verpackungseinheiten erzeugt.

In einer Ausführungsform der vorliegenden Erfindung übermittelt die zweite Vertriebsstation dann eine Nachricht an die erste Vertriebsstation, um den Empfang der Waren zu bestätigen (diese Bestätigung kann zum Beispiel zum Nachweis im Sinne von Data Integrity herangezogen werden). Die Nachricht umfasst dabei nur den oder die Hash-Codes der obersten Aggregationsebene.

Die erste Vertriebsstation überprüft anhand der Nachricht, ob tatsächlich alle Waren, die an die zweite Vertriebsstation herausgegangen sind, dort auch eingetroffen sind. Dazu vergleicht sie den oder die von der zweiten Vertriebsstation übermittelten Hash-Code(s) mit dem/den entsprechenden selbst erzeugten Hash-Code(s). Stimmen sie überein, sind alle Daten vollständig und richtig bei der zweiten Vertriebsstation angekommen & verarbeitet worden. Diese Sicherheit im Zusammenhang mit der Inspektion der Unversehrtheit der äußeren Verpackung, zum Beispiel Schrumpffolie der Palette, lässt dann den Schluss zu, dass auch die Ware vollständig erhalten worden ist. Wie oben beschrieben ist es natürlich auch denkbar, dass die erste Vertriebsstation den oder die erzeugten Hash-Codes an die zweite Vertriebsstation übermittelt und die zweite Vertriebsstation den Vergleich vornimmt, oder, dass die erste und die zweite Vertriebsstationen sich die Hash- Codes gegenseitig zur Verfügung stellen, um ihre IT-Systeme zu synchronisieren.

Es ist denkbar, dass sich der Bestand der Objekte fortlaufend ändert und die jeweiligen Hash-Werte stets neu berechnet werden müssen, damit die im IT-System abgebildete Wirklichkeit auch mit der tatsächlichen Wirklichkeit übereinstimmt. Da die ständige Neu-Berechnung der Hash-Codes Ressourcen in Anspruch nimmt, wird die Neu-Berechnung der Hash-Codes in einer bevorzugten Ausführungsform der vorliegenden Erfindung nicht unmittelbar nach einer Bestandsänderung vorgenommen, sondern erst später, zum Beispiel nur einmal in der Stunde oder nur einmal am Tag oder erst, wenn ein bestimmtes Ereignis eintritt, zum Beispiel ein Objekt der Hierarchie eingescannt wird.

Damit in der Zwischenzeit jedoch kein falsches Abbild der Realität im IT-System existiert, werden alle diejenigen Hash-Codes, die neu berechnet werden müssen, weil sich in der Hierarchie unterhalb dieser Hash-Codes Änderungen ergeben haben, mit einem digitalen Hinweis versehen. Dieser Hinweis zeigt dem Benutzer des IT-Systems bzw. dem System selber an, dass der Hash- Code„veraltet", d.h. nicht mehr aktuell ist und daher für Vergleiche nicht verwendet werden kann. Nach einer Neu-Berechnung der veralteten Hash-Codes wird der Hinweis entfernt.