IBM FileNet P8, バージョン 5.2.1            

バージョン管理関連オブジェクトの操作

以下のコード例は、バージョン管理関連の操作を示しています。ドキュメント・バージョンと共にセキュリティー・テンプレートを使用する例については、「セキュリティー・ポリシーの操作」を参照してください。バージョン管理の概要については、『 バージョン管理』を参照してください。

ドキュメント・バージョンの追加

次の Java™ および C# の例に、既存のドキュメントに 2 つのバージョンを追加する方法を示します。(新規ドキュメントの作成例については、「ドキュメントの作成」を参照してください。) バージョンは、Document オブジェクト (またはその任意のサブクラス) または VersionSeries オブジェクトから作成できます。この例では、最初のバージョンが Document オブジェクトから作成されます。このオブジェクトでは checkout メソッドが呼び出され、ここから予約オブジェクトが取得されます。2 番目のバージョンは VersionSeries オブジェクトから作成されます。このオブジェクトは Document オブジェクトから取得されます。バージョン情報の出力用に VersionSeries オブジェクトのプロパティーが返されます。

最初のバージョンはマイナー・バージョンとしてチェックインされ、コンテンツが含まれませんが、2 番目のバージョンはメジャー・バージョンとしてチェックインされ、コンテンツが含まれる点に注意してください。checkin メソッドの autoClassify パラメーターは、そのドキュメントに対して自動分類を有効にするかどうかを指定します。自動分類の詳細については、ドキュメント分類を参照してください。コンテンツの追加の詳細については、ドキュメントのコンテンツを参照してください。

チェックインに成功すると、予約オブジェクトがドキュメントの新しい現行バージョンになります。バージョン管理セキュリティー・テンプレートが存在し、これが有効になっている場合は、Content Engine によって、現行のドキュメント・バージョンと、以前のドキュメント・バージョンのうちチェックインの結果として VersionStatus の状態が変更されるものに、該当するテンプレートが適用されます。セキュリティー・テンプレートのバージョン管理の詳細については、「セキュリティー・ポリシー」を参照してください。バージョンの状況変更については、「Content Engine Administration」ヘルプの『チェックイン (Checkin)』を参照してください。

さらに、チェックインに成功すると、その他多数のプロパティー値も変更されます。(ドキュメントの Id プロパティー値は変わりません)。例えば、現行バージョン、以前のバージョン、および VersionSeries オブジェクトの IsReserved プロパティー値は false に設定されます。 IsCurrentVersion の値は、現行バージョンの場合は true、以前のバージョンの場合は false に設定されます。ReservationType の値は設定されません。これらのプロパティーの取得については、「バージョン管理プロパティーの操作」を参照してください。

Java の例

// 2 つの新しいバージョンのうち 1 番目を追加
// このバージョンはコンテンツを持たない
Document doc = Factory.Document.getInstance(os, ClassNames.DOCUMENT, new Id("{D6DCDE1F-EF67-4A2E-9CDB-391999BCE8E5}") );

// Document オブジェクトをチェックアウトして保存
doc.checkout(ReservationType.OBJECT_STORE_DEFAULT, null, null, null);
doc.save(RefreshMode.REFRESH);          

// Document オブジェクトから予約オブジェクトを取得
Document reservation = (Document) doc.get_Reservation();

// 予約オブジェクトをマイナー・バージョンとしてチェックイン
reservation.checkin(AutoClassify.DO_NOT_AUTO_CLASSIFY, CheckinType.MINOR_VERSION);
reservation.save(RefreshMode.REFRESH);
////////////////////////////////////////////////////////////////////

// 2 つの新しいバージョンのうち 2 番目を追加
// このバージョンはコンテンツを持つ
VersionSeries verSeries = doc.get_VersionSeries();

// 新しいバージョン (1/2) に関する情報を出力
Versionable version = verSeries.get_CurrentVersion();
System.out.println("Status of current version: " + version.get_VersionStatus().toString() +
   "¥n Number of current version: " + version.get_MajorVersionNumber() +"."+ version.get_MinorVersionNumber() );

// VersionSeries オブジェクトをチェックアウトして保存
verSeries.checkout(ReservationType.OBJECT_STORE_DEFAULT, null, null, null);
verSeries.save(RefreshMode.REFRESH);

// VersionSeries オブジェクトから予約オブジェクトを取得
reservation = (Document) verSeries.get_Reservation();

