练习 - 使用 Dataverse 关系数据

已完成

Contoso 与许多公司一样,具有多个位置,并且允许员工在家工作。 员工偶尔需要进入办公室,需要在访问期间使用办公桌。 此前,Contoso 指示员工在到达办公室后四处寻找可用的办公桌。 随后公司发现此类共享工作区系统或 Hot Desking 给 IT 支持和许可带来挑战。 因此,Contoso 最近生成了 Microsoft Power Platform 解决方案,支持员工查看可用的办公桌并提前预留。

在本练习中,您将通过 Power Apps 增强画布应用。

目标

本练习旨在帮助您学习如何使用以下关系:

  • 一对多和多对一

  • 多对多

先决条件

若要完成本练习,您需要包含 Microsoft Dataverse 的环境。

练习 1:导入解决方案

在本练习中,您将起始解决方案导入到测试环境中,然后使用 Microsoft Power Automate 云端流加载示例数据。 本解决方案包含五个表、一个画布应用程序、一个模型驱动应用程序和一个云端流。

任务 1:导入起始解决方案

在本任务中,您需要将解决方案导入到环境中。

  1. 您需要下载 zip 文件以完成本练习。 在链接打开后选择下载。

  2. 导航到 Power Apps Maker Portal 并选择要用于本实验室的环境。

  3. 选择解决方案 > 导入解决方案

  4. 选择浏览

  5. 选择 ContosoHotDesking_1_0_0_0.zip 解决方案,然后选择打开

  6. 选择下一步

  7. 再次选择下一步

  8. 选择连接下拉列表中,如果已提供凭据,请选择导入并跳到任务 2。 否则,请选择 + 新建连接

  9. 选择创建

  10. 提供您的凭据。

  11. 关闭连接浏览器窗口或选项卡。

  12. 选择刷新

  13. 选择导入,然后等待解决方案导入完成。

任务 2:加载示例数据

在本任务中,您将运行云端流以创建示例数据。

  1. 选择解决方案,然后选择以打开您导入的 Contoso 办公桌轮用解决方案。

  2. 选择云端流,然后选择以打开 Load Sample Hot Desk Data 流。

  3. 流打开后,从命令栏中选择运行

  4. 从对话框底部选择运行流

  5. 选择完成,然后等待流运行完成。 选择刷新按钮以查看流运行状态。 流运行完成时应显示成功状态。

任务 3:运行应用

在本任务中,您将运行 Hot Desking ManagerHot Desking 应用程序来熟悉这些应用程序。 然后,您将完成数据设置。

  1. 返回到您的解决方案,或者您也可以转到 Power Apps Maker Portal,然后选择要用于本实验室的环境和解决方案。

  2. 选择应用,然后选择 Hot Desking Manager 应用程序以启动它。

  3. 选择 Desks 视图并确保您拥有示例数据。

  4. 选择位置视图并确保您拥有示例数据。

  5. 选择 Desk Features 视图并确保您拥有示例数据。

  6. 选择位置,选择三个位置,然后选择编辑

  7. Primary Contact 字段中选择用户,然后选择保存

  8. 通过选择返回关闭 Hot Desking Manager 应用程序。

  9. 确保您仍选定应用,选择 Hot Desking 应用程序,然后选择编辑。 应用程序应在 make.powerapps.com 中打开。

  10. 选择 HomeScreen,然后选择播放

  11. 选择新建预留按钮。

  12. 选择 1 号楼封闭办公室办公桌 # 1

  13. 选择未来日期,然后为 9:00 选择预订

  14. 再次选择新建预留

  15. 选择 2 号楼团队室办公桌 # 2

  16. 选择未来日期,然后为 13:00 选择预订

  17. 添加更多包含其他组合的预留。

  18. 您现在应至少有四项预留。 通过选择右上角的 X 关闭预览。

  19. 展开 ReserveDeskScreen 下拉列表,展开 Gallery3,然后选择 Button1

  20. 转到公式栏并审查 OnSelect 的公式。 用户选择预订选项时,将使用 Patch() 函数创建新的 Reservation 行。 新行与办公桌和用户存在关系。 用户关系通过开始时在应用中建立的全局变量设置。

  21. 审阅应用程序中的其他公式,熟悉流程的工作原理。

  22. 审阅公式后,选择后退按钮。

  23. 请勿导航离开此页面。

练习 2:创建关系

在本练习中,您将为收藏的办公桌创建关系。 此关系将是用户与办公桌表之间的多对多关系。 此关系允许您实现用户将办公桌标记为收藏的功能。

任务:创建关系

在本任务中,您将为收藏的办公桌创建关系。

  1. 选择

  2. 选择 Desk 表。

  3. 架构窗格中选择关系选项。 选择 + 新建关系,然后选择多对多

  4. 相关(多)表查找/选择 User,然后选择完成

  5. 选择左上角的后退箭头。

  6. 通过从左侧菜单中选择对象概述,然后从命令栏中选择发布所有自定义,返回到您的解决方案。

  7. 等待发布流程完成。

练习 3:向预留显示添加信息

