プロパティの書き込み

プロパティ固有の set メソッドが存在する場合、それを使用することで、ClearQuest® CM API を使用してプロキシ オブジェクトの中のプロパティに新規の値を設定できます。set メソッドを持たないプロパティは、ClearQuest 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);

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


フィードバック