Programmieren mit PDM: Lesen und Bearbeiten von Variablen mit Visual Studio und C#

Im folgenden Artikel wird beschrieben, wie mit Visual Studio und C# die Variablen in PDM gelesen und bearbeitet werden können.

1. Einführung

Bei der Arbeit mit PDM ist es immer wichtig, mit Variablen für die verschiedenen Dateien zu arbeiten. Jede Datei in PDM besitzt eine Datenkarte, welche die Werte verschiedener Variablen anzeigt. Je nach Dateiart gibt es sogar verschiedene Konfigurationen.

In diesem Technical Tip soll eine Standalone-Anwendung geschrieben werden, welche die Variablen einer Datei in einem Tresor liest und anschliessend bearbeitet.

2. Projekt erstellen

Als Erstes wird ein neues Projekt in Visual Studio erstellt. Hierzu verwenden wir eine Windows Forms App für das .NET Framework, wie in Abbildung 2. Ein Projekt Name, Speicherort und Solution Name kann anschliessend frei gewählt werden. Als Framework sollte .NET Framework 4.5 oder höher ausgewählt werden. In dieser Arbeit wird die neuste Version .NET Framework 4.8 verwendet.

Abbildung 1: Erstellung eines neuen Projekts in Visual Studio

Nachdem das Projekt erstellt wurde, muss wie immer die korrekte Library von PDM hinzugefügt werden, damit wir mit der API richtig arbeiten können. Hierfür wird das korrekte NuGet Paket für PDM hinzugefügt.

Abbildung 2: Auswählen des korrekten Pakets

Um die Funktionen gut testen zu können, wird die Form gleich passend eingerichtet und könnte wie in Abbildung 3 aussehen. Um im Code gut damit arbeiten zu können, sollten für alle Controls gute Namen vergeben werden. Diese können angepasst werden, indem das Control ausgewählt wird und in den Eigenschaften der Wert ‚name‘ angepasst wird. Dies ist auch in Abbildung 3 ersichtlich. Für die Benennung verwende ich folgende Namen (von links nach rechts).

Erste Zeile (Variable Lesen):

  • TextBox_Read_Variable
  • Button_Read
  • Label_Read_Value

Zweite Zeile (Variable aktualisieren)

  • TextBox_Update_Variable
  • TextBox_Update_Value
  • Button_Update

Abbildung 3: Beispiel Form

Zum Schluss wird über einen Doppelklick auf jeden Button die passende
Methode für das Click Event des Buttons erstellt, in welcher anschliessend der Code geschrieben wird. Bevor jedoch gestartet werden kann, müssen ein paar Objekte und Variablen definiert werden.

Abbildung 4: Vorbereitung

Als Erstes werden 2 konstante Variablen erstellt, welche den Pfad zu der Datei in PDM enthalten und eine weitere, welche den Tresornamen enthält. Dann wird das Objekt für den Tresor erstellt und nachdem die Form initialisiert wurde, wird geprüft, ob der Benutzer bereits eingeloggt ist und wenn nicht, wird ein Login auf den definierten Tresor durchgeführt.

3. Variablen lesen

Die Methode, wie eine Variable gelesen wird, wird in Abbildung 5 dargestellt.

Abbildung 5: Lesen einer Variable

In der Methode Read wird zuerst das Objekt für die PDM Datei geholt. Dafür wird von dem initialisierten Tresor die Methode aufgerufen, welche das Objekt für die Datei anhand des Pfades zurückgibt. Als Nächstes wird von diesem Dateiobjekt das Objekt für das Verwalten der Variablen geholt. Dies erfolgt mit der Methode GetEnumeratorVariable. Mit dieser kann schlussendlich die Variable als Text herausgelesen werden. Dazu werden als Parameter nur der Variablename übergeben, die Konfiguration und die ID des Ordners. Der letzte Parameter ist die Ausgabe des Ergebnisses. Diese kann dann im Label angezeigt werden. Informationen zum Lesen können auch hier nachgelesen werden:

GetVarAsText Methode

 

4. Variablen Aktualisieren

Die Methode, wie eine Variable aktualisiert wird, wird in Abbildung 6 dargestellt.

Abbildung 6: Aktualisieren einer Variable

 

Das Aktualisieren ist dabei etwas komplizierter. Wenn ein Addin erstellt wird, kann hierzu ebenfalls die EnumeratorVariable wie beim Lesen der Variable genutzt werden. Bei einer Standalone-Anwendung erhält man hierbei jedoch einen Fehler. Deshalb wird hierfür eine Alternative verwendet, die sowohl bei Addins als auch Standalone-Anwendungen funktioniert. Als Erstes wird wieder das Dateiobjekt geladen. Da nun aber etwas geändert wird, muss geprüft werden, ob die Datei ausgecheckt ist. Ist dies nicht der Fall, wird die Datei ausgecheckt. Ob die Datei vorher ausgecheckt ist oder nicht, wird ebenfalls in einer Bool Variable festgehalten. Somit kann am Ende entschieden werden, ob die Datei wieder eingecheckt werden soll oder ob sie ausgecheckt bleiben soll. Man kann diesen Schritt aber auch ignorieren und die Datei definitiv einchecken oder ausgecheckt lassen.

Der wichtigste Part dabei ist jetzt folgender: Als Erstes wird von dem Tresor das Utility erstellt, um ein BatchUpdate auszuführen. Mit diesem Objekt kann dann die Methode aufgerufen werden, dass Variablen gesetzt werden. Dazu muss als Parameter die Datei ID übergeben werden, die Variablen ID, den Wert der Variable, sowie die Konfiguration.

Um die ID der Variable herauszufinden, wurde eine neue Methode geschrieben, welche den Wert zurückgibt. Hierzu wird einfach der VariablenMgr vom Tresor abgefragt und die Methode GetVariable mit einem Parameter aufgerufen, welcher den Namen der Variable enthält. Anschliessend kann die Eigenschaft ID zurückgegeben werden. Mit dem BatchUpdate kann nun ein CommitUpdate ausgeführt werden und die Variable wird geschrieben. Informationen zum Aktualisieren können auch hier nachgelesen werden:

SetVar Methode

Der komplette Code kann wie immer von unserem Repository heruntergeladen werden:

Zum Repository

Autor des Artikels

Martin Bartolome, Application Engineer bei Visiativ Switzerland