CData Software Blog

クラウド連携のCData Software の技術ブログです。

超高速開発ツールTALONでOffice 365のスケジュール編集画面を作成する

こんにちは。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

上記ファイルに以下の2行を追記してください。

1.jndi.name=jdbc/office365
1.dialect=jp.talon.common.jdbc.doma.CdataDialect

設定が完了したらPayara Serverを再起動します。

JDBCリソースの作成

Payara Serverの管理コンソールを開いてログインしてください。

メニューのツリーにある「JDBCリソース」を選択します。 JDBCリソース画面を開いたら「新規」をクリックしてください。

f:id:urabe_shintaro:20200605132039p:plain

「新規JDBCリソース」画面が開きます。 JNDI名にtalonJdbc.propertiesに設定したJNDI名「jdbc/Office365」を入力し、「プール名」に「JDBC接続プールの作成」セクションで作成した接続プール名を選択してください。

f:id:urabe_shintaro:20200605132053p:plain

「OK」をクリックするとJDBCリソースが作成されます。

上の手順を実行するとOffice 365へ接続するJDBCリソースとして「jdbc/Office365」が作成され、TALONからリソースを参照できるようになります。

TALONでの画面構築

TALONでOffice 365のスケジュールデータにアクセスする画面を構築します。

テーブル権限の設定

メインメニューの「機能構築」から「テーブル更新権限設定画面」を開きます。 「検索」をクリックするとテーブル一覧が表示されるので、更新権限を与えるテーブルをチェックします。

f:id:urabe_shintaro:20200605162556p:plain

今回はJDBCリソース「jdbc/Office365」を通してスケジュール情報を更新するため、jdbc/Office365の「Events」テーブルをチェックします。 チェックが完了したら「設定」をクリックしてください。

画面作成

メインメニューの「機能構築」から「機能設定画面」を開きます。 「機能ID」と「機能名」に任意の名称を入力します。 今回はそれぞれ「OFFICE365_EVENTS」、「Office365 Events」としました。

f:id:urabe_shintaro:20200605162610p:plain

ブロックの作成

「アプリケーション」タブを開き、「ブロック」セクションの「設定」をクリックします。   f:id:urabe_shintaro:20200605162636p:plain

SELECT文の作成

下図のようなブロック設定画面が開きます。 はじめにデータを抽出するSELECT式を作成します。 「DB接続先」に「jdbc/Office365」、「更新テーブル」に「Events」を選択し、「SELECT式作成画面」をクリックします。

f:id:urabe_shintaro:20200605162656p:plain

下図のようなSELECT式作成画面が開きます。 テーブル名の一覧から「Events」をチェックし、「追加」をクリックします。

f:id:urabe_shintaro:20200605162728p:plain

「項目選択」欄にEventsテーブルのフィールドのリストが表示されるので、抽出するフィールドをチェックし「抽出項目追加」をクリックします。 今回は以下のフィールドを選択しました。

フィールド名 データ内容
id 予定のId  
subtitle 予定のタイトル
start_dateTime 開始時刻
start_timeZone 開始時刻のタイムゾーン
end_dateTime 終了時刻
end_timeZone 終了時刻のタイムゾーン
UserId Office365ユーザのId

f:id:urabe_shintaro:20200605162749p:plain

次に抽出条件を設定します。 通常のOAuth認証方式ではログインユーザー(me)でEventデータを取得しますが、 OAuth認証方法としてカスタムOAuthアプリを作成した場合、 Eventsテーブルのデータを取得する際にUserIdの指定が必須になります。 以下のようにUserId='ユーザId'の抽出条件を追加してください。

f:id:urabe_shintaro:20200605162812p:plain

最後に「設定」をクリックすると入力した情報をもとにSELECT文が生成されます。

項目情報の設定

「SELECT式」にSQLのSELECT文が表示されますので内容を確認してください。 この画面上でSQL文を修正することもできます。 内容を確認したら「表示項目設定」をクリックしてください。

f:id:urabe_shintaro:20200605162828p:plain

「項目情報」タブを開くとSELECT文から抽出した項目の一覧が表示されます。 この画面で各項目の詳細な設定を行います。

はじめにidとUserIdをプライマリキー(Pkey)として指定します。idとUserIdの「PKey」列をチェックしてください。 また、更新対象としてsubject, start_dateTime, end_dateTime, start_timeZone, end_timeZoneを指定します。各項目の「更新」列をチェックしてください。

