2022年3月30日水曜日

APEXアプリケーションの開発用途のワークスペースを作成する

 データベースが2つあり、それぞれAPEXがインストールされているとします。片方のデータベースからコンポーネント(ページも同様)単位でエクスポートを行い、別のデータベースの同じアプリケーションにインポートする方法を紹介します。

コンポーネントおよびページ単位のエクスポート/インポートを行うには、両方のデータベースのワークスペースIDアプリケーションIDが一致している必要があります。アプリケーションについてはIDが一致しているだけではなく、アプリケーション自体があらかじめエクスポート/インポートによって作成されていることが必須です。

以下より、そのような条件を満たす開発向けのインスタンスを作成する方法を紹介します。

説明のためにAlways FreeのAutonomous Transaction Processingを使います。

最初にインスタンスAPEXPRODが作成済みとします。APEXのワークスペースとしてAPPWKSPが作成されています。

アプリケーションとしては、サンプル・データセットEMP/DEPTをインストールすると作成できるデモ - 従業員 / 部門を使います。


スキーマAPPWKSPには、表EMPやDEPTといったオブジェクトが作成されています。

select * from user_objects


ワークスペースAPPWKSPワークスペースIDを確認します。

select workspace_id, workspace from apex_workspaces where workspace = 'APPWKSP'



開発用途のワークスペースを作成するために必要な情報は以上です。


データベースのクローンを作成して対応


APEXのワークスペースやアプリケーションもデータベースに保存されているため、データベースごとクローンすると開発用途の環境が出来上がります。その場合は特にワークスペースIDを意識する必要がありません。

Always Freeのデータベースは2つまで作成できるため、他にデータベースを作成していなければデータベースのクローンを実行できます。

OCIのコンソールの他のアクションクローンの作成を実行します。


クローン・タイプの選択として、フル・クローンを選びます。ソースのクローニングデータベース・インスタンスからのクローニングを選択します。過去の状態が必要な場合、または、現在稼働しているデータベースに極力影響を与えたくない場合は、バックアップからのクローニングも選択対象になるでしょう。


これ以外に入力する情報は、データベースの新規作成に必要な情報と同じです。

以下の例では、表示名データベース名APEXDEVとしています。


管理者資格証明パスワードを入力し、Autonomous Databaseのクローンの作成を実行します。


しばらくすると、データベースがクローンとして作成されます。


クローンしたデータベースには、APEXのワークスペース、アプリケーション、登録済みのユーザー等も含まれます。そのため、クローン元と同様にワークスペース名APPWKSP、ユーザーAPPWKSPにてサインインできます。

作成済みのアプリケーションもクローンに含まれています。


ワークスペースIDも同じ値になります。




別のデータベースでの対応


元になるインスタンスよりワークスペースのエクスポートを実行します。

管理サービスにサインインし、ワークスペースの管理を開きます。


ワークスペースのエクスポートを開きます。


エクスポートするワークスペース(今回はAPPWKSP)を選択し、ワークスペースのエクスポートを実行します。


チーム開発を含めるはいエクスポート・タイプ最小がデフォルトです。そのまま変更せず、ファイルを保存をクリックします。


ワークスペース名.sql、今回の例ではAPPWKSP.sqlというファイルが、ワークスペースのエクスポートとしてダウンロードされます。ファイルがダウンロードされたら、取消をクリックしてダイアログを閉じます。

エクスポート・タイプ最小の他に、完全も選択可能です。ただし、ヘルプには以下のように記載されているので、通常は最小を選択します。

SQLスクリプト、SQLコマンドの履歴、保存されたSQL、ユーザー・プリファレンス、開発者のログイン履歴、電子メール・ログおよびユーザー・インタフェースのデフォルトを含め、すべてのワークスペース・アーティファクトを別のインスタンスに複製する場合にのみ、「完全」に設定します。ほとんどの場合は、デフォルト値「最小」を変更しないでください

エクスポートしたワークスペースを、開発用途のデータベースにインポートします。

APEXの管理サービスにサインインし、ワークスペースの管理を開きます。

