寫入內容

您可以利用內容專屬的設定方法來設定虛擬物件中的內容值,來設定新的內容值。(沒有 set 方法的內容不能以 Rational® CM API 來設定。)在設定方法中指定新的值時, 該值會儲存在虛擬物件中。直到用戶端應用程式對虛擬物件呼叫執行方法(如:doWriteProperties 方法),這些值才會寫入其儲存庫內的實際資源中。

您必須呼叫 do 方法(例如 doWriteProperties 方法)來更新產品儲存庫中的基礎資源。 這個方法會將虛擬物件中更新過的內容,全部當作一個交易來寫入產品資源中。 在虛擬物件中設定內容值時不會發生失敗,但在呼叫 do 方法時可能會失敗。 這時可能會擲出異常狀況。

下列範例會附加一些文字到資源的「註解」內容之後:
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);
doWriteProperties() 方法接受 PropertyRequest 參數。

如果您不需先讀取現行值就知道要寫入什麼內容值,則不需要先呼叫 doReadProperties() 再呼叫 doWriteProperties()。在下列範例中,範例資料庫中「問題報告」SAMPL00000005擁有者欄位會設為 user = admin

這是記錄位置的位置字串語法:
cq.record:<record-type>/<record-id>@<db-set-name>/<database-name>
在本範例中,記錄位置字串如下:
"cq.record:Defect/SAMPL00000005@7.0.0/SAMPL"
其中: Resource.setProperty 方法可用來代替介面專屬的 set 方法。
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);

請參閱位置語法以取得相關資訊。


回饋