Sharepoint - Der Unterschied der Versionsbezeichnung zwischen Frontend und Datenhaltung

Bei einem grösseren Migrationsprojekt hatte ich eine interessante Aufgabenstellung im Bezug auf die Versionsbezeichnung von Dokumenten. Im Frontend und im Export-XML (Manifest.xml) werden diese in für Benutzer lesbarer Form als 0.1, 0.2 bzw. 1.0 angezeigt. Intern ist die Version dagegen als 1, 2 bzw. 512 abgelegt.

In einem ersten Schritt habe ich eine Metadatenschicht aufgebaut. Die Gründe hierfür sind:

  • Übersicht des zu erwarteten Aufwands bzw. Fortschritts
  • Intensive Tests
  • KPI's und Auswertungen für das Management
  • Analyse der Datenqualität

Die aufbereiteten Metadaten enthalten die sogenannte interne Version der Datenhaltung. Die Versionsbezeichnung der Sharepoint Content Deployment API enthält hingegen die Bezeichnung, wie sie der Benutzer sieht.

Tabellarisch gesehen sieht die Gegenüberstellung so aus:

FrontendversionInterne Version
0.11
0.22
1.0512
1.1513
2.01024

Der Aufbau dieser Versionen folgt einer Regel:

  • Hauptversionen steigen in 512-Schritten
  • Nebenversion fortlaufend

Mit dieser Information war ich in der Lage, das Ganze in einer Hilfsklasse zu packen, die in der Lage ist, die Konvertierung in die interne bzw. Frontendversion vorzunehmen.

Codebeispiel Konverter:


    public class SharepointVersionConverter
    {
        const int MainVersionIdentifier = 512;

        public static string GetSharepointVersionStringFromInternalVersion(int version)
        {
            return String.Format("{0}.{1}", version / MainVersionIdentifier, version % MainVersionIdentifier);
        }

        public static int GetSharepointInternalVersionFromString(string version)
        {
            if (String.IsNullOrEmpty(version))
                throw new ArgumentException("version is null or empty.", "version");

            var split = version.Split('.');

            if (split.Length != 2)
                throw new ArgumentException("Wrong version string");

            return Int32.Parse(split[0]) * MainVersionIdentifier + Int32.Parse(split[1]);
        }
    }

So habe ich jetzt die Möglichkeit, die interne Version aus den Metadaten mit der Frontendversion zu vergleichen, um so die Metadatenschicht aktualisieren zu können.

Weitere Informationen zum Thema:

  •  
  • 0 Kommentar(e)
  •  

Mein Kommentar

Ich möchte über jeden weiteren Kommentar in diesem Post benachrichtigt werden.

Zurück

Translate this page

Kategorien