動的リレーショナル データ ソースの構成
SQL スクリプトまたはカスタム Java プロシージャ (CJP) として実装され、TDV 管理者が所有するコールバック TDV プロシージャは、TDV Server がデータ ソースとの新しいセッションを確立するために、接続が使用される前に、リレーショナル データ ソースに登録して、データ ソース プロパティ構成に実行時のカスタマイズを適用できます。すべてのカスタマイズは一時的なものです。その範囲は、データ ソース接続で使用される JDBC プロパティの仕様に限定されます。
たとえば、管理者は、リレーショナル データ ソースにアクセスする受信リクエストに関連付けるユーザーを決定する SQL スクリプト プロシージャを定義し、TDV ドメイン固有言語 (DSL) ステートメントを使用して、ユーザー リクエストで使用されるデータ ソース接続に適用するアクセスの種類 (リード/ライトまたはリード・オンリー) を反映するように JDBC 接続プロパティを調整できます。
動的データ ソースの構成例
PROCEDURE callbackprocedure()
BEGIN
declare datasource_path varchar(4000);
declare adapter_name varchar(400);
declare user_name varchar(1000);
declare dsl_statement varchar(4000);
declare properties varchar(1000);
CALL GetEnvironment(System.DATASOURCE_PATH, datasource_path);
CALL GetEnvironment(System.DATASOURCE_ADAPTER_NAME, adapter_name);
CALL GetEnvironment(System.REQUEST_USER_NAME, user_name);
CALL Log(datasource_path || '' || adapter_name || '' || user_name);
IF (user_name = 'admin') then
SET properties ='"ApplicationIntent":"ReadWrite"';
ELSEIF (user_name = 'test') then
SET properties ='"ApplicationIntent":"ReadOnly"';
END IF ;
SET dsl_statement = 'ALTER DATASOURCE ' || datasource_path /*'/shared/automation/oracle_19t*/
|| ' NO INTROSPECTION '
|| ' BASED ON ADAPTER ''' || adapter_name /*'Oracle 19c (Thin Driver)'*/ || ''''
|| ' SET NATIVE PROPERTIES {"connProperties": {' || properties || '}}';
CALL Log(dsl_statement);
EXECUTE IMMEDIATE dsl_statement;
CALL Log('Executed DSL');
END