65.9K
CodeProject 正在变化。 阅读更多。
Home

酒店应用融合开发(第三部分):通过处理表单数据扩展应用程序

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2022年3月22日

CPOL

6分钟阅读

viewsIcon

4062

如何使用 Dataverse API 将数据插入 Dataverse。

本系列文章共三部分,展示了业务人员开发者(citizen developer)和专业开发者(professional developer)如何通过融合开发协同工作。该系列构建了一个满足酒店业务需求的应用程序,使酒店员工能够快速办理客人入住并更新公司中央预订数据库。

通过将数据存储在Dataverse中,业务人员开发者无需深入的技术知识即可构建功能完善的用户界面。同时,我们可以通过监控Dataverse中的数据变化来设置后端SQL数据库中的信息更新。这种设计将用户界面与后端解耦,如下图所示。

在前几篇文章中,我们已经建立了从员工为客人办理入住到将入住信息传播到API端点的流程(在上图中,这表示从右列到中间列,再到左列)。

本文将数据朝相反方向移动,即从左列到中间列,再到右列。我们将把新数据从后端传播到客户端,再传播给员工。这些操作将数据导入Dataverse。

SQL数据库中的另一个表存储了客户之前入住的信息。目标是让专业开发者将客人先前入住的信息传播到Dataverse,供Power Apps应用显示。然后,客户服务代理可以使用这些历史信息来个性化客人的当前酒店住宿体验。

使用Dataverse API

在此项目中,使用Dataverse API是一个两步过程。我们先获取访问令牌,然后使用访问令牌将数据插入Dataverse表。

获取访问令牌

在获取Dataverse的访问令牌之前,需要进行一些设置。以下链接提供了如何执行这些任务的更多详细信息。以下是关键点的摘要:

首先,在Azure应用程序目录中注册一个应用程序(参考文档步骤1-4)。

然后,将Dataverse权限(Dynamics CRM)分配给已注册的应用程序(参考文档步骤6-8)。

接下来,转到OAuth for Dataverse,然后在菜单中单击Certificates & secrets。为应用程序创建一个Secret,并记下Secret ID

然后,在Overview中,记下Application (client) IDTenant ID

现在,在Manifest中将以下值更新为true:allowPublicClientoauth2AllowImplicitFlow

然后,使用应用程序ID在Power Platform管理中心创建一个应用程序用户。

在本教程中,我们将使用Postman来演示如何确保这些API调用保持平台无关性。这篇Microsoft文章解释了C#开发人员如何使用官方C#库进行连接。

无论使用哪种方法,都要从Power Platform管理中心获取服务URL。选择合适的环境以在屏幕上查看环境URL。

要获取访问令牌,请向https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token发出POST请求。

POST /ce22f12e-9766-4af6-bc48-cc0b4a012c9a/oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id={client_id}&grant_type=client_credentials
&client_secret={client_secret}&scope=https://{service_url}//.default

{client_id}, {client_secret} and {service_url} are values obtained from previous steps.

然后,发出GET请求以接收用于未来API调用的访问令牌。

接下来,开始将信息输出到Dataverse供Power App使用。

通过API调用插入以往入住信息

有了访问令牌,应用程序现在就可以发出API调用,将客人以往入住信息插入Dataverse。

有两种设计选项:将数据插入现有的预订表,并让Power App根据记录是否有入住日期进行筛选;或者创建一个新的Dataverse表来存储以往入住信息。

SQL数据库仍然保留之前的表,并增加了一个新表来存储客人体验相关信息。

第二个选项需要较少的Power Apps维护。业务人员开发者不需要了解后端如何判断一个预订是否是新预订的详细信息。选项二还可以避免业务人员开发者和专业开发者写入预订表时可能产生的冲突。

因此,请在New table中创建这个新的Dataverse表。

Display name: Previous Visit
Plural Display Name: Previous Visits
Name: previousvisits
 
