保留の操作
以下のコード例は、保留関連の操作を示しています。
保留機能の概要については、保留を参照してください。
保留インスタンスの作成
以下の Java™ および C# の例では、 CmHold のサブクラスからインスタンスを作成します。サブクラスには、保留をケース番号に関連付けるカスタム・プロパティーが含まれています。
Java の例
// CmHold サブクラスからインスタンス HoldForDepositions を作成
CmHold hold = Factory.CmHold.createInstance(os, "HoldForDepositions");
// システム・プロパティーを設定
hold.set_DisplayName("Legal Hold for Depositions");
hold.set_DescriptiveText("Release subject to approval by case manager.");
// カスタム・プロパティーを設定
hold.getProperties().putValue("CaseNumber", 1827749);
// 保留インスタンスをサーバーに保存
hold.save(RefreshMode.REFRESH);
C# の例
// CmHold サブクラスからインスタンス HoldForDepositions を作成
ICmHold hold = Factory.CmHold.CreateInstance(os, "HoldForDepositions");
// システム・プロパティーを設定
hold.DisplayName="Legal Hold for Depositions";
hold.DescriptiveText="Release subject to approval by case manager.";
// カスタム・プロパティーを設定
hold.Properties["LegalCaseNumber"]= 1827749;
// 保留インスタンスをサーバーに保存
hold.Save(RefreshMode.REFRESH);
保留の適用
以下の Java および C# の例では、保留をドキュメントに適用します。
Java の例
// 保留するドキュメントを取得
Document heldObject = Factory.Document.getInstance(os, ClassNames.DOCUMENT,
new Id("{FD973204-3106-4252-8F29-C5CBBAB98B19}"));
// ドキュメントに適用する保留オブジェクトを取得
CmHold hold = Factory.CmHold.getInstance(os, "HoldForDepositions", new Id("{DD2032CE-62D1-470D-91FD-10D818E2138A}"));
// CmHoldRelationship オブジェクトを作成
CmHoldRelationship relationship = Factory.CmHoldRelationship.createInstance(os, ClassNames.CM_HOLD_RELATIONSHIP);
// CmHoldRelationship オブジェクトで Hold および HeldObject プロパティーを設定
relationship.set_Hold(hold);
relationship.set_HeldObject(heldObject);
// 関係をサーバーに保存
relationship.save(RefreshMode.REFRESH);
C# の例
// 保留するドキュメントを取得
IDocument heldObject = Factory.Document.GetInstance(os, ClassNames.DOCUMENT,
new Id("{FD973204-3106-4252-8F29-C5CBBAB98B19}"));
// オブジェクトに適用する保留オブジェクトを取得
ICmHold hold = Factory.CmHold.GetInstance(os, "HoldForDepositions", new Id("{DD2032CE-62D1-470D-91FD-10D818E2138A}"));
// CmHoldRelationship オブジェクトを作成
ICmHoldRelationship relationship = Factory.CmHoldRelationship.CreateInstance(os, ClassNames.CM_HOLD_RELATIONSHIP);
// CmHoldRelationship オブジェクトで Hold および HeldObject オブジェクトを設定
relationship.Hold=hold;
relationship.HeldObject=heldObject;
// 保留インスタンスをサーバーに保存
relationship.Save(RefreshMode.REFRESH);
保留オブジェクトのリスト表示
以下の Java および C# の例では、同じ保留が適用されるすべての CmHoldable オブジェクトをリスト表示します。
Java の例
static PropertyFilter pf = new PropertyFilter();
...
// Get hold object.
pf.addIncludeProperty(new FilterElement(1, null, null, "CmHoldRelationships DisplayName HeldObject", null));
CmHold hold = Factory.CmHold.fetchInstance(os, new Id("{DD2032CE-62D1-470D-91FD-10D818E2138A}"), pf);
// 保留に関連付けられている関係オブジェクトを返す
CmHoldRelationshipSet rsSet = hold.get_CmHoldRelationships();
// セットを反復処理し、各保留オブジェクトの名前を出力
System.out.println(hold.get_DisplayName() + ":");
Iterator iter = rsSet.iterator();
while (iter.hasNext())
{
CmHoldRelationship relationship = (CmHoldRelationship) iter.next();
CmHoldable heldObject = relationship.get_HeldObject();
if (heldObject.getClass().getSimpleName().startsWith("Annot"))
{
System.out.println(" Annotation object: " + ((Annotation) heldObject).get_Name());
}
else System.out.println(" Containable object: " + ((Containable) heldObject).get_Name());
}
C# の例
static PropertyFilter pf = new PropertyFilter();
...
// Get hold object.
pf.AddIncludeProperty(new FilterElement(1, null, null, "CmHoldRelationships DisplayName HeldObject", null));
ICmHold hold = Factory.CmHold.FetchInstance(os, new Id("{DD2032CE-62D1-470D-91FD-10D818E2138A}"), pf);
// 保留に関連付けられている関係オブジェクトを返す
ICmHoldRelationshipSet rsSet = hold.CmHoldRelationships;
// セットを反復処理し、各保留オブジェクトの名前を出力
System.Console.WriteLine(hold.DisplayName + ":");
foreach (ICmHoldRelationship relationship in rsSet)
{
ICmHoldable heldObject = relationship.HeldObject;
if (heldObject.GetType().Name.StartsWith("Annot"))
{
System.Console.WriteLine(" Annotation object: " + ((IAnnotation) heldObject).Name);
}
else System.Console.WriteLine(" Containable object: " + ((IContainable) heldObject).Name);
}
保留の解除
以下の Java および C# の例では、保留を解除する 2 つの方法を示します。最初に、コードは、ターゲットの保留を参照する該当の CmHoldRelationship オブジェクトを削除することにより、単一ドキュメントに対する保留を解除します。次に、コードは、保留が適用されているすべてのオブジェクトに対する保留を解除します。これは、ターゲットの CmHold オブジェクトを削除することによって行われます。
Java の例
static PropertyFilter pf = new PropertyFilter();
...
// Remove hold on a single document.
// 保留を解除するドキュメントを取得
pf.addIncludeProperty(new FilterElement(1, null, null, "CmHoldRelationships Hold", null));
Document heldObject = Factory.Document.fetchInstance(os,
new Id("{FD973204-3106-4252-8F29-C5CBBAB98B19}"), pf);
// ドキュメントに関連付けられている関係オブジェクトを返す
CmHoldRelationshipSet rsSet = heldObject.get_CmHoldRelationships();
// セットを反復処理し、解除するターゲットの保留を検出
Iterator iter = rsSet.iterator();
while (iter.hasNext())
{
CmHoldRelationship relationship = (CmHoldRelationship) iter.next();
CmHold holdObject = relationship.get_Hold();
if (holdObject.get_Id().equals(new Id("{1492D46F-D5CD-4CCA-9781-0F9E1B0D03E9})) )
{
relationship.delete();
relationship.save(RefreshMode.REFRESH);
System.out.println("Hold for Review removed from document");
}
}
///////////////////////////////////
// Remove hold on all objects to which the hold applies.
// 削除する保留オブジェクトを取得
CmHold hold = Factory.CmHold.getInstance(os, "HoldForDepositions", new Id("{DD2032CE-62D1-470D-91FD-10D818E2138A}"));
hold.delete();
hold.save(RefreshMode.REFRESH);
System.out.println("Legal Hold for Depositions removed from all CmHoldable objects");
C# の例
static PropertyFilter pf = new PropertyFilter();
...
// Remove hold on a single document.
// 保留を解除するドキュメントを取得
pf.AddIncludeProperty(new FilterElement(1, null, null, "CmHoldRelationships Hold", null));
IDocument heldObject = Factory.Document.FetchInstance(os,
new Id("{FD973204-3106-4252-8F29-C5CBBAB98B19}"), pf);
// ドキュメントに関連付けられている関係オブジェクトを返す
ICmHoldRelationshipSet rsSet = heldObject.CmHoldRelationships;
// セットを反復処理し、解除するターゲットの保留を検出
foreach (ICmHoldRelationship relationship in rsSet)
{
ICmHold holdObject = relationship.Hold;
if (holdObject.Id.Equals(new Id("{1492D46F-D5CD-4CCA-9781-0F9E1B0D03E9}")))
{
relationship.Delete();
relationship.Save(RefreshMode.REFRESH);
System.Console.WriteLine("Hold for Review removed from document");
}
}
///////////////////////////////////
// Remove hold on all objects to which the hold applies.
// 削除する保留オブジェクトを取得
ICmHold hold = Factory.CmHold.GetInstance(os, ""HoldForDepositions"", new Id("{DD2032CE-62D1-470D-91FD-10D818E2138A}"));
hold.Delete();
hold.Save(RefreshMode.REFRESH);
System.Console.WriteLine("Legal Hold for Depositions removed from all CmHoldable objects");