// 予約オブジェクトにコンテンツを追加
File file = new File("C:¥¥officePolicy.doc");
try {
   // ContentTransfer オブジェクトを作成
   ContentTransfer ctObject = Factory.ContentTransfer.createInstance();
   FileInputStream fileIS = new FileInputStream(file.getAbsolutePath());
   ContentElementList contentList = Factory.ContentTransfer.createList();
   ctObject.setCaptureSource(fileIS);
   // ContentTransfer オブジェクトをリストに追加し、予約をオンに設定
   contentList.add(ctObject);
   reservation.set_ContentElements(contentList);
}
catch (Exception e)
{
   System.out.println(e.getMessage() );
}
 
// 予約オブジェクトをメジャー・バージョンとしてチェックイン
reservation.checkin(null, CheckinType.MAJOR_VERSION);
reservation.save(RefreshMode.REFRESH);
 
// 新しいバージョン (2/2) に関する情報を出力
version = verSeries.get_CurrentVersion();
System.out.println("Status of current version: " + version.get_VersionStatus().toString() +
   "¥n Number of current version: " + version.get_MajorVersionNumber() +"."+ version.get_MinorVersionNumber() );

C# の例

// 2 つの新しいバージョンのうち 1 番目を追加
// このバージョンはコンテンツを持たない
IDocument doc = Factory.Document.GetInstance(os, ClassNames.DOCUMENT, new Id("{D6DCDE1F-EF67-4A2E-9CDB-391999BCE8E5}"));

// Document オブジェクトをチェックアウトして保存
doc.Checkout(ReservationType.OBJECT_STORE_DEFAULT, null, null, null);
doc.Save(RefreshMode.REFRESH);

// Document オブジェクトから予約オブジェクトを取得
IDocument reservation = (IDocument)doc.Reservation;

// 予約オブジェクトをマイナー・バージョンとしてチェックイン
reservation.Checkin(AutoClassify.DO_NOT_AUTO_CLASSIFY, CheckinType.MINOR_VERSION);
reservation.Save(RefreshMode.NO_REFRESH);
////////////////////////////////////////////////////////////////////

// 2 つの新しいバージョンのうち 2 番目を追加
// このバージョンはコンテンツを持つ
IVersionSeries verSeries = doc.VersionSeries;

// 新しいバージョン (1/2) に関する情報を出力
IVersionable version = verSeries.CurrentVersion;
System.Console.WriteLine("Status of current version: " + version.VersionStatus.ToString() +
   "¥n Number of current version: " + version.MajorVersionNumber +"."+ version.MinorVersionNumber );

// VersionSeries オブジェクトをチェックアウトして保存
verSeries.Checkout(ReservationType.OBJECT_STORE_DEFAULT, null, null, null);
verSeries.Save(RefreshMode.REFRESH);

// VersionSeries オブジェクトから予約オブジェクトを取得
reservation = (IDocument)verSeries.Reservation;

// 予約ドキュメントにコンテンツを追加
Stream fileStream = File.OpenRead(@"C:¥¥BootstrapConfigUtility.bat");
// ContentTransfer オブジェクトを作成
IContentTransfer ctObject = Factory.ContentTransfer.CreateInstance();
IContentElementList contentList = Factory.ContentTransfer.CreateList();
ctObject.SetCaptureSource(fileStream);
// ContentTransfer オブジェクトをリストに追加し、予約をオンに設定
contentList.Add(ctObject);
reservation.ContentElements = contentList;

// 予約オブジェクトをメジャー・バージョンとしてチェックイン
reservation.Checkin(AutoClassify.DO_NOT_AUTO_CLASSIFY, CheckinType.MAJOR_VERSION);
reservation.Save(RefreshMode.REFRESH);

// 新しいバージョン (2/2) に関する情報を出力
version = verSeries.CurrentVersion;
System.Console.WriteLine("Status of current version: " + version.VersionStatus.ToString() +
   "¥n Number of current version: " + version.MajorVersionNumber +"."+ version.MinorVersionNumber );

ドキュメント・バージョンの削除

以下の Java および C# の例では、ドキュメントからバージョンを削除する方法を示します。フェッチされたドキュメントには 5 つのメジャー・バージョンがあります。コードは、ドキュメント・バージョンを反復処理して、3 番目のバージョンを削除します。2 回目に (バージョン 3 を削除した後に) 実行されると、コードは以下を出力します。

Major = 5; Minor = 0
Major = 4; Minor = 0
Major = 2; Minor = 0
Major = 1; Minor = 0

Java の例

