我正在编写一个通用集成,需要使用Dynamic365中的数据库作为记录系统,用于客户参与。我将不时轮询它,以便在其他辅助系统中保持最新的数据。当然,我可以知道,通过检查"modifiedon“属性,记录何时发生了变化。我可以构建一个查询,上面写着“给我自上次询问以来更改的所有记录”。然而,能够知道自我上次询问以来哪些记录被删除也是最好的。我与Salesforce有类似的集成,这与SalesForce API无关,但我不知道如何使用Dynamic365API。
看来,我唯一的选择可能是保留集成中所有记录主键的列表,并在每次轮询中下载CRM中存在的所有记录,然后根据它们的缺位来计算已删除的记录。不过,这是相当丑陋和低效的。
有什么想法或建议吗?
发布于 2019-01-08 19:41:31
MS为此引入了变更跟踪。
Dynamic365中用于客户参与的更改跟踪功能提供了一种方法,通过检测自数据最初提取或上次同步以来数据发生了哪些变化,从而以一种性能良好的方式保持数据同步。
下面的样例web请求:
GET [Organization URI]/org1/api/data/v9.0/accounts?$select=name,accountnumber,telephone1,fax HTTP/1.1
Prefer: odata.track-changes响应将具有带有增量令牌的增量链接:
"@odata.deltaLink": "[Organization URI]/api/data/v9.0/accounts?$select=name,accountnumber,telephone1,fax&$deltatoken=919042%2108%2f22%2f2017%2008%3a10%3a44"当您使用上面的URI时,您可以获得包括已删除条目在内的更改。
{
"@odata.context":"[Organization URI]/data/v9.0/$metadata#accounts(name,telephone1,fax)/$delta",
"@odata.deltaLink":"[Organization URI]/api/data/v9.0/accounts?$select=name,telephone1,fax&$deltatoken=919058%2108%2f22%2f2017%2008%3a21%3a20",
"value":
[
{
"@odata.etag":"W/\"915244\"",
"name":"Monte Orton",
"telephone1":"555000",
"fax":"10101",
"accountid":"60c4e274-0d87-e711-80e5-00155db19e6d"
},
{
"@odata.context":"[Organization URI]/api/data/v9.0/$metadata#accounts/$deletedEntity",
"id":"2e451703-c686-e711-80e5-00155db19e6d",
"reason":"deleted"
}
]
}发布于 2019-07-09 09:13:20
我想对这一问题作出贡献,该问题为我提供了很好的指导意见。尽管官方Dynamics上的文档很少,也没有提到解释更改跟踪的地方,但Soap中也提供了这个强大的特性:
我希望这能帮上忙。
https://stackoverflow.com/questions/54097289
复制相似问题