【问题标题】:SugarCRM custom fieldSugarCRM 自定义字段
【发布时间】:2018-11-22 20:30:27
【问题描述】:

我正在编写一个软件,用于自定义软件和 SugarCRM 的数据同步。因此我需要一个 updateOrCreate() 函数。我的问题是,自定义软件使用除 SugarCRM 之外的其他 uuid,因此我无法查找 uuid 来检查更新或创建。所以我想将 custom-uuid 保存在 SugarCRM 的自定义字段中。 但我不知道如何通过 SugarCRM 的 REST-API 做到这一点。 顺便说一句,我写了一个 java 应用程序。

感谢您的帮助!

【问题讨论】:

  • 你的糖版本/口味是什么? (如果不确定,请查看/sugar_version.json)

标签: java rest api sugarcrm


【解决方案1】:

据我所知,没有更新或创建 API(请参阅 https://your-sugarsite/rest/v10/help),但如果您只想使用 API(而不是自定义它),您可以像这样同步数据:

1) 使用 POST /rest/v10/<module>/filter 端点和类似于以下内容的有效负载获取具有自定义 uuid 的记录的所有 ID:

{
    offset: 0,
    max_num: 1000,
    fields: ["id", "custom_uuid_c"],
    filter: [{"custom_uuid_c": {"$not_empty": ""}}],
    ]
}

或者如果您一次只需要一个特定的自定义 uuid:

{
    offset: 0,
    max_num: 1000,
    fields: ["id"],
    filter: [{"custom_uuid_c": {"$equals": "example-custom-uuid"}}],
    ]
}

响应将如下所示:

{
    next_offset: -1,
    records: [
        {"id": "example-sugar-uuid", "custom_uuid_c": "example-custom-uuid"},
        ...
    ],
}

注意事项:

  • 确保评估next_offset,因为即使max_num 很高,由于服务器限制,您也可能无法一次获得所有记录。只要next_offset 不是-1,您就应该在新请求中将其值用作offset 以获取剩余记录。
  • 您可以在fields 数组中提供您需要同步的所有字段名称,以便您尽早获得该信息并检查是否需要更新(也许数据仍然是最新的? )
  • Sugar 也总是在响应中包含某些字段,无论它们是否被请求。 (例如id 和date_modified)。为了简单起见,我没有将它们全部包含在响应 sn-ps 中。

2)

根据上一步中收到的信息,您知道哪个糖 ID 属于哪个自定义 UUID,并且您可以检测/准备数据以进行更新。

如果你需要先同步所有并检索完整列表,我建议你创建一个查找表custom-uuid => Sugar-id,这样你在查找特定数字时不必循环遍历数据数组和比较字段.

不要忘记考虑自定义 uuid 一次出现在一个多于多个 Sugar 记录中的可能性,除非您强制它们在服务器/数据库端是唯一的。

3)

现在您已拥有所需的所有信息,您可以根据需要更新和创建记录:

  • 更新现有记录:PUT /rest/v10/<module>/<record_id>

  • 创建缺失记录:POST /rest/v10/<module>

如果想在单个请求中发送大量创建和/或更新,请查看POST /rest/v10/bulk API - 如果您的 Sugar 版本有它。

最后的说明:

  • /rest/v10/help 上的过滤器运算符定义似乎不完整,有关更多信息,您可以查看the filter docs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多