IBM FileNet P8, バージョン 5.2.1            

廃棄ポリシーの操作

以下の情報とコード例は、廃棄ポリシーの操作を示しています。廃棄ポリシーの概要については、『廃棄ポリシー』を参照してください。

廃棄ポリシーの作成

以下の Java™ および C# の例では、経過期間が 5 年を超える、却下された企画書の継続的なスイープをスケジュールする CmDisposalPolicy を作成する方法を示します。タイム・スロットがスイープのスケジュールに使用され、CmPolicyControlledSweep オブジェクトに対して設定されています。 サーバーは、自動的に廃棄ポリシーを CmPolicyControlledSweep オブジェクトに関連付けます。関連付けは、CmSweepPolicyRelationship によって表される関係オブジェクトを通じて行われます。

Java の例

static PropertyFilter pf = new PropertyFilter();
...
// Create instance of CmDisposalPolicy.
CmDisposalPolicy disPolicy = Factory.CmDisposalPolicy.createInstance(os);

// Proposal クラスをスイープのターゲットに設定
disPolicy.set_SweepTarget(Factory.ClassDefinition.getInstance(os,new Id("{B03157E9-8E5F-4FAD-A3AE-E163BE77E170}")));

// 経過期間が 5 年を超える、却下された企画書の廃棄を指定
disPolicy.set_FilterExpression("Now() > DateCreated + TimeSpan(1825, 'days') AND Rejected = true"); 

// 表示名を固有値に設定
disPolicy.set_DisplayName("Disposition Policy for Rejected Proposals");

disPolicy.save(RefreshMode.REFRESH);

// 廃棄ポリシーに関連付けられているポリシー制御スイープを取得
// ポリシーが関連付けられるポリシー制御スイープは 1 つ以内
// したがって、関係セット内のアイテムは 1 つのみ
pf.addIncludeProperty(new FilterElement(0, null, null, "Sweep", null));
PropertyIndependentObjectSet prop = (PropertyIndependentObjectSet) disPolicy.fetchProperty("SweepSubscriptions", pf);
CmSweepPolicyRelationshipSet rs = (CmSweepPolicyRelationshipSet) prop.getIndependentObjectSetValue();
Iterator iter = rs.iterator();
CmPolicyControlledSweep controlledSweep  = ((CmSweepPolicyRelationship)iter.next()).get_Sweep();

// ジョブが毎週金曜日の深夜 12 時から 6 時間にわたって実行されるようにタイム・スロットを作成
CmTimeslotList tsList = Factory.CmTimeslot.createList();
CmTimeslot ts = Factory.CmTimeslot.createInstance();
ts.set_Weekday(Weekday.FRIDAY);
ts.set_Duration(Integer.valueOf(360));
ts.set_StartMinutesPastMidnight(Integer.valueOf(0));
tsList.add(ts);

// ポリシー制御スイープにタイム・スロットを設定
controlledSweep.set_SweepTimeslots(tsList);
controlledSweep.save(RefreshMode.REFRESH);

C# の例

static PropertyFilter pf = new PropertyFilter();
...
// Create instance of ICmDisposalPolicy.
ICmDisposalPolicy disPolicy = Factory.CmDisposalPolicy.CreateInstance(os);

// Proposal クラスをスイープのターゲットに設定
disPolicy.SweepTarget = Factory.ClassDefinition.GetInstance(os, new Id("{B03157E9-8E5F-4FAD-A3AE-E163BE77E170}"));

// 経過期間が 5 年を超える、却下された企画書の廃棄を指定
disPolicy.FilterExpression = "Now() > DateCreated + TimeSpan(1825, 'days') AND Rejected = true";

// 表示名を固有値に設定
disPolicy.DisplayName = "Disposition Policy for Rejected Proposals";

disPolicy.Save(RefreshMode.REFRESH);

