Доброго дня времени. По задаче нужно делать очень много гет http запросов и на основе ответных данных создавать записи в SF. Меня интересует если какое грамотное решение для организации кода с этими запросами? Обработка исключений и т.д. Может есть какой паттерн для SF для этого? И как вы это делаете?
Нужно больше подробностей. Могут ли запросы выполняться параллельно? Зависит ли следующий запрос от предыдущего? Как должен происходить процесс? Real-time, background?
К сожалению да( И дело в том что по результату одного запроса могут идти несколько запросов дальше, и опять. Примерная схема: http://cs622025.vk.me/v622025418/2152d/NuacgrXgZ8g.jpg Запись в объекте формирует на основе всех уровней, то есть если смотреть по схеме то будет 6 записей где собраны данные из 3 уровней запросов. Причем если ответы на запросы третьего слоя будут пустыми все равно создать записи, но с пустыми полями где должны быть данные из тертьего слоя.
Каждую ночь по таймеру
Я думаю надо сделать как-то послойно, и создавать каждый слой данных батчем по предыдущему слою.
По обработке ошибок и архитектуре - раздели все слои на сервисы, выдели DAO, реализуй кастомные ошибки, можешь сделать небольшую обертку над батчами, так как логика бедт одинаковая, можешь использовать очередь из батчей.
Хочу из future запустить Батч выдает ошибку - First error: Database.executeBatch cannot be called from a batch start, batch execute, or future method. future запускается из Scheduled класса. Почему я использую future из Scheduled? Потому что если используются http запросы в Scheduled то будет ошибка. Как мне выйти из положения? Общая схема работы Scheduled --> future --> Batch
Хочу из future запустить Батч выдает ошибку - First error: Database.executeBatch cannot be called from a batch start, batch execute, or future method. future запускается из Scheduled класса. Почему я использую future из Scheduled? Потому что если используются http запросы в Scheduled то будет ошибка. Как мне выйти из положения? Общая схема работы Scheduled --> future --> Batch
1. Я запускаю future, можно ли как то отследить окончание его выполнения в apex коде? 2. Можно ли вообще из Scheduled делать HTTP запросы? Просто так не пускает. Может есть что то типа Database.AllowsCallouts для батча?
. А что мешает в скедулере запускать батч из которого можно в каждом execute до 100 callouts делать
зачем future собственно?
Может опиши юзкейс, быть может есть другое решение?
Да уже нашел решение. Раньше сначала запускался класс который делал запрос на внешний сервер и получал парсил вставлял в базу данные. По том по этим данным шел батч которое тоже делал запросы и т.д. Выход нашел так: Просто поместил весь код начального класса в start метод батча. Тоесть батч теперь сначал вставляет данные, потом уже по ним идет.