プロパティの書き込み

プロパティ固有の set メソッドを使用して、プロパティの新規の値を、 プロキシ オブジェクトのプロパティ値に設定できます。(set メソッドを持たないプロパティは、Rational® CM API を使用して設定できません。) set メソッドで 新規の値を指定すると、値は、プロキシに保管されます。値は、クライアント アプリケーションが プロキシ オブジェクトで doWriteProperties メソッドなどの do メソッドを 呼び出すまで、リポジトリ内の実際のリソースには書き込まれません。

製品リポジトリにある基本リソースを更新するには、doWriteProperties メソッドなどの do メソッドを呼び出す必要があります。 このメソッドは、プロキシ内で更新されたすべてのプロパティを、1 つのトランザクションとして製品リソースに書き込みます。 プロキシにプロパティ値を設定する際は、障害は発生しませんが、do メソッドの 呼び出し時は、障害が発生する可能性があります。 そうなった場合は、例外がスローされる可能性があります。

次の例は、いくつかのテキストをリソースの Comment プロパティに追加します。
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 パラメータを取ります。

書き込むプロパティ値があらかじめ分かっていて、 最初に現在の値を読み取る必要がない場合は、doWriteProperties() を 呼び出す前に doReadProperties() を呼び出す必要はありません。次の例では、 サンプル データベース内の障害 SAMPL00000005Owner フィールドに 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);

詳しくは、ロケーションの構文を参照してください。


フィードバック