// 廃棄ポリシーに関連付けられているポリシー制御スイープを取得
// ポリシーが関連付けられるポリシー制御スイープは 1 つ以内
// したがって、関係セット内のアイテムは 1 つのみ
pf.AddIncludeProperty(new FilterElement(0, null, null, "Sweep", null));
IPropertyIndependentObjectSet prop = (IPropertyIndependentObjectSet)disPolicy.FetchProperty("SweepSubscriptions", pf);
ICmSweepPolicyRelationshipSet prSet = (ICmSweepPolicyRelationshipSet)prop.GetIndependentObjectSetValue();
System.Collections.IEnumerator enumerator = prSet.GetEnumerator();
enumerator.MoveNext();
ICmPolicyControlledSweep controlledSweep = ((ICmSweepPolicyRelationship)enumerator.Current).Sweep;

// ジョブが毎週金曜日の深夜 12 時から 6 時間にわたって実行されるようにタイム・スロットを作成
ICmTimeslotList tsList = Factory.CmTimeslot.CreateList();
ICmTimeslot ts = Factory.CmTimeslot.CreateInstance();
ts.Weekday = Weekday.FRIDAY;
ts.Duration = 360;
ts.StartMinutesPastMidnight = 0;
tsList.Add(ts);

// ポリシー制御スイープにタイム・スロットを設定
controlledSweep.SweepTimeslots = tsList;
controlledSweep.Save(RefreshMode.REFRESH);

廃棄ポリシーの取得

以下の Java および C# の例では、オブジェクト・ストアで永続化されているすべての廃棄ポリシーを取得する方法を示します。コードは、オブジェクト・ストアからすべてのスイープ・ポリシーを取得した後、廃棄ポリシーを検索するためにスイープ・ポリシーを反復処理します。次に、コードは、それぞれの廃棄ポリシーに関する情報を出力します。

Java の例

// オブジェクト・ストアで永続化されているスイープ・ポリシーを取得
CmSweepPolicySet spSet = os.get_SweepPolicies();

// スイープ・ポリシー・セットを反復処理
Iterator iter = spSet.iterator();
while (iter.hasNext())
{
   CmSweepPolicy sweepPolicy  = (CmSweepPolicy) iter.next();

   // ポリシーが廃棄ポリシーであるかどうかをテスト
   if (sweepPolicy.getClassName().equalsIgnoreCase("CmDisposalPolicy"))
   {
      // 各ポリシーのポリシー制御スイープを取得
      // ポリシーが関連付けられるポリシー制御スイープは 1 つ以内
      // したがって、セット内のアイテムは 1 つのみ
      CmSweepPolicyRelationshipSet sprSet = sweepPolicy.get_SweepSubscriptions();
      Iterator iter2 = sprSet.iterator();
      CmPolicyControlledSweep controlledSweep  = ((CmSweepPolicyRelationship)iter2.next()).get_Sweep();

      System.out.println("Id of controlled sweep: " + controlledSweep.get_Id().toString());
      System.out.println("Disposal policy name: " + sweepPolicy.get_DisplayName());
      System.out.print("Start date: " + sweepPolicy.get_EffectiveStartDate());
      System.out.print("   End date: " + sweepPolicy.get_EffectiveEndDate());
      System.out.println("   Enabled?: " + sweepPolicy.get_IsEnabled() );
      System.out.print("Examined objects: " + sweepPolicy.get_CurrentExaminedObjectCount());
      System.out.print("   Processed objects: " + sweepPolicy.get_CurrentProcessedObjectCount() );
      System.out.println("   Failed objects: " + sweepPolicy.get_CurrentFailedObjectCount() + "¥n" );
   }
}

C# の例

// オブジェクト・ストアで永続化されているスイープ・ポリシーを取得
ICmSweepPolicySet spSet = os.SweepPolicies;

