Показать сообщение отдельно
Старый 05.12.2017, 23:16   #18  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от Rardd Посмотреть сообщение
Извините за задержку с ответом. Задача в следующем:
Есть сущность которую нужно выгружать, и есть ситуация когда эта сущность настолько велика, что ее формирование это десятки часов (система достаточно мощная). И задача была в том, что бы разбить выгрузку этой сущности на потоки что бы снизить общее время ее генерации так как есть записи которые выгружаются 10 секунд, а есть записи которые выгружаются 10 минут, и пришли к выводу что нужно разбить выгрузку на задачи (потоки). Каждый поток записывает резульатат в таблицу (единственный выход синхронизации потоков). Потом, когда все потоки отработали, идем в таблицу и создаем из записей json, который с помощью Custom Service можна забрать. Вот собственно и все
1. Создать runbaseBatch класс который "выгружает".
2. В данном классе использовать Query c нужными вам data ranges (продукт, вендор, дата и пр.).
3. Позаботится об отсутствии конфликтов при вставке в конечную таблицу.
4. Поставить в пакетную обработку столько запусков сколько вам угодно разделяя обработку через значения в data ranges.

Вполне вероятно что одновременный запуск вам на практике и не понадобится если исполнение будет ночным за несколько часов.

По сути вы формируете некий data source для внешнего сервиса. Но я очень сомневаюсь обновления данных 1-3 раза в сутки в данном data source будет недостаточно.

А если у вас полный runtime и каждый запрос внешнего сервиса создает новую выгрузку то пожалейте систему и себя. Все равно придете к периодическому формированию data source и его повторному использованию. И здесь надо то что называется "периодическая операция" в AX. На выделенном сервере, по расписанию, с параметрами и пр.

Не нужна вам никакая синхронизация потоков.