ウィンドウ(ダイアログボックス)を閉じる時に考慮すべきことについて

Document created by Miharu_Toyama Employee on Jul 28, 2015Last modified by Miharu_Toyama Employee on Jul 31, 2015
Version 1Show Document
  • View in full screen mode

文書番号: JTEC002218

製品名: CA Gen

バージョン:CA Gen Run Time, GUI: r8.0、r8.5

OS:


◆詳細内容

EXIT STATE ISステートメントとCLOSEステートメントを用いて同一のウィンドウ(ダイアログボックス)を閉じる処理を記述しないようにしてください。

CLOSEステートメントでウィンドウを明示的に閉じていても、EXIT STATE ISステートメントによりウィンドウが暗黙的に閉じられるため、同じウィンドウに対して閉じる処理が重複して発生します。

 

特に、クローズイベント内でEXIT STATE ISステートメントにより同じウィンドウに対して閉じる処理が重複して発生すると、予期せぬエラーが発生することがあります。

以下に例を示します。

プロシージャ・ステップA(ウィンドウ A1) から プロシージャ・ステップB(ウィンドウ B1)へのリンクフローがあります。プロシージャ・ステップBから戻る時に、以下のアクション図のように、クローズイベント内でEXIT STATE ISステートメントを実行します。

 

071300035_v4_pic1.png

 

EXIT STATE ISステートメントは、フロー元のプロシージャ・ステップAへ戻るリンクフローのトリガーとなる役割の他に、現在のウィンドウB1を閉じる機能も含まれています。

クローズイベント実行時には、既にウィンドウを閉じる処理が進行しているため、二重に同じウィンドウを閉じる処理が発生してしまい、最悪の場合はクライアント・アプリケーションがクラッシュします。

 

メモリの状態によりクラッシュが発生しない場合もありますが、メモリが不正な状態となりますので、クローズイベント内では、絶対にEXIT STATE ISステートメントを使用しないでください。

 

(クラッシュ通知ダイアログの一例)

071300035_v4_pic2.png

※「No DBMS Stub Executable」とは、クライアント・アプリケーションのEXEファイルのプロパティに書かれているファイルの説明です。

 

 

◆回避策

この例のアクション図のようにクローズイベントのトリガーとしてCLOSEステートメントを使用している場合には、CLOSEステートメントをEXIT STATE ISステートメントに置き換えるなどして回避してください。

以下に回避策の一例を示します。

 

問題が発生するロジック

  +- EVENT ACTION <クリックイベント>

  |  CLOSE ウィンドウ ウィンドウB1

  +--

  +- EVENT ACTION <ウィンドウB1クローズイベント>

  |  EXIT STATE IS <リターンエグジットステート名>

  +--

 

回避策実施後のロジック

  +- EVENT ACTION <クリックイベント>

  |  <削除>CLOSE ウィンドウ ウィンドウB1

 | EXIT STATE IS <リターンエグジットステート名>

  +--

  +- EVENT ACTION <ウィンドウB1クローズイベント>

  |  <削除>EXIT STATE IS <リターンエグジットステート名> 

+--

 

補足

クローズイベント内でEXIT STATE ISステートメントでリターンフローをする前に、対話フローでマッチングしているビューに戻り値を設定していた場合、戻り値の設定部分にも考慮が必要です。

+- EVENT ACTION <ウィンドウB1クローズイベント>

| SET <マッチングされたビュー> TO “戻り値”

| EXIT STATE IS <リターンエグジットステート名>

+-

 

上記、回避策実施後のロジックのように、EXIT STATE ISステートメントをトリガーにクローズイベントが実行されるようになった場合、そのクローズイベント内で設定した値は、フロー元に渡されません。

+- EVENT ACTION <クリックイベント>

| EXIT STATE IS <リターンエグジットステート名>

+-

+- EVENT ACTION <ウィンドウB1クローズイベント>

| SET <マッチングされたビュー> TO “戻り値”

+-

 

以下のように、戻り値の設定部分もクローズイベントから移動する必要があります。

+- EVENT ACTION <クリックイベント>

| SET <マッチングされたビュー> TO “戻り値”

| EXIT STATE IS <リターンエグジットステート名>

+-

 

 

 

ご質問等がございましたら、恐れ入りますが弊社サポートまでご連絡ください。

Attachments

    Outcomes