f:id:urabe_shintaro:20200605162858p:plain

start_dateTimeとend_dateTimeには時刻情報が入ります。 これらのフォーマットが「YYYY/MM/DD」になっていたら、「YYYY/MM/DD hh:mm:ss」形式に修正してください。

f:id:urabe_shintaro:20200605162911p:plain

続いて登録初期値を指定します。

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のエラーを起こさないための設定です。

f:id:urabe_shintaro:20200605162926p:plain

上記の制約は更新時にも影響します。UPDATE文で時刻を更新する際には必ずタイムゾーンを指定しなければなりません。 このように更新時の値を制御するにはDB設定式を登録します。

DB設定式を登録するには「DB設定式」列の「登録」をクリックし「設定値登録」画面を開きます。 「設定値登録」画面の「値」にDB設定式を入力します。 例えば、レコードの更新時にstart_timeZoneとして「UTC」を指定する場合、以下のように「値」に「"UTC"」と設定します。

f:id:urabe_shintaro:20200605163012p:plain

本来は、開始時刻の指定時には開始時刻の、終了時刻の指定時には終了時刻のタイムゾーンをそれぞれセットしますが、条件分岐を避けるため、更新時には時刻指定に関わらず開始/終了時刻とタイムゾーンを指定するように制御します。 このとき、更新対象でない時刻項目には元々設定されている値を指定します。 以下のように、レコードの更新時にstart_dateTimeとして元の値を指定する場合、以下のようにDB設定式の値に「"%1_start_dateTime%」と設定します。

f:id:urabe_shintaro:20200605163029p:plain

今回設定したDB設定式は以下の通りです。

フィールド名 DB設定式
start_dateTime %1_start_dateTime%
end_dateTime %1_end_dateTime%
start_timeZone "UTC"
end_timeZone "UTC"

処理権限の設定

「詳細設定」タブを開き、「処理権限」欄の「登録」、「更新」、「削除」を全てチェックしてください。

f:id:urabe_shintaro:20200605163056p:plain

ここまでの設定が完了したら、「設定」をクリックしてブロックの設定を保存してください。

表示ユーザの追加

「機能設定画面」に戻り、「ユーザグループ」タブを開いてください。 表示対象のユーザを「表示」リストボックスに移動させ、「設定」をクリックしてください。

f:id:urabe_shintaro:20200605163111p:plain

TALONで作成した画面の操作

作成した画面を確認します。 メインメニューの「機能利用」から「機能呼出画面」をクリックしてください。 作成した画面(今回はOffice365 Events)を選択してEnterキーを押下すると画面が表示されます。

f:id:urabe_shintaro:20200605163136p:plain

予定の参照

「検索」をクリックするとOffice 365の予定データが表示されます。

f:id:urabe_shintaro:20200605163148p:plain

予定の更新

続いて予定データを更新してみます。 以下のように時刻を編集し「確定」をクリックしてください。

f:id:urabe_shintaro:20200605163201p:plain

更新が成功すると更新後のデータが表示されます。

f:id:urabe_shintaro:20200605163223p:plain

予定の追加

新しい予定データを追加してみます。 「行追加」をクリックすると行が追加されます。 各項目の値を入力し「確定」をクリックします。

f:id:urabe_shintaro:20200605163238p:plain

追加が成功すると追加後のデータが表示されます。

f:id:urabe_shintaro:20200605164024p:plain

予定の削除

最後にレコードの削除を試します。 削除したい行の「削除」をクリックすると画面上の行が削除されます。 この状態ではまだOffice 365のデータに反映されていませんが、「確定」をクリックすると元のデータも削除されます。

f:id:urabe_shintaro:20200605164102p:plain

おわりに

本記事ではTALONでOffice 365のスケジュール編集画面を作成する方法を紹介しました。 TALONからOffice 365への接続にはCData Office 365 JDBC Driverを利用しています。

CData JDBC Driversを利用することで、TALONと200を超えるクラウドサービスへの接続がノーコードで実現できます。

f:id:urabe_shintaro:20200131184240p:plain

CData JDBC Driversは30日間の評価版を無料でご利用頂けます。 TALONクラウドサービスとのデータ連携をご検討の方はぜひお試しください。