// スイープ・ポリシー・セットを反復処理
foreach (ICmSweepPolicy sweepPolicy in spSet)
{
   // ポリシーが廃棄ポリシーであるかどうかをテスト
   if (sweepPolicy.GetClassName().Equals("CmDisposalPolicy"))
   {
      // 各ポリシーのポリシー制御スイープを取得
      // ポリシーが関連付けられるポリシー制御スイープは 1 つ以内
      // したがって、セット内のアイテムは 1 つのみ
      ICmSweepPolicyRelationshipSet sprSet = sweepPolicy.SweepSubscriptions;
      System.Collections.IEnumerator enumerator = sprSet.GetEnumerator();
      enumerator.MoveNext();
      ICmPolicyControlledSweep controlledSweep = ((ICmSweepPolicyRelationship)enumerator.Current).Sweep;

      System.Console.WriteLine("Id of controlled sweep: " + controlledSweep.Id.ToString());
      System.Console.WriteLine("Disposal policy name: " + sweepPolicy.DisplayName);
      System.Console.Write("Start date: " + sweepPolicy.EffectiveStartDate);
      System.Console.Write("   End date: " + sweepPolicy.EffectiveEndDate);
      System.Console.Write("   Enabled?: " + sweepPolicy.IsEnabled);
      System.Console.Write("   Examined objects: " + sweepPolicy.CurrentExaminedObjectCount);
      System.Console.Write("   Processed objects: " + sweepPolicy.CurrentProcessedObjectCount);
      System.Console.WriteLine("   Failed objects: " + sweepPolicy.CurrentFailedObjectCount + "¥n");
   }
}

廃棄ポリシーの削除

以下の Java および C# の例では、Proposal クラスをターゲットとする廃棄ポリシーを削除する方法を示します。 コードは、SQL 照会を使用して廃棄ポリシーを取得し、結果セットを反復処理して、該当するポリシーを削除します。

Java の例

// SearchSQL インスタンスを作成
SearchSQL sqlObject = new SearchSQL();
sqlObject.setMaxRecords(20);
sqlObject.setFromClauseInitialValue("CmDisposalPolicy", null, true); 
                
// SQL ステートメントを確認
System.out.println("SQL: " + sqlObject.toString()); 

// SearchScope インスタンスを作成
SearchScope search = new SearchScope(os);

// 指定したパラメーターを使用して fetchObjects メソッドを実行
IndependentObjectSet myObjects = search.fetchObjects(sqlObject, null, null, null);
            
// 廃棄ポリシーを反復処理し、Proposal クラスをターゲットとする廃棄ポリシーを削除
Iterator iter = myObjects.iterator();
while (iter.hasNext())
{
   CmDisposalPolicy policyObject = (CmDisposalPolicy) iter.next();
   if (policyObject.get_SweepTarget().get_Name().equalsIgnoreCase("Proposals") )
   {
      policyObject.delete();
      System.out.println(policyObject.get_DisplayName() + " deleted.");
      policyObject.save(RefreshMode.REFRESH);
   }
}

C# の例

// SearchSQL インスタンスを作成
SearchSQL sqlObject = new SearchSQL();
sqlObject.SetMaxRecords(20);
sqlObject.SetFromClauseInitialValue("CmDisposalPolicy", null, true); 
                
// SQL ステートメントを確認
System.Console.WriteLine("SQL: " + sqlObject.ToString()); 

// SearchScope インスタンスを作成
SearchScope search = new SearchScope(os);
            
// 指定したパラメーターを使用して fetchObjects メソッドを実行
IIndependentObjectSet myObjects = search.FetchObjects(sqlObject, null, null, null);

// 廃棄ポリシーを反復処理し、Proposal クラスをターゲットとする廃棄ポリシーを削除
foreach (ICmDisposalPolicy policyObject in myObjects)
{
   if (policyObject.SweepTarget.Name.Equals("Proposals") )
   {
      policyObject.Delete();
      System.Console.WriteLine(policyObject.DisplayName + " deleted.");
      policyObject.Save(RefreshMode.REFRESH);
   }
}


最終更新日: 2015 年 10 月
disposalpolicy_procedures.htm

© Copyright IBM Corp. 2015.