9.6.5 ロードおよびアンロード
DXACTBAS1 Ancestorクラスの2つのメソッドを再定義して、処理シーケンス・コントローラによってアクティビティ・プロセッサがロードされてアンロードされるときに、1回限りのタスクを実行することができます。以下の2つのメソッドがあります。
· ActivityLoad
· ActivityUnload
アクティビティに
属性を定義した場合は、これらのメソッドが特に重要になります。この場合に、処理シーケンスがアクティビティを複数回実行するときは、アクティビティ・プロセッサのメソッド呼び出しの順序は以下のようになります。· ActivityLoad (1回目のアクティビティ実行)
· ActivityInit … ActivityRun … ActivityTerm (アクティビティが実行されるたび)
· ActivityInit … ActivityRun … ActivityTerm (アクティビティが実行されるたび)
· 以下同様
· ActivityUnload (処理シーケンスが終了するとき)
注:
属性は、アクティビティ・プロセッサが1回だけロードされアンロードされることを保証しません。特にアクティビティの戻りコードが例外を示す場合など、状況によっては、処理シーケンス・コントローラがアクティビティ・プロセッサをアンロードする場合があります(そして、必要に応じて、アクティビティの後続のインスタンスのために再ロードします)。アクティビティに
属性を設定した場合(そして、これをサポートするようにアクティビティ・プロセッサを実装した場合)は、以下のようなアクティビティのパフォーマンスが大幅に向上する可能性があります。· アクティビティを処理シーケンス実行で複数回使用する可能性がある場合
· ロードやアンロードによりパフォーマンスが大幅に低下し、アクティビティを実行するたびにロードとアンロードを繰り返す必要がない場合
例えば、単一のLANSA Integrator (JSM)サービスを独占的に使用するアクティビティの場合、サービスをロードして初期化し、同じ処理シーケンスの後続のすべての実行に同じ接続ハンドルを使用するように記述することができます。この場合、ActivityUnloadメソッドを再定義して、JSMサービスをアンロードし、JSM接続を閉じることができます。
注: このような実行を完全にサポートするように、アクティビティ・プロセッサを記述する必要があります。アクティビティ・プロセッサを確認して修正せずに、単に既存のアクティビティに
属性を設定すると、予期しないバグが発生することがあります。例えば、アクティビティを実行するたびにすべての変数が初期化されることを前提にして、アクティビティ・プロセッサが記述されている場合などです。 属性を設定すると、この前提が無効になります。