SugarCRM自定义字段

时间:2018-11-22 20:30:27

标签: java rest api sugarcrm

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

谢谢您的帮助!

1 个答案:

答案 0 :(得分:2)

据我所知,没有更新或创建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数组中提供所有需要同步的字段名称,这样您就可以尽早获得该信息,并可以检查是否完全需要更新(也许数据仍然是最新的,日期?)
  • 糖也始终在响应中包括某些字段,无论是否要求。 (例如iddate_modified)。为了简单起见,我没有将它们全部包含在响应片段中。

2)

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

如果需要全部同步并首先检索完整列表,建议您创建一个查找表custom-uuid => sugar-id,这样在查找特定数字时不必遍历数据数组和比较字段。

不要忘了一次在多个糖记录中同时存在一个定制uuid的可能性,除非您在服务器/数据库端强制它们是唯一的。

3)

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

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

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

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

最后的注释:

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