同步引擎
Note
此页面的内容需要进行重大更新。旧页面包含过时且可能不准确的信息。您仍然可以在 Mautic Developer Documentation archived repository 中访问它。
如果您有兴趣帮助开发此页面和其他新内容的,请考虑加入文档编写工作。
请阅读 Contributing Guidelines 和 Contributing to Mautic’s documentation 以开始您的贡献。
同步引擎支持 Mautic 的联系人和公司对象与第三方对象的双向同步。该引擎从 Mautic 生成一个“sync report”,然后将其转换为供集成处理的“sync order”。然后,它会要求集成提供一个“sync report”,并将其转换为供 Mautic 处理的“sync order”。
在构建报告时,Mautic 或集成会获取指定时间范围内已修改或创建的对象。如果集成支持字段级别的更改,则应在每个字段的基础上告知报告该字段上次更新的时间。否则,它应该告知报告对象本身上次修改的时间。 sync judge 使用这些日期来确定在双向同步中要使用哪个值。
mautic:integrations:sync 命令启动同步。例如:
php bin/console mautic:integrations:sync HelloWorld –start-datetime=”2020-01-01 00:00:00” –end-datetime=”2020-01-02 00:00:00”.
为同步引擎注册集成
要告知 IntegrationsBundle,此集成提供了同步功能,请在插件的 app/config.php 文件中,使用 mautic.sync_integration 标记集成或支持类。
<?php
return [
// ...
'services' => [
// ...
'integrations' => [
// ...
'helloworld.integration.sync' => [
'class' => \MauticPlugin\HelloWorldBundle\Integration\Support\SyncSupport::class,
'tags' => [
'mautic.sync_integration',
],
],
// ...
],
// ...
],
// ...
];
SyncSupport 类必须实现:
MauticIntegrationsBundleIntegrationInterfacesSyncInterface.
同步
映射手册
映射手册告诉同步引擎,哪个集成应与 Mautic 的哪些对象(如联系人或公司)以及集成的字段进行同步。这些字段应该映射到 Mautic 字段,并且数据应该以指定的方向流动。
请参阅 HelloWorldBundle/Sync/Mapping/Manual/MappingManualFactory.php。
同步数据交换
同步在此处进行,mautic:integrations:sync 命令执行此操作。 Mautic 和集成分别构建其新对象或修改对象的报告,然后从另一侧执行操作。
请参阅 HelloWorldBundle/Sync/DataExchange/SyncDataExchange.php.
构建同步报告
同步报告告诉同步引擎,在由引擎提供的两个时间戳之间,哪些对象是新的和/或已修改的。 集成可以自行决定是否为首次同步。 对象应分批处理,RequestDAO::getSyncIteration() 方法负责此批处理。 同步引擎执行 SyncDataExchangeInterface::getSyncReport() 方法,直到报告返回不包含任何对象的为止。
如果集成支持字段级别的更改跟踪,则应在报告中告知同步引擎,以便同步引擎可以更准确地合并两个数据集。
执行同步操作
同步操作包含同步引擎确定的所有更改,这些信息应该传递给集成。 集成应返回任何创建的对象 ID,或根据需要调整对象,例如当它们从一种类型转换为另一种类型或被删除时。
请参阅 HelloWorldBundle/Sync/DataExchange/OrderExecutioner.php.