0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

国産IDaaS Exticを使ってみる 4. Database Provisioning

Last updated at Posted at 2025-03-18

前回の続きです。

ExticにおけるDBプロビジョニング

「DBエージェント」と呼ばれるWebアプリケーションを通じて、Exticのユーザー情報をオンプレミスのデータベースへ連携します。
エージェントを複数稼働させることで、複数のデータベースへのプロビジョニングを行えます。

設定

システム要件に合わせて以下の環境を用意しています。
Webサーバー: Windows Server 2022 + Eclipse Temurin JDK 17 + Apache Tomcat 10.1.33
DBサーバー: AlmaLinux 9.5 + PostgreSQL 15.10

データベースの準備

任意の形式でテーブルを作成します。
必ずExticが管理するレコードであることを示す列が必要です。

$ sudo -i -u postgres psql
psql (15.10)

postgres=# create database extic;
CREATE DATABASE
postgres=# create role extic with login password 'extic';
CREATE ROLE
postgres=# grant all on database extic to extic;
GRANT
postgres=# \c extic
データベース"extic"にユーザー"postgres"として接続しました。
extic=# create schema extic authorization extic;
CREATE SCHEMA
extic=# create table extic.extic (
name char(24),
email char(50),
extic char(5),
id char(4),
adddate TIMESTAMP,
suffix char(30)
);
CREATE TABLE
extic=# alter table extic.extic owner to extic;
ALTER DATABASE

Extic本体側の準備

Extic管理コンソール > アプリケーションから「Database (オンプレミス)」を選択します。
image.png
表示名を設定し、接続キーを「発行」して保存します。
スクリーンショット 2024-12-26 113149.png
対象ユーザーでアプリケーションを「使用する」設定にします。
image.png

Webアプリケーションの設定

管理コンソール > リリース情報 > モジュール からdbagent.warをダウンロードします。
image.png
Tomcatが起動している状態でダウンロードした.warファイルを<tomcat_home>\webapps以下にコピーし、デプロイされることを確認します。
image.png
<tomcat_home>\webapps\dbagent\WEB-INF\classes\META-INF\application_setting.propertiesを編集します。
subdomain=にExticテナントのサブドメイン(xxx.ex-tic.com の xxx の部分)を、apiconnect=に発行した接続キーを指定します。
sqlite_directory=には実在のパスを指定します。
その他の設定は今回は行いません。
スクリーンショット 2024-12-26 140011.png
保存してTomcatを再起動します。
http://(ホスト名):(ポート)/dbagent/にアクセスします。
ここではExticの管理者ロールを持つユーザーでログインします。
次の画面に遷移します。
image.png
画面右上のプルダウンメニューから「設定」を選択します。
image.png
「DB接続設定」では、DBへの接続情報を設定します。
image.png
「ユーザーマッピング設定」では、連携先のテーブル名、レコード識別属性名と、Exticの属性とDBの列のマッピング設定を行います。
image.png
image.png
マッピング関数が使用できます。
ここでは、id列に1からの連番を、adddate列に追加日時を、suffix列にメールアドレスの@より後ろの部分を切り取った値を追加しています。
Exticのマッピング関数では、If文の判定において"分岐しなかった側"の処理の評価もされるため、仮に下記のような使い方をすると、メールアドレス属性が空の場合に"DoNothing"で処理スキップとはならず、RIGHT関数が実行されてしまうためエラーになります。

=IF([メールアドレス] != "", (RIGHT([メールアドレス], LEN([メールアドレス]) - FIND([メールアドレス], "@"))), "DoNothing")

そのためこのように、メールアドレス属性に値が無い場合にエラーとならないようにする必要があります。
image.png

=RIGHT([メールアドレス], IF(FIND([メールアドレス], "@") == 0, 1, LEN([メールアドレス]) - FIND([メールアドレス],"@")))

「ポーリング間隔」からはExticへのポーリングを行う間隔と、Tomcatの起動時にポーリング処理を開始するか選択します。
image.png

確認

右上のドロップダウンリストから「実行」を選択すると、次の画面に遷移します。
「起動する」を選択するとポーリング処理が開始されます。
「即時実行する」とポーリング間隔に関わらず現在のExticのユーザー情報をDBに連携します。
image.png
即時実行します。
image.png
DBにレコードが追加されます。
image.png

extic=# select * from extic.extic;
           name           |                       email                        | extic |  id  |       adddate       |             suffix

--------------------------+----------------------------------------------------+-------+------+---------------------+-------------------------------
 testuser2024             | testuser2024@example.com                           | EXTIC | 1    | 2024-12-26 15:12:46 | example.com

(1 行)

メールアドレス属性のないユーザーを対象としてもこの通り処理が実行されていることがわかります。
image.png

extic=# select * from extic.extic;
              name              |                       email                        | extic |  id  |       adddate       |             suffix
--------------------------------+----------------------------------------------------+-------+------+---------------------+--------------------------------
 通常ユーザー                   |                                                    | EXTIC | 2    | 2024-12-26 15:17:16 |
 testuser2024                   | testuser2024@example.com                           | EXTIC | 1    | 2024-12-26 15:12:46 | example.com
(2 行)

ExticからオンプレミスDBへのプロビジョニングの検証は以上になります。
記事中の「マッピング関数」はExticの各モジュールで使用可能で、紹介したもの以外にも多くの関数が存在します。
次回は「コマンド(オンプレミス)実行」について検証します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?