Grouping オブジェクト・タイプの特定のインスタンス、それに付加されたすべて の Comments インスタンス、およびそれが参加するすべての ATTACHMENT、 CONTACT、 CONTAIN、 および LINK 関係を削除するために使用します。 また、任意に Grouping 区分のオブジェクト・インスタンスに含まれたすべての オブジェクト・インスタンス、それに付加されたすべての Comments インスタンス、 参加しているすべての ATTACHMENT、 CONTACT、および LINK 関係を削除するために使用します。
許可
管理者または許可ユーザー
構文
APIRET APIENTRY FLGDeleteTree( PSZ pszFLGID,
FLGOPTIONS Options,
PFLGHEADERAREA * ppListStruct,
PFLGEXTCODE pExtCode );
パラメーター
この ID の 1 文字目から 6 文字目までは、このインスタンスの オブジェクト・タイプを識別します。
この ID の 7 文字目から 16 文字目までは、システム生成された固有のインスタンス ID です。
この出力構造には、削除されたオブジェクト・インスタンスそれぞれ の 16 文字の FLGID が入ります。
このパラメーターが NULL のとき、出力構造は戻されません。 出力構造がない場合、出力構造へのポインターは NULL にセットされます。
戻された理由コードの説明については、付録 D, 情報カタログ・マネージャーの理由コードを参照してくだ さい。
使用方法
前提条件
指定されたオブジェクト・インスタンス ID (FLGID) が存在しなくてはなり ません。
制約事項
削除されるオブジェクト以外の Grouping オブジェクトに含まれる オブジェクト・インスタンスは (図 59 に図示) 削除されません。
出力構造に割り振られたメモリーの解放
FLGDeleteTree が出力構造にあるデータを戻した場合、出力構造に戻された データを保管してから、FLGFreeMem を呼び出さなくてはなりません (FLGFreeMem参照)。 メモリーを解放するのに、たとえば C 言語指示のような他の方式は使用しないで ください。
情報カタログ更新の制御
プログラムを可能な限り、情報カタログと同期化させるために、 FLGDeleteTree が正常に完了したあとで、呼び出しを FLGCommit (FLGCommit参照) に 組み込む必要があります。 FLGDeleteTree が正常に完了しない場合は、呼び出し を FLGRollback (FLGRollback参照) に組み込む必要があります。
図 58 から 図 60 は、 2 つの削除オプションの効果を図示しています。 図 58 は、3 つのグループ・オブジェクト、 A、Z、および Y の情報カタログを表示しています。 オブジェクト B は、FLGDeleteTree を使って削除されます。
FLG_DELTREE_REL オプションを使って、 オブジェクト・インスタンス B と B の 下にあるいくつかの関係が削除されました。 C は、別の木である Z に含まれているので、 オブジェクト C と、それが含むものは影響を受けていません。 オブジェクト D は、他のオブジェクトに含まれていないので、 カスケード効果の影響を受けます。
図 59 は、B が削除されたあと の情報カタログを図示しています。
FLG_DELTREE_ALL オプションを使って、 オブジェクト・インスタンス B と その下にあるいくつかのインスタンスがカタログから削除されました。 オブジェクト・インスタンス C とそれが含むものは、 Z にも含まれているので、保持されています。
図 60 は、FLG_DELTREE_ALL オプションを 使って B が削除されたあとの情報カタログを表しています。
図 61 は、FLGDeleteTree 呼び出しを出すために必要な C 言語コード を示しています。 このサンプル・コードは、DEPT001 Grouping 区分のオブジェクト・インスタンス、 それに付加されたすべての Comments インスタンス、およびそれが参加するすべて の ATTACHMENT、CONTACT、および LINK 関係を削除します。 このサンプル・コードはまた、DEPT001 オブジェクト・インスタンスに 含まれるすべてのオブジェクト・インスタンス、それらに付加されたすべ ての Comments インスタンス、およびそれらが参加するすべての ATTACHMENT、 CONTACT、および LINK 関係を削除します。
図 61. C 言語による FLGDeleteTree の呼び出しのサンプル
APIRET rc; // Declare reason code
FLGOPTIONS ulOptMask=0;
UCHAR pszFLGID[FLG_ID_LEN + 1];
PFLGHEADERAREA pDelStruct=NULL;
FLGEXTCODE xc = 0; // Declare extended code
.
. set value for pszFLGID
.
ulOptMask = ulOptMask | FLG_DELTREE_ALL; // delete whole tree
rc = FLGDeleteTree (pszFLGID, ulOptMask,
&pDelStruct, &xc);
図 62 は、この FLGDeleteTree 呼び出しのための出力構造を示して います。
図 62. FLGDeleteTree の出力構造のサンプル