例 - レポートの削除

コンテンツ ストアは、BI Bus API オブジェクトに関する情報を格納するデータベースです。 BI Bus API メソッドを使用して、コンテンツ ストアからオブジェクトを削除できます。 例えば、レポートが使われなくなったので削除したい場合などです。

このセクションのコード例では、以下の方法を紹介する:

  • query(searchPath, properties, sortBy, options) メソッドを使用して、コンテンツストアからレポートを取得する
  • delete(objects, options) メソッドを使用して、コンテンツストアからレポートを削除する

これらの方法を使う前に、以下のことをしなければならない:

コード例では、オブジェクトはレポートであり、その親はフォルダまたはパッケージである。

メソッド

レポートの削除には以下の方法があります。

  • query(searchPath, properties, sortBy, options)
  • delete(objects, options)

各メソッドに必要な権限と機能については、『Software Development Kit Developer Guide 』の「Methods」の章を参照のこと。

Java コード

このコードを見るには、次のサンプルをご覧ください:

installation_location/sdk/java/ReportDelete/DeleteReport.java

次のJava™コード・スニペットは、コンテンツストアからレポートを削除する方法を示しています。

delOptions.setForce(true);
delOptions.setFaultIfObjectReferenced(false);
delOptions.setRecursive(true);

try
{
	if (reportToBeDeleted != null)
	{
		System.out.println("Deleting report: " + reportToBeDeleted);

		BaseClass reportsForDeletion[] =
			new BaseClass[] { reportToBeDeleted.getBaseClassObject()};
		int delReturnCode =
			connection.getCMService().delete(reportsForDeletion, delOptions);

C#コード

このコードを見るには、次のサンプルをご覧ください:

installation_location/sdk/csharp/DeleteReport/DeleteReport.cs

次のC#コード・スニペットは、コンテンツ・ストアからレポートを削除する方法を示しています。


deleteOptions del = new deleteOptions();
del.force = true;

// The recursive option guarantees that every report history 
// attached to this report will also be deleted.
del.recursive = true;

// extract the baseClass from the report parameter
baseClass[] bc = new baseClass[1];
bc[0] = report.baseclassobject;

int nbItemsDeleted = cBICMS.delete( bc, del );

if (nbItemsDeleted>0)
{
	resultMessage = "...The item \"" + report.searchPath.value +
		"\" was successfully deleted.";
}

説明

query(searchPath, properties, sortBy, options) メソッドを使うときは、 search パラメータを指定して、取り出したい単一オブジェクトを特定しなければならない。

また、 properties パラメータを指定して、返したいプロパティを設定したり、 options パラメータを指定して、結果セット内のオブジェクトの最大数など、クエリ操作のオプションを設定することもできます。 コード例では、 options パラメーターは指定されていない。 query(searchPath, properties, sortBy, options) メソッドは、リクエストされたレポートを返します。

すべてのコード例において、検索パスパラメーターは変数 reportToBeDeleted で表される。 この値は、 delete(objects, options) メソッドで必要な参照を構築するために使用される。 検索パスは削除したいオブジェクトを指定します。 コンテンツストアのオブジェクトは、1つのルートオブジェクトから始まる1つの階層で編成される。 ルート・オブジェクトは、検索パスではスラッシュ(/)で示され、コンテンツストアで利用可能なすべてのオブジェクトを含む。

オブジェクトは、親子関係(包含関係)や参照を通じて他のオブジェクトと関係する。 親子関係は、コンテンツストアに永続するオブジェクトの検索パスプロパティを構成するために使用される。 これらの関係は、コンテンツストア内のオブジェクトの位置を記述し、各オブジェクトの検索パスの要素に反映される。

例えば、以下の検索パスは、 SDK Report Samples というフォルダ内の Order Product List というレポートのコンテンツストア内の場所を示しています:

/content/package[@name='GO Data Warehouse (query)']/folder[@name='SDK Report Samples']/report[@name='Order Product List']

コンテンツの管理については、『Software Development Kit Developer Guide』を参照してください。

すべてのコード例において、プロパティ・パラメータは変数 props で表される。 propertiesパラメータは、返したいプロパティのセットを指定します。 propEnum この列挙セットには、コンテンツストア内のすべての永続化オブジェクトに対して可能なすべてのプロパティが含まれているためです。 Javaの例では、 searchPathdefaultName プロパティが返される。

すべてのコード例において、 query(searchPath, properties, sortBy, options) メソッドからの結果は、 delete(objects, options) メソッドへの呼び出しにおいて、 objects パラメータの値として使用される。 コンテンツ・ストアに永続化されるオブジェクトは、列挙セット classEnum にあるクラスのインスタンスです。 これらのクラスはすべてクラス baseClass から派生したものです。 したがって、 objects パラメータは、 baseClass 型で、永続化オブジェクトの任意のクラスを指定できるようになっている。

delete(objects, options) メソッドを使用する場合、以下の削除オプションも指定できます:

  • faultIfObjectReferenced
  • force
  • recursive

recursive オプションを true に設定しないと、子孫を持つオブジェクトは削除されず、例外が返される。 force オプションは、ユーザーがオブジェクトを削除するのに必要なパーミッションに影響します。 どちらのコード例でも、 options パラメーターは del という変数で表され、 force オプションは true に設定される。

コード例では、削除されたオブジェクトの数を示す整数値が返される。 値が 0 より大きい場合、削除操作は成功した。

自分でプログラムを書く場合の手順

  1. baseClass オブジェクトの配列を作成する。
  2. deleteOptions オブジェクトを作成し、そのプロパティを設定する。

    コード例では、 force プロパティは true に設定されている。

  3. コンテンツストアからレポートを取得するには、 query(searchPath, properties, sortBy, options) メソッドを使用します。 このアクションは baseClass オブジェクトを返す。

    例では、レポートの検索パスはユーザーによって指定される。

  4. レポートを baseClass 配列に追加する。
  5. レポートを含む baseClass 配列と deleteOptions オブジェクトをパラメータとして、 delete(objects, options) メソッドを呼び出す。

    ヒント選択したオブジェクトを削除するかどうかをユーザーに確認させる。

    削除操作を取り消すことはできません。

  6. コンテンツストアから削除されたオブジェクトの数を返す整数をチェックする。