none
eindeutiger Bezeichner der Dokumente in Sharepoint RRS feed

  • Frage

  • Hallo

    Ich entwickle gerade eine Schnittstelle zwischen unserer Standard-Software und Sharepoint 2013. So weit, so gut ;-) Ziel ist es, Dokumente in unserer Software zu verwalten, die dann im Hintergrund auf einer Sharepoint-Site-Collection gespeichert werden. In unserer Dokumenten-Tabelle (SQL Server-Datenbank) soll dann eine Art "ExternalDocumentId" abgespeichert werden, mit Hilfe derer das Dokument wieder von Sharepoint abgerufen werden kann. Die ExternalDocumentId stellt also die einzige Verbindung zwischen unserer SQL-Datenbank und dem Sharepoint-Dokument dar.

    Da dachte ich zuerst an das Document ID Feature von Sharepoint 2013. Das Problem dabei ist, dass diese ID's nur einmal am Tag, oder besser gesagt, zeitversetzt generiert werden. Wenn ich also das Dokument über die REST Schnittstelle gespeichert habe, existiert die Document ID für dieses Dokument noch nicht.

    Gibt es eine andere Möglichkeit einen eindeutigen Wert der Dokumente zu erhalten, womit ich dann wieder auf das Dokument in Sharepoint zugreifen kann?

    Besten Dank für die Hilfe!

    Gruss
    daprodigy

    Freitag, 27. März 2015 21:04

Antworten

  • Hi,
    soweit ich weiß, sind die Timerjobs dafür verantwortlich, beim Aktivieren oder Ändern der ID-Einstellungen die Bibliotheken zu "durchsuchen", um die ID's einzutragen. Nachdem die Timer-Jobs gelaufen sind, ist die neue ID nach jedem Hochladen sofort vergeben und sichtbar. Es ist möglich, dass mir da etwas entgangen ist.

    Es gibt aber weitere Fallstricke. Die ID ist nur eindeutig innerhalb einer Websitesammlung. Für unterschiedliche Websitesammlungen kann man unterschiedliche Identifikatoren festlegen.

    Ich würde das Problem - wie in Datenbankprojekten üblich - lösen, indem der Index primär ist und die Datenablage sekundär. Das bedeutet, das der Identifikator von der Indexverwaltung vergeben wird, d.h. von der Dokumenten-Tabelle (SQL Server-Datenbank) und jedes Dokument über den Inhaltstyp eine Metainformation bekommt, in der der vergebene Identifikator gespeichert wird. Damit wird der Identifikator auch unabhängig von der Websitesammlung. Im CAML beim Zugriff auf das Dokument kann dann über eine Bedingung der Inhaltstyp und der Wert der Eigenschaft geprüft werden und das Dokument unabhängig von seiner Ablage gefunden werden.


    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks

    Samstag, 28. März 2015 05:14

Alle Antworten

  • Hi,
    soweit ich weiß, sind die Timerjobs dafür verantwortlich, beim Aktivieren oder Ändern der ID-Einstellungen die Bibliotheken zu "durchsuchen", um die ID's einzutragen. Nachdem die Timer-Jobs gelaufen sind, ist die neue ID nach jedem Hochladen sofort vergeben und sichtbar. Es ist möglich, dass mir da etwas entgangen ist.

    Es gibt aber weitere Fallstricke. Die ID ist nur eindeutig innerhalb einer Websitesammlung. Für unterschiedliche Websitesammlungen kann man unterschiedliche Identifikatoren festlegen.

    Ich würde das Problem - wie in Datenbankprojekten üblich - lösen, indem der Index primär ist und die Datenablage sekundär. Das bedeutet, das der Identifikator von der Indexverwaltung vergeben wird, d.h. von der Dokumenten-Tabelle (SQL Server-Datenbank) und jedes Dokument über den Inhaltstyp eine Metainformation bekommt, in der der vergebene Identifikator gespeichert wird. Damit wird der Identifikator auch unabhängig von der Websitesammlung. Im CAML beim Zugriff auf das Dokument kann dann über eine Bedingung der Inhaltstyp und der Wert der Eigenschaft geprüft werden und das Dokument unabhängig von seiner Ablage gefunden werden.


    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks

    Samstag, 28. März 2015 05:14
  • Hallo

    Besten Dank für die prompte Antwort. Ich denke, den Grundsatz habe ich verstanden. Die ID ist der Primary Key der eigenen SQL-Tabelle. Diese ID wird zusammen mit dem Dokument in Sharepoint gespeichert. Über CAML kann ich dann anhand der ID wieder auf das Dokument zugreifen.

    Ich arbeite mit C# und greife über die REST-Schnittstelle auf Sharepoint zu. Ich musste feststellen, dass es im Netz nicht sehr viele Code-Beispiele für diese Kombination gibt (oder ich hab' sie bisher nicht gefunden).

    Wäre es Ihnen möglich, mir entsprechende Code-Beispiele zu posten. Dies wäre extrem hilfreich für mich!

    Besten Dank im Voraus!

    Samstag, 28. März 2015 20:13