在本练习中,您将更改预留库以显示当前用户创建的预留,而非显示所有预留。 您还将在预留列表中显示更多信息。

任务:编辑应用程序

在本任务中,您将编辑 Contoso 产品管理器应用程序。

  1. 转到 Power Apps Maker Portal,然后返回到用于本实验室的环境和解决方案。

  2. 选择应用,选择 Hot Desking 应用程序,然后在编辑模式下打开它。

  3. 展开HomeScreen并选择Gallery5

  4. 转到公式栏并将项目公式改为以下公式。 本公式将筛选与当前用户关联的预留并且使用用户与预留表之间的一对多关系。

    LookUp(Users,'Primary Email'=currentUserEmail).'Reservations (contoso_Reservation_ReservedFor_SystemUser)'

  5. 选择编辑库图标。

  6. 转到插入下拉菜单并选择文本标签

  7. 然后,将 Text 值设置为以下公式。 本公式使用预留与办公桌表之间的一对多关系。

    ThisItem.Desk.Name

  8. 调整标签大小并重新定位。

  9. 在编辑模式下选择添加其他标签

  10. 选择您添加的标签并将 Text 值设置为以下公式。 以下公式显示您使用两层关系(从预留开始)并且使用办公桌获取位置

    ThisItem.Desk.Location.Phone

  11. 调整标签大小并重新定位。

  12. 在编辑模式下再次选择标签

  13. 选择您添加的标签并将 Text 值设置为以下公式。

    If(IsBlank(ThisItem.Desk.Location.'Primary Contact'),"No Primary Contact",ThisItem.Desk.Location.'Primary Contact'.'Full Name')

  14. 调整标签大小并重新定位。

    现在预留库应与下图相似。

  15. 选择保存

  16. 留在应用编辑屏幕中,等待下一个练习。

练习 4:添加收藏办公桌

在本练习中,您将添加允许用户选择收藏办公桌的图标。 您还将添加显示办公桌功能的标签。

任务:添加收藏

在本任务中,您将添加收藏办公桌并添加标签以显示办公桌功能。

  1. 展开 FindDeskScreen,然后选择 GalleryDesks

  2. 选择编辑库图标。

  3. 转到插入选项卡,选择图标,然后选择其中一个图标。 您将在下一步中使用公式设置特定图标。 因此,在本步骤中,选择的图标无关紧要。

  4. 选择您添加的图标并将图标值更改为以下公式。 本公式将在用户未将本办公桌指示为收藏办公桌时显示填充的拇指向上图标,或在用户已选定办公桌为收藏办公桌时显示拇指向上图标。

    `If(CountIf(ThisItem.Users, ThisRecord.User = currentUser.User) > 0, Icon.ThumbsUp,Icon.ThumbsUpFilled)`
    
    > [!NOTE]
    > The CountIf encounters a [delegation](/power-apps/maker/canvas-apps/delegation-overview/?azure-portal=true) issue. If you have a large number of rows in your app, you might have to use an alternate approach.
    
  5. 确保您仍选定图标。 选择 OnSelect,然后粘贴以下公式。 本公式将关联或取消关联该办公桌与登录的用户,具体情况取决于用户是否已将办公桌添加为收藏办公桌。

    If(CountIf(ThisItem.Users, ThisRecord.User = currentUser.User) > 0, Unrelate(ThisItem.Users, currentUser), Relate(ThisItem.Users, currentUser))

  6. 重新定位库中的图标,如下图所示。

  7. 确保您仍处于库编辑模式下。 转到插入选项卡,然后选择文本标签

  8. 选择您添加的标签并将 Text 值设置为以下公式。 本公式将连接桌面功能名称并使用“Desk”与“Desk Features”表之间的多对多关系。

    Concat(ThisItem.'Desk Features', Name, " , " )

  9. 重设标签大小并重新定位以便更好地适应空间。

  10. 保存应用。

  11. 选择播放以预览应用。

  12. 库应如下图所示。 选择其中一个办公桌的竖起大拇指图标。

  13. 该图标应改为竖起大拇指。 再次选择该图标。

  14. 图标应更改回显示已填充拇指向上图标。 再次选择该图标。

  15. 关闭预览。

  16. 请勿导航离开此页面。

练习 5:筛选办公桌

在本练习中,您将在用户从下拉列表中选择功能时向办公桌库添加筛选器。

任务:功能筛选器

在本任务中,您将添加功能筛选器。

  1. 选择 GalleryDesks

  2. 转到编辑栏并修改项目的公式。 本公式将筛选办公桌,以仅显示具有选定功能的办公桌。

    Filter(Desks,Location.Location = FilterLocation.Selected.Location,IsBlank(filterFeatures.Selected) || Desk in filterFeatures.Selected.Desks.Desk)

  3. 保存您的更改(如有必要)。

  4. 选择播放以预览您的应用。

  5. 请注意可用于所选建筑物的办公桌功能。

  6. 在下拉列表中选择功能。 应仅显示具有选定功能的办公桌。

  7. 选择其他建筑物和功能,确保应用程序的行为符合预期。

  8. 关闭预览。

  9. 关闭应用程序设计器。