こんにちは。CData Software Japanエンジニアの浦邊です。
本記事ではTALONでOffice 365のスケジュール情報の参照・編集画面を作成する方法を紹介します。
TALON
TALONは、業務システムの開発をノンプログラムで行える超高速開発・運用ツールです。 WEBのGUI画面上でデータベースの表示項目や抽出条件などを選択するだけで、システムが即座に自動生成されます。
www.talon.jp
Payara Serverの設定
最新版のTALONはアプリケーションサーバとしてPayara Serverを使用しています。 TALONとOffice 365との連携に先立ち、TALONのサーバ(Payara Server)上にOffice 365への接続を作成します。
JDBC接続プールの作成
Payara ServerからOffice 365へ接続するJDBC接続プールを作成します。 接続プールの作成方法については以下の記事を参考にしてください。
www.cdatablog.jp
JDBCリソースの作成
上で作成した接続プールをもとに、TALONへ接続するJDBCリソースを作成します。
ドライバ情報の設定
Payara Serverのマシン上で、以下のファイルをテキストエディタで開いてください。
C:\payara5\glassfish\domains\production\lib\classes\talonJdbc.properties
上記ファイルに対し、TALONのバージョンに応じて以下の設定を追記してください。
【TALON Ver5系】
1.jndi.name=jdbc/office365
1.dialect=jp.talon.common.jdbc.doma.CdataDialect
【TALON Ver6系】
1.jndi.name=jdbc/office365
1.dialect=jp.talon.common.jdbc.doma.cdata.CdataDialect
設定が完了したらPayara Serverを再起動します。
JDBCリソースの作成
Payara Serverの管理コンソールを開いてログインしてください。
メニューのツリーにある「JDBCリソース」を選択します。 JDBCリソース画面を開いたら「新規」をクリックしてください。
「新規JDBCリソース」画面が開きます。 JNDI名にtalonJdbc.propertiesに設定したJNDI名「jdbc/Office365」を入力し、「プール名」に「JDBC接続プールの作成」セクションで作成した接続プール名を選択してください。
「OK」をクリックするとJDBCリソースが作成されます。
上の手順を実行するとOffice 365へ接続するJDBCリソースとして「jdbc/Office365」が作成され、TALONからリソースを参照できるようになります。
TALONでの画面構築
TALONでOffice 365のスケジュールデータにアクセスする画面を構築します。
テーブル権限の設定
メインメニューの「機能構築」から「テーブル更新権限設定画面」を開きます。 「検索」をクリックするとテーブル一覧が表示されるので、更新権限を与えるテーブルをチェックします。
今回はJDBCリソース「jdbc/Office365」を通してスケジュール情報を更新するため、jdbc/Office365の「Events」テーブルをチェックします。 チェックが完了したら「設定」をクリックしてください。
画面作成
メインメニューの「機能構築」から「機能設定画面」を開きます。 「機能ID」と「機能名」に任意の名称を入力します。 今回はそれぞれ「OFFICE365_EVENTS」、「Office365 Events」としました。
ブロックの作成
「アプリケーション」タブを開き、「ブロック」セクションの「設定」をクリックします。
SELECT文の作成
下図のようなブロック設定画面が開きます。 はじめにデータを抽出するSELECT式を作成します。 「DB接続先」に「jdbc/Office365」、「更新テーブル」に「Events」を選択し、「SELECT式作成画面」をクリックします。
下図のようなSELECT式作成画面が開きます。 テーブル名の一覧から「Events」をチェックし、「追加」をクリックします。
「項目選択」欄にEventsテーブルのフィールドのリストが表示されるので、抽出するフィールドをチェックし「抽出項目追加」をクリックします。 今回は以下のフィールドを選択しました。
フィールド名 |
データ内容 |
id |
予定のId |
subtitle |
予定のタイトル |
start_dateTime |
開始時刻 |
start_timeZone |
開始時刻のタイムゾーン |
end_dateTime |
終了時刻 |
end_timeZone |
終了時刻のタイムゾーン |
UserId |
Office365ユーザのId |
次に抽出条件を設定します。 通常のOAuth認証方式ではログインユーザー(me)でEventデータを取得しますが、 OAuth認証方法としてカスタムOAuthアプリを作成した場合、 Eventsテーブルのデータを取得する際にUserIdの指定が必須になります。 以下のようにUserId='ユーザId'の抽出条件を追加してください。
最後に「設定」をクリックすると入力した情報をもとにSELECT文が生成されます。
項目情報の設定
「SELECT式」にSQLのSELECT文が表示されますので内容を確認してください。 この画面上でSQL文を修正することもできます。 内容を確認したら「表示項目設定」をクリックしてください。
「項目情報」タブを開くとSELECT文から抽出した項目の一覧が表示されます。 この画面で各項目の詳細な設定を行います。
はじめにidとUserIdをプライマリキー(Pkey)として指定します。idとUserIdの「PKey」列をチェックしてください。 また、更新対象としてsubject, start_dateTime, end_dateTime, start_timeZone, end_timeZoneを指定します。各項目の「更新」列をチェックしてください。
start_dateTimeとend_dateTimeには時刻情報が入ります。 これらのフォーマットが「YYYY/MM/DD」になっていたら、「YYYY/MM/DD hh:mm:ss」形式に修正してください。
続いて登録初期値を指定します。
Eventsテーブルでは、開始または終了時刻を指定した新規レコードの挿入時にはタイムゾーンをセットで指定する必要があります。 例えば、Eventsテーブルに対して以下のSQLを実行するとエラーが発生します。
INSERT INTO events(start_dateTime) VALUES('2020/06/01 10:00:00');
結果
[Code: 0, SQL State: HY000] [TimeZoneNotSupportedException] A valid TimeZone value must be specified. The following TimeZone value is not supported: ''.
そのため、新規登録時に必ずタイムゾーンに'UTC'を入力するよう設定します。 start_timeZone, end_timeZoneの「登録初期値」列に「UTC」と入力してください。
また今回はSELECT文でUserIdの指定が必須でしたが、挿入時にも必要なため登録初期値にユーザIdも設定しています。 idの「$」はデータ登録時に実行されるSELECT COUNT(*)のWHERE句でid=nullのエラーを起こさないための設定です。
上記の制約は更新時にも影響します。UPDATE文で時刻を更新する際には必ずタイムゾーンを指定しなければなりません。 このように更新時の値を制御するにはDB設定式を登録します。
DB設定式を登録するには「DB設定式」列の「登録」をクリックし「設定値登録」画面を開きます。 「設定値登録」画面の「値」にDB設定式を入力します。 例えば、レコードの更新時にstart_timeZoneとして「UTC」を指定する場合、以下のように「値」に「"UTC"」と設定します。
本来は、開始時刻の指定時には開始時刻の、終了時刻の指定時には終了時刻のタイムゾーンをそれぞれセットしますが、条件分岐を避けるため、更新時には時刻指定に関わらず開始/終了時刻とタイムゾーンを指定するように制御します。 このとき、更新対象でない時刻項目には元々設定されている値を指定します。 以下のように、レコードの更新時にstart_dateTimeとして元の値を指定する場合、以下のようにDB設定式の値に「"%1_start_dateTime%」と設定します。
今回設定したDB設定式は以下の通りです。
フィールド名 |
DB設定式 |
start_dateTime |
%1_start_dateTime% |
end_dateTime |
%1_end_dateTime% |
start_timeZone |
"UTC" |
end_timeZone |
"UTC" |
処理権限の設定
「詳細設定」タブを開き、「処理権限」欄の「登録」、「更新」、「削除」を全てチェックしてください。
ここまでの設定が完了したら、「設定」をクリックしてブロックの設定を保存してください。
表示ユーザの追加
「機能設定画面」に戻り、「ユーザグループ」タブを開いてください。 表示対象のユーザを「表示」リストボックスに移動させ、「設定」をクリックしてください。
TALONで作成した画面の操作
作成した画面を確認します。 メインメニューの「機能利用」から「機能呼出画面」をクリックしてください。 作成した画面(今回はOffice365 Events)を選択してEnterキーを押下すると画面が表示されます。
予定の参照
「検索」をクリックするとOffice 365の予定データが表示されます。
予定の更新
続いて予定データを更新してみます。 以下のように時刻を編集し「確定」をクリックしてください。
更新が成功すると更新後のデータが表示されます。
予定の追加
新しい予定データを追加してみます。 「行追加」をクリックすると行が追加されます。 各項目の値を入力し「確定」をクリックします。
追加が成功すると追加後のデータが表示されます。
予定の削除
最後にレコードの削除を試します。 削除したい行の「削除」をクリックすると画面上の行が削除されます。 この状態ではまだOffice 365のデータに反映されていませんが、「確定」をクリックすると元のデータも削除されます。
おわりに
本記事ではTALONでOffice 365のスケジュール編集画面を作成する方法を紹介しました。 TALONからOffice 365への接続にはCData Office 365 JDBC Driverを利用しています。
CData JDBC Driversを利用することで、TALONと200を超えるクラウドサービスへの接続がノーコードで実現できます。
CData JDBC Driversは30日間の評価版を無料でご利用頂けます。 TALONとクラウドサービスとのデータ連携をご検討の方はぜひお試しください。
関連コンテンツ