В настоящее время я работаю над проектом, который выполняет ряд фоновых задач, которые выполняются. Каждая задача создается, а затем отправляется на параллельную службу, которая управляет процессом выполнения всех задач. Каждая задача хранится в таблице базы данных в течение продолжительности ее выполнения.Реализация единого отслеживания прогресса для перетаскиваемых задач
Моя дилемма заключается в том, что каждая задача выполняет очень конкретные функции, и в большинстве случаев большинство делегатов на службу в другой части системы, основная работа выполняется, а затем возвращается задача.
В настоящее время у меня очень простая система, которая отслеживает ход выполнения задачи, она работает хорошо, однако каждая выполняемая задача требует добавления большого количества дополнительного кода для обеспечения функциональности предоставляемых им услуг.
Так как пример моя задача будет иметь метод:
@Override
public void execute() {
service.calculateAverage();
}
И затем, соответственно, на службе:
public float calculateAverage() {
float total = 0.0f;
for (i = 0; i < 20; i++) {
total += i;
}
return total/20;
}
Отслеживание прогресса это довольно просто, я просто обновить мой задачи в базе данных после того, как она прошла определенный порог итераций. Тем не менее, для его создания это довольно сложная задача, так как каждая выполняемая задача может делегировать другую службу полностью. Это означает, что в каждой службе мне нужно добавить код, специфичный для реализации для этой службы.
Я немного поработал, и я не могу найти никаких хороших шаблонов, которые могут помочь в создании общей системы для отслеживания прогресса каждой задачи. Любые указатели или даже просто места для просмотра или чтения были бы хорошими.
Это действительно помогло, я в настоящее время внедряю его в действие, и, похоже, он работает очень хорошо. Никогда бы не подумал сделать это таким образом. – Daniel