月別アーカイブ: 2024年12月

[PowerApps]入退室管理システム

PowerAppsで部屋の入退室管理システムを作成します。

システムに対する要件

  • 部屋および建物の使用者を管理するシステムである。部屋は必ずひとつの建物に属する。
  • ユーザーは各部屋に対して入室できる。入室した部屋に対して退室できる。入室から退室までの間は、使用中とする。部屋の使用者は、その部屋が属する建物の使用者でもある。
  • 各部屋に対して、ユーザー個人の入室時刻と退室時刻を記録できる。入退出時刻のデータは過去にさかのぼって閲覧できる。
  • 部屋ごとに現在の使用者一覧を表示できる。使用者一覧から簡便に使用者へ連絡ができる。
  • 部屋の使用中の人数が閾値以下になると、退室しようとするユーザーに対して注意喚起を行う。閾値は部屋ごとに設定できる。
  • 建物についても、ユニークな使用者数が閾値を下回ると、退室時に注意喚起がなされる。
  • 退室操作は、他人が行うこともできる。これは退室操作を忘れたユーザーの情報をデータに反映させるため。

データソースの構成

SharePointリストで以下の5つのリストを作成しておきます。各マスタテーブルは、一つ上の階層の値を参照列で関連付けします。

BuildingMaster

列名列の型目的
Title一行テキスト(自動生成)建物名を入れる
ID数値(自動生成)
numUsersToNotify数値建物のユニークな使用者数がこの値以下であれば注意喚起します。
notificationMessage一行テキスト注意喚起で表示するメッセージを指定します。

RoomMaster

列名列の型目的
Title一行テキスト(自動生成)部屋名を入れる
ID数値(自動生成)
BuildingID数値BuildingMasterリストのIDで所属する建物を指定します。
numUsersToAlert数値残り人数が閾値以下のとき、退室に対して注意喚起をするのに用います。
AlertMessage複数行テキスト残り人数が閾値以下のとき、退室に対して注意喚起をするのに用います。
documentURL複数行テキスト部屋に関連する情報をまとめた外部資料へのリンクを示すのに用います。
isActiveはい/いいえ本システムで管理する対象とするかを指定します。

entry_exit_log

ポイントは2つあります。

一つ目に、利用者を特定する情報としてUPNを一行テキスト列で記録することです。一行テキスト列はテキストなのでPatch関数での記述が簡単なこと、委任が可能なことが重要です。

二つ目に、部屋や建物など関連する項目のIDを数値ですべてもっておくことです。これにより同じ部屋の利用者、同じフロアの利用者といった集計を簡便に行えます。

列名列の型目的
Title1行テキスト(自動生成)
ID数値(自動生成)
Start時刻部屋の使用開始日時
End時刻部屋の使用終了日時
isActiveはい/いいえ部屋を使用中か否かを示す
RoomID数値部屋を一意に特定します。
BuildingID数値建物を一意に特定します。
UserPrincipalName一行テキスト部屋を使用するユーザーを示します。UPNを文字列で設定します。
Created Byユーザー (自動生成)部屋を使用するユーザーを示します。
Modified Byユーザー(自動生成)レコードを書き換えたユーザーを示します。これがCreated Byと異なる場合、他人が操作したとわかります。

画面構成

  • 建物選択
    登録された建物を一覧表示します。一覧から建物をひとつ指定します。
  • 建物内の部屋選択
    指定した建物内の部屋を一覧表示し、個々の部屋の使用開始と使用終了を登録できます。部屋をひとつ選択し、部屋の使用者一覧画面に遷移できます。また、建物内の使用者一覧を表示する画面に遷移することができます。
    Paramでこの画面に直接アクセスできるようにします。
  • 建物内の使用者一覧
    指定した建物内の使用者を一覧表示します。個々の使用者に対して簡便に連絡を取ることができます。
  • 部屋の使用者一覧
    指定した部屋の使用者を一覧表示します。個々の使用者に対して簡単に連絡できます。指定した部屋の使用開始または使用終了を登録できます。
    操作者は自分以外の使用者について使用終了できます。このとき使用者終了されたユーザーに通知を行うほか、使用者自身が使用終了するときと同じ処理を行います。
    Paramでこの画面に直接アクセスできるようにします。
  • 使用終了への注意喚起
    部屋の使用終了操作をしたときに、部屋または建物の残り使用者数が閾値以下になる場合は、この画面に遷移します。ただし、操作者が最後の一人であった場合を除きます。
    この画面では使用終了にあたり注意喚起のメッセージを表示します。また、残りの使用者へ簡単に連絡できます。また、直前の画面(建物内の部屋選択または部屋の利用者一覧)へ戻ることができます。
  • 部屋使用終了の案内
    部屋の使用終了操作をしたときに、操作者が最後の一人であった場合は、この画面に遷移します。部屋の使用終了の手順を案内します。
    さらに、建物全体で最後の一人であった場合は、建物使用終了の案内画面へ遷移できます。
  • 建物使用終了の案内
    建物の使用終了の手順を案内します。