static PropertyFilter pf = new PropertyFilter();  
...
pf.addIncludeProperty(new FilterElement(null, null, null, "VersionSeries Id", null) );
Document doc = Factory.Document.fetchInstance(os, new Id("{91CD21FA-5F65-4D5B-AE3E-ECE529C7AC88}"),pf );   

// VersionSeries からドキュメント・バージョンのセットを取得
VersionSeries vs = doc.get_VersionSeries();
VersionableSet vss = vs.get_Versions();

// バージョンを反復処理し、3 番目のバージョンを削除
Iterator vssiter = vss.iterator();
while (vssiter.hasNext()){
   Versionable ver = (Versionable)vssiter.next();
   System.out.println("Major = " + ver.get_MajorVersionNumber() + "; Minor = " + ver.get_MinorVersionNumber());
   if (ver.get_MajorVersionNumber().intValue() == 3){
      // To delete, cast the Versionable object to Document.
      Document verdoc = (Document) ver;
      verdoc.delete();
      verdoc.save(RefreshMode.REFRESH);
   }
}

C# の例

static PropertyFilter pf = new PropertyFilter();
...
pf.AddIncludeProperty(new FilterElement(null, null, null, "VersionSeries Id", null) );
IDocument doc = Factory.Document.FetchInstance(os, new Id("{91CD21FA-5F65-4D5B-AE3E-ECE529C7AC88}"),pf );

// VersionSeries からドキュメント・バージョンを取得
IVersionSeries vs = doc.VersionSeries;
IVersionableSet vss = vs.Versions;

// バージョンを反復処理し、3 番目のバージョンを削除
foreach(IVersionable ver in vss)
{
    System.Console.WriteLine("Major = " + ver.MajorVersionNumber + "; Minor = " + ver.MinorVersionNumber);
    if (ver.MajorVersionNumber == 3){
       // To delete, cast the Versionable object to Document.
       IDocument verdoc = (IDocument) ver;
       verdoc.Delete();
       verdoc.Save(RefreshMode.REFRESH);
    }
}

チェックアウトの取り消し

次の Java および C# の例に、ドキュメントのチェックアウトを取り消す方法を示します。

Java の例

// Document インスタンスを作成してチェックアウト
Document doc = Factory.Document.getInstance(os, ClassNames.DOCUMENT, 
      new Id("{D6DCDE1F-EF67-4A2E-9CDB-391999BCE8E5}") );
doc.checkout(ReservationType.EXCLUSIVE, null, null, null);
doc.save(RefreshMode.REFRESH);

// 予約オブジェクトを取得
Document reservation = (Document) doc.get_Reservation();

// Document オブジェクトのチェックアウトをキャンセルし、
// save the reservation object.
doc.cancelCheckout(); 
reservation.save(RefreshMode.REFRESH);

C# の例

// IDocument インスタンスを作成してチェックアウト
IDocument doc = Factory.Document.GetInstance(os, ClassNames.DOCUMENT, 
      new Id("{D6DCDE1F-EF67-4A2E-9CDB-391999BCE8E5}") );
doc.Checkout(ReservationType.EXCLUSIVE, null, null, null);
doc.Save(RefreshMode.REFRESH);

// 予約オブジェクトを取得
IDocument reservation = (IDocument)doc.Reservation;

// IDocument オブジェクトのチェックアウトをキャンセルし、
// save the reservation object.
doc.CancelCheckout();
reservation.Save(RefreshMode.REFRESH);

VersionSeries オブジェクトの取得

次のJava および C# の例に、ドキュメントから VersionSeries オブジェクトを取得する方法を示します。VersionSeries オブジェクトを使用すると、呼び出しを 1 回発行するだけで、すべてのドキュメント・バージョンに対してアクションを一括実行できます。この例では、moveContent メソッドを使用して、すべてのドキュメント・バージョンのコンテンツを別の保管場所に移動します。

Java の例

// ドキュメントを取得し、VersionSeries オブジェクトをプロパティー・キャッシュに入れる
PropertyFilter pf = new PropertyFilter();
pf.addIncludeProperty(new FilterElement(null, null, null, PropertyNames.VERSION_SERIES, null)); 
Document doc = Factory.Document.fetchInstance(os, "{393472DA-7958-48CF-8C9F-7EA0E6B25678}",pf );

// VersionSeries オブジェクトを取得
VersionSeries verSeries = doc.get_VersionSeries();

// ドキュメント・コンテンツの移動先となるストレージ域を取得
FileStorageArea fsa = Factory.FileStorageArea.fetchInstance(os, new Id("{DE42374D-B04B-4F47-A62E-CAC9AC9A5719}"), null );

