SugarCRM 自定义字段
SugarCRM custom field
我正在编写一个软件,用于自定义软件和 sugarCRM 的数据同步。因此我需要一个 updateOrCreate() 函数。我的问题是,自定义软件使用 sugarCRM 以外的其他 uuid,所以我无法查找 uuid 来检查更新或 create.So 我想将自定义 uuid 保存在 sugarCRM 的自定义字段中。
但是我不知道如何通过 sugarCRM 的 REST-API 来做到这一点。
顺便说一句,我写了一个java-application.
感谢您的帮助!
据我所知,没有更新或创建 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
)。为了简单起见,我没有将它们全部包含在响应片段中。
2)
根据上一步收到的信息,您知道哪个糖 ID 属于哪个自定义 UUID,您可以 detect/prepare 数据进行更新。
如果你需要同步所有并先检索完整列表,我建议你创建一个查找 table custom-uuid => sugar-id,这样你就不必在查找时循环遍历数据数组和比较字段对于特定数字。
不要忘记考虑自定义 uuid 一次出现在多个 Sugar 记录中的可能性,除非您强制它们在 server/database边.
3)
现在您已拥有所需的所有信息,可以根据需要更新和创建记录:
更新现有记录:PUT /rest/v10/<module>/<record_id>
创建丢失的记录:POST /rest/v10/<module>
如果想在单个请求中发送大量创建 and/or 更新,请查看 POST /rest/v10/bulk
API - 如果您的 Sugar 版本有它。
最后的笔记:
/rest/v10/help
上的过滤器运算符定义似乎不完整,有关更多信息,您可以查看 the filter docs
我正在编写一个软件,用于自定义软件和 sugarCRM 的数据同步。因此我需要一个 updateOrCreate() 函数。我的问题是,自定义软件使用 sugarCRM 以外的其他 uuid,所以我无法查找 uuid 来检查更新或 create.So 我想将自定义 uuid 保存在 sugarCRM 的自定义字段中。 但是我不知道如何通过 sugarCRM 的 REST-API 来做到这一点。 顺便说一句,我写了一个java-application.
感谢您的帮助!
据我所知,没有更新或创建 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
)。为了简单起见,我没有将它们全部包含在响应片段中。
2)
根据上一步收到的信息,您知道哪个糖 ID 属于哪个自定义 UUID,您可以 detect/prepare 数据进行更新。
如果你需要同步所有并先检索完整列表,我建议你创建一个查找 table custom-uuid => sugar-id,这样你就不必在查找时循环遍历数据数组和比较字段对于特定数字。
不要忘记考虑自定义 uuid 一次出现在多个 Sugar 记录中的可能性,除非您强制它们在 server/database边.
3)
现在您已拥有所需的所有信息,可以根据需要更新和创建记录:
更新现有记录:
PUT /rest/v10/<module>/<record_id>
创建丢失的记录:
POST /rest/v10/<module>
如果想在单个请求中发送大量创建 and/or 更新,请查看 POST /rest/v10/bulk
API - 如果您的 Sugar 版本有它。
最后的笔记:
/rest/v10/help
上的过滤器运算符定义似乎不完整,有关更多信息,您可以查看 the filter docs