PowerPlatform、モデル駆動型の研究

ジン・フリークス。日本人。

モデル駆動型アプリで「タブの表示制御」を活用しよう

 

PowerAppsモデル駆動型アプリで「タブの表示制御」を活用しよう

目次

  1. 概要
  2. PowerAppsでのタブ表示制御の重要性
  3. タブ表示制御のメリット
  4. 具体例:役職に応じたタブの表示
  5. 実装例とコードの比較
  6. 関連メソッドと構文
  7. 技術的な豆知識と制限事項
  8. 実践問題

概要

本記事では、PowerAppsモデル駆動型アプリでの「タブの表示制御」を活用する方法について解説します。 タブ表示を役職や権限に応じて制御することで、アプリがより安全で、ユーザーにとって分かりやすい構成になります。 具体的な例として、ユーザーの役職が「マネージャー」の場合のみ、特定のタブを表示する方法を紹介します。

PowerAppsでのタブ表示制御の重要性

PowerAppsでは、表示する内容をユーザーの役職や権限に応じて制御することができます。 特定の役職のみに機密データを表示したり、一般社員には関係のない管理情報を非表示にすることで、操作性やセキュリティを向上させることが可能です。

タブ表示制御のメリット

  1. アクセス制御: 特定の役職や権限のユーザーのみがデータにアクセス可能になり、セキュリティが向上します。
  2. UIの簡素化: 必要な情報だけを表示することで、操作しやすく、画面がシンプルになります。

具体例:役職に応じたタブの表示

ここでは、ユーザーが「マネージャー」役職を持っている場合にのみ「manager_tab」を表示する例を紹介します。

データ仕様

  • テーブル名: userRoles
  • 列名とデータ型:
    • roleName: テキスト(役職名)

実装例とコードの比較

タブ表示制御なしの場合


function onFormLoad(executionContext) {
    var formContext = executionContext.getFormContext();
    // すべてのユーザーに「manager_tab」を表示
    formContext.ui.tabs.get("manager_tab").setVisible(true);
}

問題点: このコードでは、ユーザーの役職に関係なくすべてのユーザーに「manager_tab」が表示されてしまい、情報が制御されていません。

役職に応じたタブの表示制御(async/awaitを使用)


async function onFormLoadWithRoleCheck(executionContext) {
    var formContext = executionContext.getFormContext();

    // ユーザーの役職情報を取得
    const userRoles = Xrm.Utility.getGlobalContext().userSettings.roles;
    const isManager = userRoles.some(role => role.name === "Manager");

    // マネージャーのみ「manager_tab」を表示
    formContext.ui.tabs.get("manager_tab").setVisible(isManager);
}

メリット: 非同期処理を使い、役職情報を取得して役職に応じてタブを表示することで、ユーザー体験が向上し、必要な情報だけが見られるようになります。

関連メソッドと構文

タブ表示制御に使用する主なメソッドと構文を解説します。

メソッド一覧

  • Xrm.Utility.getGlobalContext(): PowerAppsで現在のユーザー情報や環境情報を取得するメソッドです。
    使用例: const context = Xrm.Utility.getGlobalContext();
  • someメソッド: 配列の中に条件を満たす要素があるかどうかを判定するメソッドです。
    使用例: userRoles.some(role => role.name === "Manager"); これは、userRoles配列の中に「Manager」という役職があるかを確認します。
  • setVisible: 特定のUI要素の表示/非表示を設定するメソッドです。
    使用例: formContext.ui.tabs.get("manager_tab").setVisible(isManager); ここで、isManagerがtrueであれば「manager_tab」を表示し、falseであれば非表示にします。

注意点: 非同期処理で`await`を使う場合、必ず`async`関数内でのみ使用できることに注意してください。

技術的な豆知識と制限事項

豆知識

  • async/await: 非同期処理を同期的に見せる記法で、コードが読みやすくなります。

制限事項

  • PowerAppsのタブ表示制御はクライアント側で行われるため、権限の制御は完全ではありません。セキュリティが特に重要な場合は、サーバー側での制御を検討する必要があります。

実践問題

問題: フォームロード時に「Manager」または「Admin」役職がある場合にのみ特定のタブを表示する関数onFormLoadWithExtendedRoleCheckを実装してください。

  • 条件: 役職情報を非同期で取得し、ManagerまたはAdminの役職がある場合にタブを表示する。

この記事では、PowerAppsモデル駆動型アプリでの「タブの表示制御」の活用について解説しました。タブの表示制御をうまく活用して、必要なユーザーだけがアクセスできるようにし、アプリのセキュリティと使いやすさを向上させましょう。