// コンテンツを移動
verSeries.moveContent(fsa);
verSeries.save(RefreshMode.REFRESH);

C# の例

// ドキュメントを取得し、IVersionSeries オブジェクトをプロパティー・キャッシュに入れる
PropertyFilter pf = new PropertyFilter();
pf.AddIncludeProperty(new FilterElement(null, null, null, PropertyNames.VERSION_SERIES, null));
IDocument doc = Factory.Document.FetchInstance(os, "{393472DA-7958-48CF-8C9F-7EA0E6B25678}", pf);

// IVersionSeries オブジェクトを取得
IVersionSeries verSeries = doc.VersionSeries;

// ドキュメント・コンテンツの移動先となるストレージ域を取得
IFileStorageArea fsa = Factory.FileStorageArea.FetchInstance(os, new Id("{DE42374D-B04B-4F47-A62E-CAC9AC9A5719}"), null);

// コンテンツを移動
verSeries.MoveContent(fsa);
verSeries.Save(RefreshMode.REFRESH);

VersionSeries オブジェクトの削除

次の Java および C# の例に、VersionSeries オブジェクトを削除する方法を示します。オブジェクトを削除すると、VersionSeries オブジェクトが含まれているドキュメントも削除されます。

Java の例

// ドキュメントを取得し、VersionSeries オブジェクトをプロパティー・キャッシュに入れる
PropertyFilter pf = new PropertyFilter();
pf.addIncludeProperty(new FilterElement(null, null, null, PropertyNames.VERSION_SERIES, null)); 
Document doc = Factory.Document.fetchInstance(os, "{3488C44F-D4BB-455F-AEED-553E9EADCC4E}", pf );

// VersionSeries オブジェクトを取得
VersionSeries verSeries = doc.get_VersionSeries();

// VersionSeries オブジェクトを削除
verSeries.delete();
verSeries.save(RefreshMode.REFRESH);

C# の例

// ドキュメントを取得し、IVersionSeries オブジェクトをプロパティー・キャッシュに入れる
PropertyFilter pf = new PropertyFilter();
pf.AddIncludeProperty(new FilterElement(null, null, null, PropertyNames.VERSION_SERIES, null));
IDocument doc = Factory.Document.FetchInstance(os, "{3488C44F-D4BB-455F-AEED-553E9EADCC4E}", pf);

// VersionSeries オブジェクトを取得
IVersionSeries verSeries = doc.VersionSeries;

// VersionSeries オブジェクトを削除
verSeries.Delete();
verSeries.Save(RefreshMode.REFRESH);

バージョン管理プロパティーの操作

次の Java および C# の例に、Versionable オブジェクト (この場合はドキュメント) の全バージョンからプロパティーを取得する方法を示します。このコードでは、ドキュメントの Versions プロパティーを取得し、VersionSet オブジェクトを反復処理して、各バージョンに関する番号情報と状況情報を出力します。

Java の例

// ドキュメントを取得し、Versionable オブジェクトをプロパティー・キャッシュに入れる
PropertyFilter pf = new PropertyFilter();
pf.addIncludeProperty(new FilterElement(null, null, null, PropertyNames.VERSIONS, null)); 
Document doc = Factory.Document.fetchInstance(os, "{9B289B8A-DDD9-42DC-9D51-6B485509B68A}",pf );

// すべてのドキュメント・バージョンを返す
VersionableSet versions = doc.get_Versions();
Versionable version;

// セットを反復し、各バージョンに関する情報を出力
Iterator iter = versions.iterator();
while (iter.hasNext() )
{
   version = (Versionable)iter.next();
   System.out.println("Status of version: " + version.get_VersionStatus().toString() +
      "¥nNumber of current version: " + version.get_MajorVersionNumber() +"."+ version.get_MinorVersionNumber() +
      "¥nIs reserved: " + version.get_IsReserved() +
      "¥nIs current version: " + version.get_IsCurrentVersion() + 
      "¥nIs frozen version: " + version.get_IsFrozenVersion() +
      "¥n----------------------"
   );
}

C# の例

// ドキュメントを取得し、IVersionable オブジェクトをプロパティー・キャッシュに入れる
PropertyFilter pf = new PropertyFilter();
pf.AddIncludeProperty(new FilterElement(null, null, null, PropertyNames.VERSIONS, null));
IDocument doc = Factory.Document.FetchInstance(os, "{9B289B8A-DDD9-42DC-9D51-6B485509B68A}", pf);

// すべてのドキュメント・バージョンを返す
IVersionableSet versions = doc.Versions;
IVersionable version;

