以下のスクリプトを実行し、Genson-jsのESモジュールからOracle Database 23aiのMLEモジュールを作成します。
SQLワークショップのSQLスクリプトとして実行するか、(SQLコマンドでは1行ごとでしか実行できないため)1行ごとにSQLコマンドで実行します。
最初にMLEモジュールESM_GENSON_JS_0_0_8を作成します。
モジュールESM_GENSON_JS_0_0_8を含むMLE環境JSONENVを作成します。
SQLコマンドで以下を実行し動作を確認します。SQLコマンドの言語としてJavaScript(MLE)を選択し、環境に先ほど作成したJSONENVを指定します。
const Genson = await import('/npm/genson-js@0.0.8/+esm');
const jsonData = {
"firstName": "Sakura",
"age": 35
};
const schema = Genson.createSchema(
jsonData
);
console.log(JSON.stringify(schema, null, 2));
スクリプトを実行してJSONスキーマが出力されれば、Genson-jsは正しくMLEモジュールとして作成されています。
アプリケーション作成ウィザードを起動します。作成するアプリケーションの名前はJSON Schema Generator by Genson-jsとします。
ページの追加をクリックし、ページ名をCreate Schemaとした空白のページとMerge Schemasとした空白のページを追加します。
以上で、アプリケーションの作成を実行します。
アプリケーションが作成されます。アプリケーションはCreate SchemaとMerge Schemasのページを含みます。
このアプリケーションからGenson-jsを呼び出すために、MLE環境として作成したJSONENVを紐づけます。
アプリケーション定義のセキュリティを開き、データベース・セッションのMLE環境に、JSONENVを設定します。
以上の設定で、このアプリケーション内でGensos-jsを呼び出すことができるようになります。
Create Schemaのページを開き、JSONデータからJSONスキーマを生成する機能を実装します。
JSONデータを入力するページ・アイテムとしてP2_JSON_DATAを作成します。タイプはテキスト領域です。続いて、JSONデータからJSONスキーマを生成するボタンCREATE_JSON_SCHEMAを作成します。動作のアクションはページの送信です。生成したJSONスキーマを保存するページ・アイテムとしてP2_JSON_SCHEMAを作成します。タイプはテキスト領域です。
ボタンCREATE_JSON_SCHEMAを押した時に実行されるプロセスを作成します。
識別の名前はCreate JSON Schemaとします。タイプはコードを実行です。ソースの言語にJavaScript(MLE)を選択し、JavaScriptコードとして以下を記述します。
const Genson = await import('/npm/genson-js@0.0.8/+esm');
const jsonData = JSON.parse(apex.env.P2_JSON_DATA);
const schema = Genson.createSchema(
jsonData
);
apex.env.P2_JSON_SCHEMA = JSON.stringify(schema, null, 2);
サーバー側の条件のボタン押下時にCREATE_JSON_SCHEMAを指定します。
以上でCreate Schemaのページは完成です。ページを実行すると以下のように動作します。
Merge Schemasのページを開き、JSONスキーマをマージする機能を実装します。
JSONスキーマを入力するページ・アイテムとしてP3_JSON_SCHEMA_1とP3_JSON_SCHEMA_2を作成します。Genson_jsのファンクションmergeSchemaの引数はマージするJSONスキーマの配列を受け付けるため、2つ以上のJSONスキーマを一度にマージすることができます。ただし、このページでは2つに限定しています。
JSONスキーマをマージするボタンMERGE_JSON_SCHEMAを作成します。動作のアクションはページの送信です。生成したJSONスキーマを保存するページ・アイテムとしてP3_JSON_SCHEMAを作成します。
ボタンMERGE_JSON_SCHEMAを押した時に実行されるプロセスを作成します。
識別の名前はMerge JSON Schemaとします。タイプはコードを実行です。ソースの言語にJavaScript(MLE)を選択し、JavaScriptコードとして以下を記述します。
const Genson = await import('/npm/genson-js@0.0.8/+esm');
const jsonSchema1 = JSON.parse(apex.env.P3_JSON_SCHEMA_1);
const jsonSchema2 = JSON.parse(apex.env.P3_JSON_SCHEMA_2);
const schema = Genson.mergeSchemas(
[ jsonSchema1, jsonSchema2 ]
);
apex.env.P3_JSON_SCHEMA = JSON.stringify(schema, null, 2);
以上でMerge Schemaのページは完成です。ページを実行すると以下のように動作します。
以上でアプリケーションは完成です。
今回作成したAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/json-schema-generator-by-genson-js.zip
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完