Metadaten verpacken
Package Metadata ist ein Wörterbuch mit Textwerten (Zeichenfolgen), die auf Paketebene definiert sind. Es ist in der SBSAR enthalten, wenn es veröffentlicht wird, und es ist ein Allzweck-Speicher, der von Python-Skripten verwendet werden soll.
Anzeigen und Bearbeiten von Metadaten über die Oberfläche von Designer
Wenn Sie ein Python-Plug-in entwickeln, sollten Sie Metadaten zum Testen und Debuggen manuell bearbeiten. Gehen Sie dazu folgendermaßen vor:
-
Wenn Sie im Explorer auf ein Paket doppelklicken, wird das Eigenschaftenfenster für dieses Paket geöffnet.
-
Hier haben Sie einen eigenen Abschnitt “Metadaten”. Es ist in Ihrem Fall wahrscheinlich leer, wie in der Aufnahme oben.
Sie können neue Metadaten hinzufügen, indem Sie auf die Schaltfläche “Plus” klicken.
-
Im folgenden Abschnitt wird ein neues Element angezeigt:
-
Es gibt ein Feld “Schlüssel” und ein Feld “Wert”. Beide Optionen sind beliebig wählbar. Das Feld “Schlüssel” muss in der Liste einen eindeutigen Wert aufweisen.
-
Sie können auch den “Typ” des Elements auswählen. Im Moment kann es “String” oder “URL” sein:
-
“URL” bedeutet hier einen Verweis auf eine Ressource, die im Paket enthalten ist. Wählen Sie dazu eine Datei auf Ihrer Festplatte aus und ziehen Sie sie per Drag & Drop in das Paket im Explorer. Dabei kann es sich um eine normale Ressource wie ein Bild oder eine beliebige andere Datei wie eine Textdatei handeln.
-
Die Datei wird als neue Ressource im Paket angezeigt.
Kehren Sie nun zum Bedienfeld “Paketeigenschaften” zurück, erstellen Sie neue Metadaten, geben Sie einen passenden Schlüssel ein und wählen Sie “URL” als Typ. Wählen Sie dann “…” aus. im Feld “Wert” und wählen Sie “Von Ressource” aus. Wählen Sie die Datei aus, die Sie zuvor eingefügt haben, und überprüfen Sie:
-
Jetzt können Sie die “URL” der Ressource wird im Feld “Wert” gespeichert.
Sie können Metadaten auch über die Schaltfläche “X” rechts neben dem Element löschen:
Metadaten in veröffentlichten SBSAR-Dateien
In einigen Fällen können Sie die Metadaten abrufen, die Sie für ein Paket in der entsprechenden veröffentlichten SBSAR definiert haben. Im Folgenden erfahren Sie, wie Metadaten transformiert und im Archiv gespeichert werden und wie Sie sie daraus richtig nutzen können.
Die Metadaten werden entsprechend dem JSON-Format in einer Datei mit dem Namen /assemblies/content/0000/metadata.json gespeichert (der Pfad ist relativ zum Stammordner des .sbsar-Archivs).
Reguläre (String-)Metadaten werden wie vorhanden gespeichert, z. B. “key”: “stringValue”, eine pro Zeile. Auch hier wird die ursprüngliche Reihenfolge der verschiedenen Schlüssel nicht beibehalten und die Implementierung ist definiert. Verlassen Sie sich bei Ihrem Prozess nie auf die Bestellung, wie bei regulären Python-Aufträgen!
Da das Ziel der URL-Metadaten darin besteht, Benutzern und Plug-ins die Aufnahme ausländischer Dateien in das .sbsar-Archiv zu ermöglichen, unterliegen sie einer bestimmten Transformation: Zunächst wird die Datei der Ressource, die mit der gespeicherten URL übereinstimmt, in das Archiv an einem implementierungsdefinierten Speicherort (normalerweise in einem nummerierten Unterordner, der nur diese Datei enthält) kopiert. Es geht darum, Namenskonflikte zu vermeiden.) Die Datei behält ihren ursprünglichen Namen bei (der Name der Ressource wird an dieser Stelle verworfen). Anstelle der ursprünglichen URL in der Datei “metadata.json” wird dann der Pfad zur kopierten Datei im Archiv relativ zur Datei “metadata.json” geschrieben.
Wenn wir das im vorherigen Abschnitt erstellte Beispielpaket exportieren (nachdem wir mindestens ein Diagramm mit einigen Ausgaben erstellt haben), erhalten wir diesen Archivinhalt:
myPackage.sbsar
|-- assemblies
|-- content
|-- 0000
|-- New_Graph.sbsasm
|-- New_Graph.xml
|-- metadata.json
|-- resources
|-- 0
|-- TEXT.txt
Der Inhalt metadata.json lautet:
{
"myResource": "resources/0/TEXT.txt",
"myText": "This is a text"
}
Derzeit wird kein spezielles Tool für den Zugriff auf die im Archiv gespeicherten Metadaten und Ressourcen bereitgestellt. Die empfohlene Methode ist, das Archiv mit dem LZMA-Decoder Ihrer Wahl zu öffnen und die Datei metadata.json mit einem regulären JSON-Parser zu analysieren (Wenn die Schlüssel oder Wertzeichenfolgen einige Sonderzeichen enthalten, werden sie auf die JSON-Art und Weise escaped).