0

我需要从 Dataverse 中获取记录,其中在特定列值中进行了一些更改。例如,假设我们有一个名为employee 的表,其中有一个名为position 的字段,可以随时间从实习生、软件开发人员、开发主管等更改。如果我们当前有10 条记录,并且其中一个的职位员工变了,我只需要那一份员工记录。我已经完成了检索并检测到表定义的更改,但我相信它与架构中的更改有关,而不是与数据中的相关更改有关。我正在使用带有 Java 11 的 Spring Boot 并使用 Dataverse 我正在使用Olingo如果需要,还可以使用 Web API。有没有办法如上所述检测数据的变化?


编辑

要添加更多详细信息,我们将有一个在 X 分钟触发的计划作业,该作业需要获取从 X 分钟的最后一次获取时间起职位已更改的员工数据。正如我们在下图中看到的,所有 3 条记录都在 X 分钟内更新,并且最后修改时间已全部更新。我需要获取位置属性已更改的以绿色突出显示的记录。对于 ID 为 2 的记录,我不需要获取它,因为位置相同。

在此处输入图像描述

4

1 回答 1

0

解决方案 1:自定义更改表

如果您可以并且可以扩展您当前的 Dataverse 环境

  1. 创建一个名为Employee Change的新表。添加一个名为Employee的 Lookup 类型的列,并将其链接到您的Employee
  2. 修改主窗体并在窗体中添加员工
  3. 创建一个将在字段更改时触发的工作流程。在工作流过程中,您创建一个员工变更记录并将查阅列值设置为更改的记录

您现在可以查询 Employee Change 表以获取更改的记录。您需要扩展查找列以从 Employee 表中获取所需的列。

示例 Web API 查询:

GET [Organization URI]/api/data/v9.1/employee?$select=createdon, employeeid
&$expand=employeeid($select=employeeid,fullname,column2,column3) HTTP/1.1  
Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0

可以在此处找到有关扩展查找列的更多信息

解决方案 2:审计

使用内置审计功能

  1. 确保启用审核。详细信息可以在文档中找到
  2. 对Employee表中的必填列启用审计
  3. 查询Employee表中更改的审计记录。您只需要注意感兴趣的特定属性的变化
  4. 您将获得更改的记录列表,然后您必须再次查询以检索记录的列

解决方案 3:推而不是拉

将更改从 Dataverse 推送到您的 API 而不是不断查询更改可能更有意义。您可以使用 Microsoft Power Automate 创建一个简单的流程,当在 Dataverse 中检测到更改时调用您的 API/平台

一个好的开始可能是探索以下 Power Automate 模板:在 Microsoft Dataverse 中更新记录时,发送电子邮件。然后,您可以使用查询其他 API 来替换“发送电子邮件”步骤

于 2021-12-21T09:04:48.953 回答