Предложения по параллелизму Salesforce Apex - PullRequest
0 голосов
/ 10 ноября 2010

У меня есть обработчик входящей электронной почты, который работает.Однако сейчас я беспокоюсь о проблемах параллелизма, когда пользователь отправляет 2 электронных письма одновременно для одного и того же объекта.(У меня есть форма делового документа и форма технического документа, которая отправляется в Salesforce.) Они содержат разные вещи, кроме названия компании (Они передаются от кого-то другого непосредственно в Salesforce).Я делаю вставку моего пользовательского объекта в самом конце, я беспокоюсь о проблемах параллелизма.Это когда-нибудь случится?Мой обработчик входящей электронной почты создает 2 пользовательских объекта для одной и той же компании и заполняет только половину информации.

Если это так, как я могу предотвратить возникновение проблемы параллелизма?Текущие идеи: - Сделайте запрос для custom_object сразу со связанной учетной записью, а не в самом конце.Если объект custom_object не существует, создайте его.

Cheers,

Kuen

1 Ответ

3 голосов
/ 10 ноября 2010

«Параллелизм» в традиционном смысле редко встречается на платформе. Каждое из ваших входящих сообщений будет создавать отдельный процесс (обработчик) на платформе и работать независимо. У вас есть несколько вариантов работы с вашим сценарием из нескольких частей электронной почты, хотя, если вы хотите объединить их:

  1. Запланированный Apex позволит вам регулярно (ежедневно, еженедельно, что угодно) проверять существующие учетные записи на наличие двух пользовательских объектов, а затем использовать стандартное объединение для их объединения. Недостатком является то, что ваши пользователи могут видеть оба объекта, пока ваш процесс не успел их объединить. Думайте об этом как о модели типа «сборщик мусора» или «процесс очистки».
  2. Вы можете использовать один тип входящей электронной почты в качестве «основной» формы, а затем обработать другой (скажем, технический документ) асинхронным методом. Вы увеличите свои шансы на то, что они будут обработаны в правильном порядке, но нет никакой гарантии.
  3. Ваш способ (сначала запрос) также полностью подходит, хотя, опять же, ваш запрос может не «поймать» объект после его вставки, и если нет, вы пропустите его полностью.

На вашем месте, я бы, наверное, сделал комбинацию 2, а затем 3, чтобы убрать все, что вы пропустили.

...