Eigenschaften schreiben

Mit der eigenschaftsspezifischen set-Methode können Sie im Proxy-Objekt einen neuen Wert für eine Eigenschaft festlegen. (Eigenschaften ohne set-Methode können nicht mit der Rational CM API festgelegt werden.) In einer set-Methode angegebene neue Werte werden im Proxy gespeichert. Die Werte werden erst in die eigentliche Ressource im Repository geschrieben, wenn die Clientanwendung für das Proxy-Objekt eine do-Methode aufruft, z. B. die Methode doWriteProperties.

Zum Aktualisieren der zugrunde liegenden Ressource im Produkt-Repository müssen Sie eine do-Methode wie doWriteProperties aufrufen. Die Methode schreibt die im Proxy aktualisierten Eigenschaften mit einer Transaktion in die Produktressource. Beim Festlegen von Eigenschaftswerten im Proxy treten keine Fehler auf. Es kann jedoch zu Fehlern kommen, wenn die do-Methode aufgerufen wird. In einem solchen Fall könnte eine Ausnahme ausgelöst werden.

Das folgende Beispiel fügt Text zur Eigenschaft Comment einer Ressource hinzu:
PropertyRequest requestComment = 
   new PropertyRequest (Resource.COMMENT );
Location location = myProvider.location(...);
Resource myResource = myProvider.resource(location);
myResource = myResource.doReadProperties(requestComment);
String comment = myResource.getComment();
myResource.setComment(comment + "addition to comment");
myResource.doWriteProperties(null);
Die Methode doWriteProperties() verwendet einen Parameter PropertyRequest.

Es ist nicht notwendig doReadProperties() vor doWriteProperties() aufzurufen, wenn Sie wissen, welcher Eigenschaftswert geschrieben werden soll, ohne zuvor den aktuellen Wert zu lesen. Im folgenden Beispiel wird das Feld Owner für den Defect SAMPL00000005 in der Musterdatenbank auf user = admin gesetzt.

Dies ist die Syntax der Zeichenfolge für eine Satzposition:
cq.record:<Satztyp>/<Datensatz-ID>@<Name_der_Datenbankgruppe>/<Datenbankname>
Für unser Beispiel sieht die Zeichenfolge für die Satzposition wie folgt aus:
"cq.record:Defect/SAMPL00000005@7.0.0/SAMPL"
Für diese Zeichenfolge gilt Folgendes: Die Methode Resource.setProperty wird als Alternative zu den interfacespezifischen set-Methoden verwendet.
CqRecord myRecord = myCqProvider.cqRecord(myProvider.stpLocation("cq.record:Defect/SAMPL00000005@7.0.0/SAMPL"));
PropertyName<CqRecord> OWNER = new FieldName<CqRecord>("Owner");

myRecord.setProperty(OWNER, myProvider.buildProxy(CqRecord.class, "cq.record:users/admin@7.0.0/SAMPL");
myRecord.doWriteProperties(null);

Weitere Informationen hierzu finden Sie im Artikel Positionssyntax.


Feedback