SugarCRM自定义字段



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

谢谢你的帮助!

据我所知,没有更新或创建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也总是在响应中包含某些字段,无论是否被请求。(例如iddate_modified(。为了简单起见,我没有将它们全部包含在响应片段中

2(

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

如果您需要先同步所有并检索完整列表,我建议您创建一个查找表自定义uuid=>sugar id,这样在查找特定数字时就不必遍历数据数组并比较字段

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

3(

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

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

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

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

最后注释:

  • /rest/v10/help上的筛选器运算符定义似乎不完整,有关更多信息,您可以查看筛选器文档

最新更新