Как подружить Future методы и объекты в Apex

В этой статье я расскажу о том как подружить Future методы и объекты в Apex. Сразу оговорюсь, статья будет ультракороткая и без особой магии.

Все мы прекрасно знаем, что во future метод можно передать лишь примитивы и коллекции.

собственно это и написано в документации.

Однако, есть один хитрый способ, который позволяет это сделать (Почему, мистер Андерсон, почему? Во имя чего? Что вы делаете? :joy:).

Первое что нам нужно, это сериализовать наш объект перед вызовом future, полученную строку передаем, как входящий параметр, в вызываемый метод.

Первый шаг сериализуем наш Account в String.


...

Account account = Account(Name = 'Test');

String strAccount = JSON.serialize(account );

...

future(strAccount)

Полученую стрингу во future методе десериализуем из String обратно в Account.


future method(strAccount)

Account account = (Account)JSON.deserialize(strAccount , Account.class);

...

Выводы.

Вот так просто мы можем (мы можем обмануть систему) передавать "объекты" во future.

Одно из оправданий такого поведения, мы можем упереться в лимиты SOQL(мы просто можем так) и чтобы сократить количество запросов мы можем использовать такой подход.

4 Likes