Пользовательское поле SugarCRM - PullRequest
0 голосов
/ 22 ноября 2018

Я пишу программное обеспечение для синхронизации данных пользовательского программного обеспечения и sugarCRM.Поэтому мне нужна функция updateOrCreate ().Моя проблема в том, что пользовательское программное обеспечение использует другие uuid, кроме sugarCRM, поэтому я не могу найти uuid для проверки обновления или создания. Поэтому я хочу сохранить пользовательский uuid в настраиваемом поле sugarCRM.Но я понятия не имею, как это сделать через REST-API sugarCRM.Кстати, я написал java-приложение.

Спасибо за помощь!

1 Ответ

0 голосов
/ 23 ноября 2018

Насколько мне известно, API обновления или создания отсутствует (см. https://your-sugarsite/rest/v10/help), однако, если вы просто хотите использовать API (а не настраивать его), вы можете синхронизировать данные следующим образом:

1) Получите все идентификаторы записей, которые имеют пользовательский uuid, используя конечную точку POST /rest/v10/<module>/filter и полезную нагрузку, подобную:

{
    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 в новом запросе для получения оставшихся записей.
  • Вы можете указать все имена полей, которые необходимо синхронизировать, в *Массив 1028 *, чтобы вы могли получить эту информацию как можно раньше и могли проверить, требуется ли обновление вообще (возможно, данные все еще актуальны)
  • Сахар также всегда включает определенные поля в ответнезависимо от того, были ли они запрошены или нет.(Например, id и date_modified).Я не включил их все в фрагменты ответов для простоты.

2)

На основе информации, полученной на предыдущем шаге, который вы знаетек какому идентификатору сахара принадлежит какой пользовательский UUID, и вы можете обнаружить / подготовить данные для обновлений.

Если вам нужно сначала синхронизировать все и получить полный список, я предлагаю вам создать таблицу поиска custom-uuid => sugar-id, чтобы вам не приходилось перебирать массив данных и сравнивать поля при поиске определенного числа.

Не забудьте рассмотреть возможность присутствия пользовательского uuid в одном, более чемСахарные записи за раз, если только вы не обеспечите их уникальность на стороне сервера / базы данных.

3)

Теперь, когда у вас есть вся необходимая информация, выможет обновлять и создавать записи по мере необходимости:

  • Обновить существующую запись: PUT /rest/v10/<module>/<record_id>

  • Создать отсутствующую запись: POST /rest/v10/<module>

Если хотите отправить всеЕсли вы не создаете и / или не обновляете один запрос, взгляните на API POST /rest/v10/bulk, если он есть в вашей версии Sugar.

Заключительные замечания:

  • Определение операторов фильтра на /rest/v10/help кажется неполным, для получения дополнительной информации вы можете проверить Документация фильтра
...