OCIのシークレットを操作するRESTデータ・ソースを作成し、それを使ったAPEXアプリケーションを作成しました。
RESTデータ・ソースを使用するにあたり、いくつか考慮する点を記述します。
フォームの初期化と行のフェッチ
以下のようにフォーム・リージョンのソースとしてRESTデータ・ソースが設定されている場合、フォームの初期化プロセス(プロセス・タイプがフォーム - 初期化)は、データベース・アクションが行のフェッチである操作を呼び出します。
今回作成したアプリケーションでは、フォームの初期化は初期化フォームSecret Detailによって実施されます。
呼び出されるREST APIは、データベース・アクションが行のフェッチである操作です。
OCI Vault Secret Management APIでは、これはListSecretsの呼び出しになります。つまり、指定したコンパートメントに保存されているすべてのシークレットを受け取り、APEX側でその中から特定のシークレットを取り出します。
OCIのシークレットであればそれほど大量にデータがあるとも思えませんが、フォームを開くたびにデータを全件取得することは、パフォーマンスに悪い影響を与える可能性があります。
APEXの開発者によると、データの一覧を取得するREST APIと、その中の特定の1行を取得するREST APIでは、必ずしも同じデータ項目を返すわけではないことから、レポートと同じAPIを呼び出してフォームを初期化している、とのことでした。
今回使用しているAPIのListSecrets(レスポンスはSecretSummary)とGetSecret(レスポンスはSecret)のように、SecretSummaryの属性がすべてSecretに含まれている場合は、フォーム・リージョンのRESTデータ・ソースの行のフェッチを、特定の行だけを取得するAPI呼び出し(今回の例ではGetSecret)に変更することができます。
プロセス初期化フォームSecret DetailのタイプをAPI呼出しに変更し、設定のタイプとしてRESTソース、RESTソースとしてVault Secret Management、操作にGET - /{secretId}を指定します。
サーバー側の条件のタイプとしてアイテムはNULLではないを選択し、アイテムにP3_IDを指定します。
すべてのパラメータの値として、適切なページ・アイテムを指定します。
フォームを開く際にP3_COMPARTMENT_IDに値を渡していましたが、上記の対応を行ったあとはシークレットIDだけでコンテンツを取得するため、不要になります。
以上で対応は完了です。
RESTソース・カタログの活用
RESTソース・カタログを作成すると、作成したRESTデータ・ソースを保存することができます。RESTソース・カタログに保存されたRESTデータ・ソースの定義を元に、新たにRESTデータ・ソースを作成したり、既存のRESTデータ・ソースの定義を更新することができます。
ワークスペース・ユーティリティのRESTソース・カタログを開きます。
RESTソース・カタログの作成には、カタログ・グループが必要です。最初にカタログ・グループを作成します。
グループの作成をクリックします。
名前はOCI REST APIとします。説明はhttps://docs.oracle.com/en-us/iaas/api/とします。
作成をクリックします。
カタログ・グループを作成したので、RESTソース・カタログを作成します。
カタログの作成をクリックします。
グループには、先ほど作成したOCI REST APIを選択します。名前はVault Servicesとします。
内部名は組織内で一意となる名称にします。
説明を記述して、作成をクリックします。
RESTソース・カタログが作成されます。
RESTソース・カタログが作成されていると、RESTデータ・ソースのRESTソース・カタログのセクションより、カタログに保存することができます。
カタログ・グループおよびカタログを選択し、RESTデータ・ソースをカタログに保存します。
RESTデータ・ソースの新規作成時に、RESTソース・カタログから作成することもできるようになります。
RESTソース・カタログとして、エクスポートやインポートも可能です。
RESTデータ・カタログを活用することにより、一度作成したRESTデータ・ソースを再利用できます。
今回の記事は以上です。
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完