Primary Name Column
Display name: Reservation Code
Name: reservationcode

Columns:
Customer Name: Text
Check Out Date: Date And Time
Rating: Whole Number
Comments: Text

请注意,表名和列名前面都有一个唯一的前缀,确保这些名称在不同环境中是唯一的。

应用程序将使用这些完整的表名来执行插入调用。

要向Previous Visits表插入一行,请使用访问令牌({access token})发出以下POST请求。

POST {service_url}/api/data/v9.2/cxxxx_previousvisits HTTP/1.1
Authorization: Bearer {access token}
Content-Type: application/json; charset=utf-8
Accept: application/json
{
"cxxxx_reservationcode": "CRB967348",
"cxxxx_customername": "Sample Guest",
"cxxxx_checkoutdate": "2022-01-12T15:06:26Z",
"cxxxx_rating":7
}

在上面的代码中,将cxxxx替换为Power Apps为环境生成的唯一前缀。请注意,表名应该使用复数形式,末尾加上“s”。

接下来,将方法切换为GET,以验证是否已创建条目。

同样,通过向cxxxx_reservations表写入数据来插入新的预订。

POST /api/data/v9.2/cxxxx_reservations HTTP/1.1
Host: {service_url}
Authorization: Bearer {access token}
{
"cr7ec_reservationcode": "CRX767348",
"cr7ec_customername": "Fourth Test"
}

现在,在UI应用程序中添加功能,以显示客人以往入住信息。

扩展UI应用程序

以下部分将介绍修改Power Apps应用程序。业务人员开发者可以自己执行这些任务。

显示客人相关信息的选项有很多。在本教程中,我们将它们显示在同一屏幕上的一个垂直画廊中。

此截图提醒您现有应用程序的外观和功能。

我们修改应用程序,使其外观如下截图所示。

进行更改

首先,单击Data选项卡,然后将Previous Visits表添加到应用程序中以更新Power App。

然后,单击Tree view,选择右侧的垂直容器,并在容器内插入一个垂直画廊。

在新画廊中,将Data Source设置为“Previous Visits”。

然后,选择合适的字段和布局。例如,上面的截图使用“Title, Subtitle, and body”布局来显示预订代码、评分和退房日期。

这个画廊目前会显示所有客人的所有以往入住记录。请记住,第一篇文章设置了一个变量“selectedItem”,用于存储员工选择的预订。

因此,使用selectedItem过滤画廊。在Advanced选项卡下的Data部分,将Items更改为以下内容:

Filter('Previous Visits', 'Customer Name'=selectedItem.'Customer Name')

此设置指示画廊仅显示“Previous Visits”表中与正在预订的同一客户相关的项目。

使用ID进行比较更可取,但这超出了本系列的范围。要了解更多信息,请参阅Dataverse表中的关系

后续步骤

在本教程中,我们学习了如何使用Dataverse API将数据插入Dataverse。业务人员开发者可以轻松添加一个UI来连接新数据。

本系列文章展示了业务人员开发者和专业开发者如何协同工作以满足业务需求。当员工为客人办理入住时,Dataverse会保存数据,然后一个Function应用将数据传输到SQL数据库。当新数据进入SQL数据库时,专业开发者也可以使用Dataverse API更改Dataverse中的数据。

这种融合开发方法使每个人都能专注于自己最擅长的事情。业务人员开发者利用他们对业务需求和卓越客户服务的了解来构建用户界面。然后,专业开发者专注于维护UI应用程序和后端之间的数据完整性。

与此同时,酒店客人可以享受到更轻松的入住流程,并获得个性化的体验。

Power Apps生态系统支持无代码和低代码的业务人员开发者创建功能性应用程序,并帮助专业开发者节省时间来构建更高级的功能。

使用Power Apps扩展此酒店预订应用程序以添加新功能,或从头开始创建新内容。

要了解如何加速基础应用程序开发,请参阅低代码应用开发人员的 7 步指南

© . All rights reserved.