Ваш вопрос немного расплывчато, чтобы написать точный ответ, но у меня есть несколько предложений:
- Корпуса предназначены для связи команд (труба, подождите, и так далее), и код немного бит логики. Оболочки интерпретируются и их очень легко обновить, но они должны быть простыми. Они могут быть основной частью вашей системы.
- Оставить свой
launch
метод, чтобы начать процесс и захвата стандартный вывод и стандартный поток ошибок (в двух потоках), чтобы написать журнал вашего драйвера.
- Дизайн файла XML декларативно указать:
- пути процессов, ихние аргументы (статические)
- параллельности и синхронизации между заданиями
- Написать модель в Java, чтобы отразить XML (JAXB может быть решением)
- Добавить в модель возможность ждать набора заданий
- Добавить модификаторы в модель для динамического изменения значений аргументов
Если я попытаюсь классифицировать вашу проблему, я думаю, в основном по адресу Поток управления.
Чтобы решить большую проблему вы можете использовать параллелизм: запустить одновременно несколько процессов и ждать окончания всех из них: это Рандеву или присоединиться фазы. Возможно, вы можете запустить удаленную команду на другой сетевой компьютер.
Хороший пример того, как указать параллелизм в файл XML является ANT build files:
<parallel>
<wlrun ... >
<sequential>
<sleep seconds="30"/>
<junit fork="true" forkmode="once" ... >
<wlstop/>
</sequential>
</parallel>
Могу ли я предложить вам использовать ANT, чтобы решить вашу проблему без программирования?
чертеж желает исполнения может помочь с бумагой и ручкой ... ;-)
Несколько графических приложений может помочь нарисовать логическую схему управления потоком. Сделав это, опубликуйте его здесь, и вы получите более точный ответ, я надеюсь ...
Пожалуйста, отправьте несколько примеров команд – Aubin
@Aubin: примеры: перезапустите другие процессы с помощью '/etc/init.d',do' ifconfig', удалите оболочку, чтобы назвать наиболее важные – Cratylus