// セットを反復し、各バージョンに関する情報を出力
System.Collections.IEnumerator iter = versions.GetEnumerator();
while (iter.MoveNext() )
{
   version = (IVersionable)iter.Current; 
   System.Console.WriteLine("Status of version: " + version.VersionStatus.ToString() +
      "¥nNumber of current version: " + version.MajorVersionNumber +"."+ version.MinorVersionNumber +
      "¥nIs reserved: " + version.IsReserved +
      "¥nIs current version: " + version.IsCurrentVersion + 
      "¥nIs frozen version: " + version.IsFrozenVersion +
      "¥n----------------------"
   );
}

オブジェクトの降格

次の Java および C# の例に、demoteVersion メソッドを使用してメジャー・バージョンをマイナー・バージョンに降格する方法を示します。ドキュメントを正しく降格するには、そのドキュメントが最新のメジャー・バージョン (VersionStatus プロパティーの値が RELEASED) であり、現行バージョン (IsCurrentVersion が true) であり、現在そのドキュメントに対して予約がない状態 (IsReserved が false) である必要があります。

demoteVersion が正しく呼び出された後、VersionStatus.IN_PROCESS 状態に対するバージョン管理セキュリティー・テンプレートが存在し、これが有効になっている場合は、Content Engine によってこのテンプレートが降格対象のドキュメントに適用されます。 また、VersionStatus.RELEASED 状態に対するセキュリティー・テンプレートが存在する場合は、このテンプレートが以前のメジャー・バージョンに適用されます。セキュリティー・テンプレートについて詳しくは、セキュリティー・ポリシーを参照してください。バージョン状況の変更について詳しくは、Content Engine Administration Help のチェックインを参照してください。

Java の例

Document doc = Factory.Document.getInstance(os, ClassNames.DOCUMENT, new Id("{9B289B8A-DDD9-42DC-9D51-6B485509B68A}") );
doc.demoteVersion();
doc.save(RefreshMode.REFRESH);

C# の例

IDocument doc = Factory.Document.GetInstance(os, ClassNames.DOCUMENT, new Id("{9B289B8A-DDD9-42DC-9D51-6B485509B68A}"));
doc.DemoteVersion();
doc.Save(RefreshMode.REFRESH);

オブジェクトの昇格

次の Java および C# の例に、promoteVersion メソッドを使用して、現行のマイナー・バージョンをリリース済みのメジャー・バージョンに昇格する方法を示します。ドキュメントを正しく昇格するには、そのドキュメントが最新のマイナー・バージョン (VersionStatus プロパティーの値が IN_PROCESS) であり、現行バージョン (IsCurrentVersion が true) である必要があります。

promoteVersion が正しく呼び出された後、VersionStatus.RELEASED 状態に対するバージョン管理セキュリティー・テンプレートが存在し、有効になっている場合は、Content Engine によってこのテンプレートが昇格対象のドキュメントに適用されます。また、VersionStatus.SUPERSEDED 状態に対するセキュリティー・テンプレートが存在する場合は、このテンプレートが置換対象となる以前のメジャー・バージョンに適用されます。セキュリティー・テンプレートについて詳しくは、セキュリティー・ポリシーを参照してください。バージョン状況の変更について詳しくは、チェックインを参照してください。

Java の例

Document doc = Factory.Document.getInstance(os, ClassNames.DOCUMENT, new Id("{9B289B8A-DDD9-42DC-9D51-6B485509B68A}") );
doc.promoteVersion();
doc.save(RefreshMode.REFRESH);

C# の例

IDocument doc = Factory.Document.GetInstance(os, ClassNames.DOCUMENT, new Id("{9B289B8A-DDD9-42DC-9D51-6B485509B68A}"));
doc.PromoteVersion();
doc.Save(RefreshMode.REFRESH);

プロパティーの固定

次の Java および C# の例に、freeze メソッドを使用して、チェックイン済みドキュメント・バージョンのカスタム・プロパティーへの変更を禁止する方法を示します。

Java の例

Document doc = Factory.Document.getInstance(os, ClassNames.DOCUMENT, new Id("{9B289B8A-DDD9-42DC-9D51-6B485509B68A}") );
doc.freeze();
doc.save(RefreshMode.REFRESH);

C# の例

IDocument doc = Factory.Document.GetInstance(os, ClassNames.DOCUMENT, new Id("{9B289B8A-DDD9-42DC-9D51-6B485509B68A}"));
doc.Freeze();
doc.Save(RefreshMode.REFRESH);


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

© Copyright IBM Corp. 2015.