ステップ5. 切り替え履歴を使用して元のビジネス・オブジェクトに戻る
このステップでは、切り替え履歴を使用してエンド・ユーザーが切り替えを開始したSectionsビジネス・オブジェクトに戻れるようにします。
1. Employeesの詳細コマンド・ハンドラーiiiCOM06を開きます。
2. [デザイン]タブを表示します。
3. [リポジトリ]タブで、Weblets、ub_pushb1 webletの順に探します。
4. ub_pushb1 webletをコマンド・ハンドラーの[保存]ボタンの隣にドラッグ・アンド・ドロップします。
5. [ソース]タブを表示します。
6. 次のコードをUHandleEvent webroutineの前に追加し、ボタンのキャプションをBackに設定します。
Override Field(#UB_PUSHB1) Default('Back')
Web_Map For(*both) Fields(#UB_PUSHB1)
7. UHandleEventで、戻るボタン・クリック・イベントを登録します。
Invoke Method(#avFrameworkManager.avRegisterEvent) Named(UB_PUSHB1.CLICK) Signalaswamevent(2)
UHandleEventは、次のようになります。
8. 次にWAMソースの最後までスクロールし、戻るボタン・クリック・イベントを処理するイベント・ルーチンを追加します。
Evtroutine Handling(#avFrameworkManager.uWAMEvent_2) Options(*noclearmessages *noclearerrors)
Endroutine
9. このルーチンに、次のコードを追加し、ユーザーがボタンをクリックしたときに元のビジネス・オブジェクトに戻されるようにします。
define field(#ff_objnme) TYPE(*CHAR) LENGTH(32) DESC('Object Name')
define field(#ff_cmdnme) TYPE(*CHAR) LENGTH(32) DESC('Command Name')
#avframeworkmanager.avrestorevalue WithID1(SWITCH_HISTORY) WithID2(OBJECT_NAME) ToAValue(#ff_objnme)
#avframeworkmanager.avrestorevalue WithID1(SWITCH_HISTORY) WithID2(COMMAND_NAME) ToAValue(#ff_cmdnme)
#avframeworkmanager.avSwitch To(BUSINESSOBJECT) NAMED(#ff_objnme) EXECUTE(#ff_cmdnme) Caller(#com_owner)
· ユーザーを切り替えを開始したコンポーネントに戻す場合は、仮想クリップボードで切り替え履歴を参照する必要があります。戻り先となるビジネス・オブジェクトとコマンドの両方を取得する必要があります。それには、仮想クリプボードから2つの値を取得する必要があります。
· コードで、まずOBJECT_NAME(ビジネス・オブジェクトの値)を、次にCOMMAND_NAME(コマンドの値)を取得します。
· これら2つの値を取得している場合は、もう1度切り替えを実行して以前のコンポーネントに戻ることができます。
コードは、次のようになります。
10. コマンド・ハンドラーをコンパイルしてチェックインします。
これで、切り替え履歴をテストする準備が整いました。
11. フレームワークで、Department Sectionsビジネス・オブジェクトから課を選択します。
12. [詳細]ボタンをクリックして、課の社員の詳細を表示します。
13. Employeesビジネス・オブジェクトの詳細コマンド・ハンドラーで、[戻る]ボタンをクリックしてSectionsビジネス・オブジェクトに戻ります。
14. アプリケーションを終了します。