2016-05-13 22 views
0

Ich möchte eine bestimmte Ordnerstruktur von einer Instanz von Alfresco in eine andere kopieren.CMIS Besuchermuster zum Kopieren von Ordnerstruktur Multithread?

Diese Ordnerstrukturen enthält eine große Menge von Daten, die verschoben werden sollten, aber nur diese, die nicht älter als 30 Tage sind.

Ich dachte, ein Besuchermuster-basiertes Java-Tool zu implementieren, das durch die Ordnerstruktur iteriert. Wenn der Knoten besucht wurde, würde ich den Knoten sperren und vorwärts gehen, wenn er nicht besucht wurde, würde ich den Knoten zu der anderen Instanz kopieren.

Ist das eine gute Idee oder hat jemand andere Ideen oder Erfahrungen damit?

Grüße Kaffi

+1

Zunächst einmal, warum möchten Sie zu einer anderen Instanz "kopieren". Kannst du nicht einfach einen neuen contentStore erstellen, in dem du es ablegst, damit es immer noch im selben Alfresco ist? –

+0

Das Problem ist, wir müssen die Daten kopieren, die nicht älter als 1 Monat sind. Deshalb ist der klassische Weg keine Option ... – Kaffi

Antwort

1

CMIS nicht weiß, wie einen Ordner Knoten zu sperren. Es kann nur Dokumente auschecken.

Wenn Sie die cmis: objectId als Schlüssel und den Pfad als Wert verwenden, dann schreiben Sie für Ordner, die Ihren Kriterien entsprechen, das Schlüssel/Wert-Paar in einen Schlüssel/Wert-Speicher wie redis. Ich schlage etwas wie redis anstatt einer in-memory-Struktur wie eine hashmap vor, aufgrund Ihres Kommentars, dass Ihre Struktur riesig ist und dass mehrere Prozesse die Hierarchie durchqueren und nach Ordnungsknoten suchen, die Ihren Kriterien entsprechen.

Dann können Sie einen oder mehrere "Consumer" -Prozesse aus dem Schlüssel/Wert-Speicher lesen lassen und für jedes gefundene Objekt den Pfad verwenden, um die Ordnerstruktur im Ziel-Repo neu zu erstellen.

+0

Lieber Jeff Es ist Ehre, dass Sie meine Frage beantworten. Deine Idee klingt sehr interessant. Ist es möglich, ganze Ordnerstrukturen mit CMIS zu erstellen, wenn der Elternordner nicht existiert? Wenn die Bestellung in Redis nicht gut definiert ist? – Kaffi

+0

Ich habe vergessen zu erwähnen, dass ich auch Aspekte auf dem kopierten Knoten anwenden muss. Wenn eine bestimmte Bedingung festgelegt ist. – Kaffi

+0

Das ist kein Problem. Sie können die Aspekte beim Erstellen des Knotens hinzufügen. CMIS 1.1 unterstützt Aspekte nativ, aber in CMIS werden sie als "sekundäre Typen" bezeichnet. Ein weiteres Tool, das Sie sich ansehen können, um diese Anforderung zu erfüllen, ist Apache Camel mit der camel-cmis-Komponente. –