2009-10-13 12 views
6

Rozważam użycie struktury Quartz do zaplanowania przebiegu kilkuset zadań.Java - Utwórz przepływ pracy w kwarcu

Zgodnie z ich API, zadania mogą być planowane do uruchomienia w określonych momentach, ale nie do uruchamiania jednego po drugim (i zatrzymania łańcucha zadań, jeśli się nie powiedzie). Jedyne metody zalecane udało mi się znaleźć to:

  • Korzystanie słuchacza, który stwierdzi zakończenie zadania i harmonogram następnego spust do ognia (jak koordynować jest?)
  • Każde zadanie otrzyma parametr zawierający następne zadanie do wykonania i, po zakończeniu faktycznej pracy, zaplanować jego uruchomienie. (Spółdzielnia)

Czy znasz lepszą metodę tworzenia przepływu pracy w Quartz?

Czy możesz polecić inne metody/ramy dla wdrożenia przepływu pracy w Javie?

EDYCJA: W międzyczasie dowiedziałem się o OSWorkflow, który wydaje się być dobrym dopasowaniem do tego, czego potrzebuję. Wygląda na to, że to, co muszę wprowadzić, to "Sequence Pattern".

Odpowiedz

1

To brzmi dla mnie tak, jakbyś chciał, aby Quartz zaplanował zadanie najpierw i odłączył wszystko od tego.

Czy przyjrzeliście się zamknięciu każdego zadania przy użyciu Command Pattern i łączeniu ich razem?

2

Gdy dokumentacja Quartz mówi o "Zadanie", odnosi się do klasy implementującej interfejs "Job", która jest tak naprawdę tylko dowolną klasą z metodą "wykonania", która przyjmuje obiekt kontekstu kwarcowego. Podczas tworzenia tej implementacji możesz naprawdę robić, co chcesz.

Można utworzyć implementację interfejsu zadań kwarcowych, który po prostu wywołuje wszystkie zadania w obiegu pracy w serii i generuje wyjątek JobExecutionException po niepowodzeniu.

0

Pracuję nad projektem o nazwie Dynamiczny Task Scheduler które używają Quartz wykonać łańcuchy pracy realizacji prosty przepływ pracy w sposób odporny na uszkodzenia (zdefiniowana w formacie XML).

Spójrz na http://sourceforge.net/projects/dynatasksched/
projektu jest beta, ale myślę, że może daje jakieś pomysły, aby rozpocząć ..

nadzieję, że to przydatne!

0

Aby uzyskać wsparcie dla łączenia łańcuchów zadań dla kwarcu, możesz sprawdzić projekt QuartzDesk, w którym uczestniczyłem. W wersji 2.0. dodaliśmy potężną wersję job chaining engine, która umożliwia organizowanie zadań Quartz bez potrzeby modyfikowania kodu aplikacji.

Silnik zajmuje się propagowaniem wyniku wykonania zadania i innych parametrów z zadania źródłowego do powiązanego zadania docelowego.

QuartzDesk wyposażony jest w graficzny interfejs użytkownika, który pozwala dynamicznie aktualizować łańcuchy zadań bez zakłócania pracy aplikacji.

enter image description here