Question
Vault APIで等価性エラーが発生しているファイルを取得する方法はありますか。
Answer
等価性エラーが発生している場合、プロパティコンプライアンス プロパティの値が2となっている状況です。
このため、以下のようにプロパティコンプライアンスプロパティの値が"2"(等価性が準拠していない)状態にあるFileを検索条件に指定して取得することが可能です。
SrchCond[] cond = new SrchCond[] {
new SrchCond( ){
PropDefId = 39, //プロパティコンプライアンスのプロパティID
SrchOper = 3, //Is exactly (or equals)
SrchTxt = "2", //等価性が準拠していない
PropTyp = PropertySearchType.SingleProperty,
SrchRule = SearchRuleType.Must
}
};
string bookmark = null;
SrchStatus status;
ACW.File[] files = serviceManager.DocumentService.FindFilesBySearchConditions(cond, null, null, true, true, ref bookmark, out status);
また、すでに対象のFileの配列を取得しており、その中から等価性エラーが発生しているFileを抽出する場合は、以下のようにGetPropertiesを利用して、プロパティを取得して確認する形となります。
IEnumerable<long> ids = files.Select(file => file.Id);
PropInst[] properties = serviceManager.PropertyService.GetProperties(
"FILE", ids.ToArray(), new long[] { 39 /*プロパティコンプライアンスのプロパティID*/} );
IEnumerable<PropInst> PropInstSelection =
from propInst in properties
where propInst.PropDefId == 39 && propInst.Val.ToString() == "2" /*プロパティコンプライアンスのプロパティIDで等価性が準拠していない*/
select propInst;
なお、プロパティコンプライアンスプロパティのId(=39)値は、以下のサンプルのように”FILE”エンティティのプロパティを取得してループで内容を見ることで確認が可能です。
PropDef[] fileProps = serviceManager.PropertyService.GetPropertyDefinitionsByEntityClassId("FILE");
記事全体を表示