2022年12月5日月曜日

GitHubにAPEXアプリをエクスポートする(2) - データベース側の準備

 GitHubでパーソナル・アクセス・トークンを生成したので、それを使ってクリデンシャルを作成します。

また、今回はAPEXのエクスポート処理をPL/SQLのプロシージャとして実装します。APEXアプリケーションからはAPEX 22.2の新機能であるAPI呼び出しを使って、プロシージャを呼び出します。


クリデンシャルの作成


GitHubの操作に使用するクリデンシャルは、DBMS_CLOUD.CREATE_CREDENTIALを呼び出して作成します。そのため、APEXのワークスペース・スキーマにパッケージDBMS_CLOUDの実行権限を与えます。また、後で作成するプロシージャが使用するパッケージDBMS_CLOUD_REPOの実行権限も与えておきます。

grant execute on dbms_cloud to <ワークスペース・スキーマ名>;
grant execute on dbms_cloud_repo to <ワークスペース・スキーマ名>;

ワークスペース名がAPEXDEVの場合、ワークスペース・スキーマ名は通常、先頭にWKSP_が付加されWKSP_APEXDEVのようになります。

grant execute on dbms_cloud to wksp_apexdev;
grant execute on dbms_cloud_repo to wksp_apexdev;

データベース・アクションに管理者ユーザーADMINで接続し、SQLより実行します。


クリデンシャルの作成は、SQLワークショップSQLコマンドより実施します。

以下のコマンドを実行します。
begin
    dbms_cloud.create_credential(
        credential_name => 'GITHUB_CRED'
        , username => 'GitHubのユーザー名'
        , password => 'GitHubのPersonal access token'
    );
end;
作成するクリデンシャルの名前はGITHUB_CREDとしました。



プロシージャEXPORT_APEX_APP_TO_GITHUBの作成




APEXアプリケーションをGitHubへエクスポートするプロシージャEXPORT_APEX_APP_TO_GITHUBを作成します。

以下のSQLを実行します。

SQLワークショップSQLコマンドより実行します。


APEXアプリケーションのエクスポートは、2回実行しています。最初にAPEXアプリケーションとしてインポート可能なZIP形式でのエクスポート、2回目は人間が読めるYAML形式でエクスポートしています。

プロシージャの引数のほとんどは、DBMS_CLOUD_REPO.PUT_FILE、APEX_EXPORT.GET_APPLICATIONの引数として、そのまま渡されます。

一旦、プロシージャを作成した後は、オブジェクト・ブラウザプロシージャよりEXPORT_APEX_APP_TO_GITHUBを選択し、コードを開いて変更できます。

APEXアプリケーションでは、このプロシージャをプロセスとして呼び出します。

続く