設計情報

投稿者: SPIRERS ナレッジ向上チーム 2025年4月4日 (金)

SPIRAL ver.1アプリから見る機能 – トリガ


本記事は有休申請システムの構築をベースに、トリガの使い方とDBとの関係性を説明します。

こんな方に向けて書いてます

スパイラルを使い始めてる方
業務でスパイラルの使い方を広げたい方
スパイラルの利用シーンを知りたい方

全体フロー説明

・社員はシステムにログイン
 ↓
・社員は有給休暇申請フォームから取得したい有給休暇を送信
 ↓
・アクションが発動し、社員DBの「有給残日数」から取得した有給休暇日数を引く。
有給残日数が0の場合、エラー処理し、有給休暇を取得できない
 ↓
・登録完了し、有給申請後の有給休暇残日数を確認

【今回のポイント】
  • アクションから演算トリガの使用
  • トリガとアクションとの関係
  • DB設定の注意事項
  • トリガを重きに置いているため、承認手順、マイエリア設定等の説明を省略しています。
    承認が必要の場合はフローとフィールドの追加が必要です。

    アプリ作成

    すでに存在するアプリ内にDBを作成する場合は、アプリを選択して進んでいきます。
    新しくアプリを作成する場合は、+ボタンから新規作成してください。

    「有休申請アプリ」を作成してください。

    DB作成

    有給休暇申請アプリに進んで、DBを作成します。
    フィールド構成は全く同じにしなくても良いので、必要なフィールドを追加してください。
    ▼社員DBフィールド構成
    フィールド名 差し替えキーワード タイプ 詳細設定
    社員ID staffID テキストフィールド(64bytes) 必須・重複不可・主キー
    氏名 staffName テキストフィールド(64bytes)
    パスワード password メッセージダイジェスト(SHA256)
    有給残日数 AnnualLeaveLeft 実数
    ▼有給休暇申請DBフィールド構成
    フィールド名 差し替えキーワード タイプ 詳細設定
    TRDB登録日時 registedDate テキストフィールド(64bytes) TRDBはデフォルトに入るため、
    識別名はランダムな数字で自動生成されます
    社員ID staffID テキストフィールド(64bytes) 必須・重複不可
    氏名 staffName 実数
    有給休暇申請日数 appliedAL 実数
    有給残日数 AnnualLeaveLeft 実数
    【補足】
    後に説明しますが、社員IDをルックアップキーとして使って、
    社員DBから、「氏名」、「有給残日数」をTRDBに反映したいフィールドを、TRDB側にも作成します。

    フォーム設定

    今回は有給休暇申請TRDBからフォームを作成します。

    ▼有給休暇申請フォーム設定
    フィールド・設定 入力設定
    フォーム種類 入力フォーム
    セキュリティ設定 マイエリア認証によるアクセス制限:制限する
    TRDB登録日時 特殊入力:登録日時自動取得
    社員ID 特殊入力:値を引き継ぐ
    氏名 特殊入力:値を引き継ぐ
    有給休暇申請日数 入力項目として使用する

    マイエリア設定

    社員DB側に、マイエリアを設定します。 認証のあるシステムを前提にし、社員IDとパスワードで、識別キーと認証キーとしていますが、
    必要に応じて、認証エリアを設定しましょう。
    本記事は具体的な操作を省くため、具体的な設定方法はこちらの記事の「マイエリア作成」をご参考ください。

    【今回のポイント】
  • 社員がログインし、有給休暇申請する前提なので、有給休暇申請フォームを
  • 有給休暇申請フォームをマイエリアに設置し、フォームに社員DBから取得した有給残日数を反映します。
  • サンクスページをカスタムページに設置し、有給残日数を反映できるようにします。
  • カスタムページ - 有給休暇申請フォーム

    社員がログインしてシステムを利用する前提として、フォームをマイエリアに設置しています。

    カスタムページ - サンキューページ

    有給休暇申請フォームは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アクション設定

    有給申請TRDBの処理を実行し、社員DBの「有給残日数」を更新するため、アクションは「更新」となります。
    発動条件は特に設定されていません。

    アクション名 有給残日数計算
    発動条件 無条件
    アクション対象DB 社員DB
    アクション 更新(UPDATE)
    ▼有給休暇申請TRDBの検索キーフィールド

    幹別キーと認証キーを一致する場合のみ、アクションが発生します。

    識別キー トランザクションDB 社員ID アクション対象DB 社員ID
    認証キー トランザクションDB 氏名 アクション対象DB 氏名
    ▼有給休暇申請TRDBの処理条件

    さまざまな発生条件に応じて、エラー終了、アクション先のDBを更新せず、正常終了などを選択できます。

    フォーマットチェック アクション先DBでフォーマットエラーが発生する場合 エラー終了
    識別キーチェック アクション先DBの識別キーがNULLの場合 エラー終了
    認証キーチェック アクション先DBの識別キーがNULLの場合 エラー終了
    更新対象チェック アクション先DBの識別キーがNULLの場合 エラー終了
    更新対象チェック アクション先DBで更新対象が1行の場合 次のチェックへ
    更新対象チェック アクション先DBで更新対象が2行以上の場合 エラー終了
    入力必須チェック アクション先DBの入力必須フィールドに対して、NULLで更新しようとする場合 エラー終了
    重複不可チェック アクション先DBで重複エラーが発生する場合 エラー終了
    ▼有給休暇申請TRDBアクション - フィールドマッピング

    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%」はマイエリアのセキュリティ設定をされてる証拠です。
  • 投稿変更フォームのセキュリテイ設定にて、「マイエリア認証によるアクセス制限:制限する」に設定しているため、フォームのURLをクリックしてもエラーページが表示されます。
  • トリガの確認方法

    更新前の有休残日数を確認し、有給休暇申請日数を入力後、送信します。

    送信後、更新された有給残日数を確認することができます。

    社員DBのDBオペレーションにも数字が引かれたの確認できます。

    参考リンク

    トリガ
    演算トリガ
    ルックアップトリガの設定が存在する為、DBを削除できない
    SPIRAL ver.1から学ぶ – システムの基礎 – マイエリア編
    SPIRAL ver.1アプリから見る機能 – マイエリアの識別キー+パスワードを使った管理システム

    解決しない場合はこちら コンテンツに関しての
    要望はこちら