ワークスペースのインポートを開きます。


ファイルのインポートとして、エクスポートしたワークスペースのファイル(今回はAPPWKSP.sql)を選択します。

へ進みます。


インストールをクリックして、ワークスペースをインポートします。


デフォルト・パーシング・スキーマの作成について確認されます。

APEXのワークスペースのインポートには、ワークスペースに紐づいていたスキーマおよびスキーマに含まれるデータベース・オブジェクトは含まれません。あらかじめ(または、ワークスペースの作成後に)元のデータベースからData Pumpなどでエクスポート/インポートを行い、別途複製する必要があります。

今回は、スキーマAPPWKSPを新規作成しています。へ進みます。


表示されたプライマリ・スキーマおよび指定された追加スキーマへの完全なアクセス権を持つワークスペースのインストールを実行する場合に選択してください。にチェックを入れます。

へ進みます。


インポートするワークスペースのワークスペースIDは、元のワークスペースIDと同じになります。

ワークスペースのインストールを実行します。


ワークスペースのインポートが完了します。今回の手順では、スキーマAPPWKSPも作成されます。


既存のワークスペースより、インポートされたワークスペースを確認できます。


ワークスペースのエクスポート/インポートではなく、単にワークスペースを作成する場合は、ワークスペースの作成時に詳細を開き、ワークスペースIDを指定します。


この場合でも、開発用途のワークスペースとして使用できますが、ワークスペースに作成されたApplication Expressユーザーなど、ワークスペースに構成済みの情報はコピーされません。


ページのエクスポートとインポートの確認



データベースAPEXPRODよりAPEXアプリケーションをエクスポートし、開発用途のデータベースAPEXDEVへインポートします。ワークスペースはAPPWKSPです。

データベースAPEXDEVのワークスペースAPPWKSPにサインインし、アプリケーションのインポートを開始します。

アプリケーションのインポート時に、次のアプリケーションとしてインストールとして、エクスポート・ファイルのアプリケーションID 100を再利用を選択します。アプリケーションIDの数値はアプリケーションによって異なりますが、再利用をすることにより同じアプリケーションIDにてインストールされます。


サンプル・データセットのEMP/DEPTをインストールし、表EMPとDEPTをインストールしておきます。

データベースAPEXDEVのワークスペースAPPWKSPにサインインし、ページの新規作成とエクスポートを行います。

アプリケーションデモ - 従業員/部門に、表EMPを操作する対話グリッドのページを作成します。

ページ作成ウィザードを起動し、フォームを選択します。


編集可能対話グリッドを選択します。


ページ名対話グリッドとします。へ進みます。


ナビゲーションのプリファレンスとして、新規ナビゲーション・メニュー・エントリの作成を選択します。

へ進みます。


データ・ソース表/ビューの名前として、EMPを指定します。作成をクリックします。


対話グリッドのページが作成されます。作成されたページを実行すると、以下のようになります。

ナビゲーション・メニュー対話グリッドが表示されます。


ページのユーティリティ・メニューを開いて、エクスポートを実行します。


指定されているページを確認し、ページのエクスポートを実行します。


fアプリケーションID_page_ページ番号.sql(今回はf100_page_7.sql)というファイルがダウンロードされます。

このファイルを、開発用途のデータベースにインポートします。

アプリケーション・ビルダーよりインポートを実行します。


ドラッグ・アンド・ドロップの領域に先ほどダウンロードしたファイルf100_page_7.sqlを選択します。ファイル・タイプとして、データベース・アプリケーション、ページまたはコンポーネントのエクスポートを選択します。

へ進みます。


ファイルのアップロードが完了したので、へ進みます。


 ページの起点として、このページは、現行のワークスペースのアプリケーションからエクスポートされました。と表示されます。

ページのインストールを実行します。


ページがインポートされます。ページを実行して、結果を確認します。


ページのみのインポートなので、ナビゲーション・メニューは作成されていません。


以上で、ページ単位のエクスポート/インポートの手順を確認できました。

Oracle APEXのアプケーション作成の参考になれば幸いです。