Хотите захватить поля, которые обновляются в Salesforce - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу создать универсальный компонент, который может сохранять имя объекта и имена полей со старыми и новыми значениями в BigObject.Алгоритм грубой силы говорит, что при каждом обновлении каждого объекта, получайте имена API полей, используя описание, и проверяйте старое и новое значение этих полей.Если он модифицируется, вставьте его в новый BigObject.Но это займет много процессорного времени, и я ищу оптимальное решение для этого.Любые предложения приветствуются.

1 Ответ

0 голосов
/ 19 декабря 2018

Ну, у вас уже есть какой-нибудь код?Может быть, сравните его, а затем посмотрите, что вы можете оптимизировать, вместо того, чтобы перерабатывать его с самого начала ... Сделайте это простым, напишите тестовый набор, а затем попытайтесь оптимизировать (не прерывая юнит-тесты).

Пара случайных идей:

  • Вы бы сделали это в триггере?Таким образом, ваше «описание» может произойти только один раз.Вам не нужно описывать каждое отдельное поле, вам нужна только одна операция вне основного цикла триггера.

    Set<String> fieldNames = Account.sObjectType.getDescribe().fields.getMap().keyset(); System.debug(fieldNames);

    Это даст вам «только» имена полей, но этого достаточно.Тебе все равно, списки пикетов, даты или что-то еще.Используйте это с общим sObject.get('fieldNameHere'), и это хорошее начало.

  • или, может быть, без описания вообще.getPopulatedFieldsAsMap() от sObject даст вам классную Карту, которую вы можете легко перебрать и сравнить.

  • или JSON.serialize старая и новая версия объекта и, если онине идентичны - вы знаете, что делатьНе знаю, будут ли они всегда сериализоваться с одним и тем же порядком поля, поэтому лучше проверить, идентичны ли карты

  • Вам действительно нужно вручную подобным образом отслеживать историю полей?У вас есть 1M свободного хранилища записей, но оно может легко взорваться в более загруженной SF организации.Особенно, если у вас есть рабочие процессы, процессы, другие триггеры, которые будут переводиться в несколько обновлений (= несколько запусков триггера) в одной транзакции.Возможно, нормальное отслеживание истории полей + отслеживание фида чата + даже щит сотрудников отдела продаж (я думаю, что оно содержит еще 60 отслеживаемых полей) будет более подходящим для потребностей вашего бизнеса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...