È possibile impostare un nuovo valore per una proprietà utilizzando il metodo set specifico per proprietà per impostare il valore di proprietà nell'oggetto proxy. (Le proprietà che non dispongono di un metodo set non possono essere impostate utilizzando Rational CM API.) Quando vengono specificati nuovi valori in un metodo set, i valori vengono memorizzati nel proxy. I valori non vengono scritti nella risorsa effettiva nel suo repository finché l'applicazione client non richiama un metodo do, ad esempio il metodo doWriteProperties, sull'oggetto proxy.
È necessario richiamare un metodo do come ad esempio doWriteProperties per aggiornare la risorsa sottostante nel repository del prodotto. Il metodo scrive tutte le proprietà aggiornate nel proxy nella risorsa del prodotto in un'unica transazione. Non si verificano errori quando i valori delle proprietà sono impostati nel proxy, ma possono verificarsi quando viene richiamato il metodo do. In quel frangente potrebbe essere generata un'eccezione.
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);Il metodo doWriteProperties() utilizza un parametro PropertyRequest.
Non è necessario richiamare doReadProperties() prima di doWriteProperties(), se si conosce quale valore di proprietà scrivere senza prima leggere il valore corrente. Nell'esempio che segue il campo Owner del Defect SAMPL00000005 nel database di esempi viene impostato su user = admin.
cq.record:<record-type>/<record-id>@<db-set-name>/<database-name>In questo esempio, la stringa di ubicazione record è:
"cq.record:Defect/SAMPL00000005@7.0.0/SAMPL"dove:
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);
Per ulteriori informazioni vedere Sintassi ubicazione.