Sichten mit individuellen Spalten ergänzen
Natürlich können Sie in in-STEP BLUE Sichten konfigurieren und so festlegen, was Sie wo, in welcher Reihenfolge und Sortierung angezeigt bekommen wollen. Was tun Sie aber, wenn Sie eine individuelle Spalte benötigen, die Sie selbst entwickeln und anschließend auch in einer Sicht anzeigen möchten? Wie ergänzen Sie also in-STEP BLUE Sichten mit eigenen, individuellen Spalten?
Der Anwendungsfall eines Kunden
Stellen wir uns einen Kunden vor, der unterschiedliche Formulartypen mit vielen benutzerdefinierten Eigenschaften vom Typ Alphanumerisch definiert hat. Damit der Wert der jeweiligen Eigenschaft in einer Sicht angezeigt wird, muss die Eigenschaft als Spalte zugeordnet werden. Das Problem: Bei vielen Eigenschaften kann die Sicht durch viele Spalten schnell unübersichtlich werden. Was bedeutet dies denn konkret? In einer Produktabhängigkeitshierarchie beispielsweise wird die Beziehung zwischen Anforderungen und den zugehörigen Testfällen dargestellt. Alle beschreibenden Texte — sowohl von den Anforderungen als auch von den Testfällen — sollen in der Sicht angezeigt werden. Das Ergebnis sieht so aus:
Da es sich um unterschiedliche Eigenschaften handelt, kann man sie nicht in einer Zelle darstellen. Aber genau dies ist nun der Anwendungsfall des Kunden: Alle benutzerdefinierten Eigenschaften des Typs Alphanumerisch sollen in einer Spalte angezeigt werden. Für diesen Anwendungsfall bietet sich es förmlich an, eine eigene Spalte für Produktsichten zu entwickeln. Hierzu dient die Schnittstelle ICalculatedColumn. Wie schon bei der Schnittstelle IViewGroupLinkItem hat auch diese Schnittstelle ihren Namen von ihrem ursprünglichen Anwendungsgebiet, der Berechnung von Werten. Schauen wir uns die Schnittstelle mal an:
Wenn Sie einer Sicht eine „berechnende“ Spalte zuordnen, wird für jeden Eintrag die Funktion CalculateValue aufgerufen. Diese liefert das Ergebnis zurück. Die Properties ColumnType und HasIcon werden nur einmal beim Öffnen und beim Aktualisieren der Sicht aufgerufen. Darüber wird in-STEP BLUE mitgeteilt, welchen Dateityp die Spalte anzeigt und ob auch zusätzlich ein Symbol ausgegeben wird.
Erinnern Sie sich noch, wie Sie von einem Projekt den Wert einer benutzerdefinierten Eigenschaft ermitteln? Für Produkte ist es vom Ansatz her nicht anders. Allerdings hat ein Projekt selbst keine Revision, ein Produkt hingegen schon. Man ermittelt deshalb nicht die Eigenschaftswerte des Produkts (Klasse ProductIncrement), sondern von einer bestimmten Revision (nämlich der letzten) des Produkts (Klasse ProductRevision). Die letzte Revision eines Produkts erhält man direkt über ProductIncrement.CurrentProductRevision.
Zur Ermittlung der Werte der benutzerdefinierten Eigenschaft wird wiederum das PObject der aktuellenProductRevision benötigt. Dies kann man auch direkt über das ProductIncrement erhalten: ProductIncrement.CurrentProductRevisionPObject
Was ist nun zu tun?
- Zuerst wird der Datentyp über ColumnType vorgeben. In unserem Fall ist es eindeutig String.
- Da einer Zelle der Spalte kein Symbol erscheinen soll, wird bei HasIcon false zurückgeliefert.
- Über die Methode Supports() geben Sie vor, welche Sichtenarten unterstützt werden sollen, in diesem Fall sollen das nur Produktsichten sein. Den Inhalt der Operation kennen Sie eventuell bereits aus der Command-Server-Schnittstelle:
Nun geben Sie bitte den Namen an, der im Kopf der Spalte auf der Oberfläche von in-STEP BLUE angezeigt werden soll und widmen sich anschließend der Implementierung:
Mit dieser Implementierung werden von jedem Produkt die alphanumerischen Eigenschaftswerte der aktuelle Version ermittelt und untereinander in einer Zelle ausgegeben.
Wie richten Sie die Komponente ein?
Die Spalte ist eine Server-Komponente, d.h. sie muss auf den in-STEP BLUE-Server kopiert und dort registriert werden. Um die neue Funktion einem Projekt zuweisen zu können, muss die Komponente auch auf einem Client existieren und registriert sein:
Wenn Sie danach in einer Produktsicht (Produkte oder Produktabhängigkeitshierarchie) die Spaltenkonfiguration öffnen, wird mir die Spalte „Texte“ angeboten:
Die grüne Schriftfarbe zeigt an, dass es sich um eine Spalte handelt, die die Schnittstelle ICalculatedColumn implementiert. Die blauen Spalten sind benutzerdefinierte Eigenschaften, die schwarzen Spalten sind die internen Eigenschaften. Ihr Ergebnis sieht wie folgt aus:
Melden Sie sich bitte bei uns, falls Sie Fragen zur Nutzung haben? Vielleicht habe Sie auch bereits eine eigene Spalte entwickelt und möchten diese auch anderen Anwendern vorstellen. Auch darüber würden wir uns freuen.
Diskutieren Sie mit.