本記事は有休申請システムの構築をベースに、トリガの使い方とDBとの関係性を説明します。
こんな方に向けて書いてます
スパイラルを使い始めてる方
業務でスパイラルの使い方を広げたい方
スパイラルの利用シーンを知りたい方
全体フロー説明
・社員はシステムにログイン
↓
・社員は有給休暇申請フォームから取得したい有給休暇を送信
↓
・アクションが発動し、社員DBの「有給残日数」から取得した有給休暇日数を引く。
有給残日数が0の場合、エラー処理し、有給休暇を取得できない
↓
・登録完了し、有給申請後の有給休暇残日数を確認
トリガを重きに置いているため、承認手順、マイエリア設定等の説明を省略しています。
承認が必要の場合はフローとフィールドの追加が必要です。
アプリ作成
DB作成
フィールド構成は全く同じにしなくても良いので、必要なフィールドを追加してください。
フィールド名 | 差し替えキーワード | タイプ | 詳細設定 |
---|---|---|---|
社員ID | staffID | テキストフィールド(64bytes) | 必須・重複不可・主キー |
氏名 | staffName | テキストフィールド(64bytes) | ― |
パスワード | password | メッセージダイジェスト(SHA256) | ― |
有給残日数 | AnnualLeaveLeft | 実数 | ― |
フィールド名 | 差し替えキーワード | タイプ | 詳細設定 |
---|---|---|---|
TRDB登録日時 | registedDate | テキストフィールド(64bytes) | TRDBはデフォルトに入るため、 識別名はランダムな数字で自動生成されます |
社員ID | staffID | テキストフィールド(64bytes) | 必須・重複不可 |
氏名 | staffName | 実数 | ― |
有給休暇申請日数 | appliedAL | 実数 | ― |
有給残日数 | AnnualLeaveLeft | 実数 | ― |
後に説明しますが、社員IDをルックアップキーとして使って、
社員DBから、「氏名」、「有給残日数」をTRDBに反映したいフィールドを、TRDB側にも作成します。
フォーム設定
今回は有給休暇申請TRDBからフォームを作成します。
フィールド・設定 | 入力設定 |
---|---|
フォーム種類 | 入力フォーム |
セキュリティ設定 | マイエリア認証によるアクセス制限:制限する |
TRDB登録日時 | 特殊入力:登録日時自動取得 |
社員ID | 特殊入力:値を引き継ぐ |
氏名 | 特殊入力:値を引き継ぐ |
有給休暇申請日数 | 入力項目として使用する |
マイエリア設定
社員DB側に、マイエリアを設定します。
認証のあるシステムを前提にし、社員IDとパスワードで、識別キーと認証キーとしていますが、
必要に応じて、認証エリアを設定しましょう。
本記事は具体的な操作を省くため、具体的な設定方法はこちらの記事の「マイエリア作成」をご参考ください。
カスタムページ - 有給休暇申請フォーム
社員がログインしてシステムを利用する前提として、フォームをマイエリアに設置しています。
カスタムページ - サンキューページ
有給休暇申請フォームはTRDBに設置しています。
有給休暇申請TRDBのアクションが実行された後、社員DBの有給残日数をサンキューページに反映させるには、
サンキューページをマイエリアに設置し、社員DBから更新後の値を取得する仕組みが必要です。
理由として、マイエリアは社員DB内に設置されているため、差し替えキーワードを使用して社員DBの情報を取得し、
アクションで計算された後の有給残日数をサンキューページに反映させることができます。
サンクスページには、下記の一文を記載することで有給残日数を反映させることができます。
有給残日数:%val:usr:AnnualLeaveLeft%
同じ原理を利用して、マイエリアに設置された入力フォームに「有給残日数」を追加し、
有給残日数をフォーム内に反映することができます。
<dl class="cf"> <dt class="title">有給残日数</dt> <dd class="data">%val:usr:AnnualLeaveLeft%<br></dd> </dl>
トランザクションDBについて
トランザクションデータとは、マスタデータに基づく操作や、
マスタデータ自体の登録、変更、削除といった手続き処理を指すデータです。
トランザクションDBは、「トランザクションデータ」を使用して「マスタデータ」に対し、
複数のアクション(処理)を実行します。
今回は、有給休暇申請後に、有給休暇申請TRDBからアクションを設定し、
社員DBにある「有給残日数」フィールドから「有給休暇申請日数」を差し引き、
「有給残日数」を更新する処理を行います。
アクション設定
有給申請TRDBの処理を実行し、社員DBの「有給残日数」を更新するため、アクションは「更新」となります。
発動条件は特に設定されていません。
アクション名 | 有給残日数計算 |
発動条件 | 無条件 |
アクション対象DB | 社員DB |
アクション | 更新(UPDATE) |
幹別キーと認証キーを一致する場合のみ、アクションが発生します。
識別キー | トランザクションDB 社員ID | アクション対象DB 社員ID |
認証キー | トランザクションDB 氏名 | アクション対象DB 氏名 |
さまざまな発生条件に応じて、エラー終了、アクション先のDBを更新せず、正常終了などを選択できます。
フォーマットチェック アクション先DBでフォーマットエラーが発生する場合 | エラー終了 |
識別キーチェック アクション先DBの識別キーがNULLの場合 | エラー終了 |
認証キーチェック アクション先DBの識別キーがNULLの場合 | エラー終了 |
更新対象チェック アクション先DBの識別キーがNULLの場合 | エラー終了 |
更新対象チェック アクション先DBで更新対象が1行の場合 | 次のチェックへ |
更新対象チェック アクション先DBで更新対象が2行以上の場合 | エラー終了 |
入力必須チェック アクション先DBの入力必須フィールドに対して、NULLで更新しようとする場合 | エラー終了 |
重複不可チェック アクション先DBで重複エラーが発生する場合 | エラー終了 |
TRDBで行った処理に基づき、社員DBのフィールドを更新します。 「有給休暇申請日数」を加算する場合には、「有給残日数」を減らすため、「-=」を設定します。
その他に、「+=」、「×=」、「なし」を選択することもできます。
TRDBフィールド | 対象DBフィールド | 演算子 |
---|---|---|
社員ID | 社員ID | ー |
氏名 | 氏名 | ー |
有給休暇申請日数 | 有給残日数 | -= |
ー | パスワード | ー |
発動条件が適用されると、アクションがトリガーされ、処理が実行されます。
今回の場合、有給休暇申請DBにデータが送信されることでアクションが発動し、有給残日数から有給休暇申請日数が差し引かれます。
トリガ
演算トリガ
アクションの後に、社員DBので演算し、残りの有給残日数が0、もしくは0以下の場合はエラー処理とします。
トリガ名を設定
トリガ名を設定します。
フィールド設定
エラー処理の条件を設定します。
今回は、「有給残日数」が0、もしくは0以下になるとエラー終了としますので、このように設定します。
演算結果格納フィールド:エラー終了
エラー終了の条件に該当する演算式は、このように設定します。
IF $AnnualLeaveLeft$ < 0
利用できる関数はこちら からご参考ください。
ルックアップトリガー
ルックアップトリガの動かし方
あらかじめ設定した条件に基づき、他のDBの値を取得して格納する「Vlookup関数」を利用できるトリガーです。
Vlookup関数とは、指定したキー(検索値)を基に、
別のデータベースやテーブルから対応する値を検索し、自動的に取得する機能です。
これにより、例えばユーザーIDに基づいてユーザー情報を自動入力したり、
社員IDから氏名、有給残日数を取得して表示することが可能になります。
トリガの基本設定
有給休暇申請DBからトリガを設定します。
トリガ名を設定します。
参照DB:社員DB
発動条件:無条件
トリガの詳細設定
抽出条件:なし 登録フィールド 発動条件:無条件
トリガDBフィールド | 参照DBフィールド |
---|---|
TRDB_登録日時 | ー |
社員ID | 社員ID |
氏名 | 氏名 |
有給休暇申請日数 | ー |
詳しい操作と設定方法はこちらからご参考ください
【動作確認のポイント】
「%SMPAREA%」がフォーム内に確認できます。「%SMPAREA%」はマイエリアのセキュリティ設定をされてる証拠です。
トリガの確認方法
更新前の有休残日数を確認し、有給休暇申請日数を入力後、送信します。
送信後、更新された有給残日数を確認することができます。
社員DBのDBオペレーションにも数字が引かれたの確認できます。