Arquitetura para Processos BackGround usando Quartz

Boa Tarde Amigos

Estou com algumas duvidas…
vamos lá

Nosso ambiente temos 7 aplicações para diferentes departamentos e temos uma aplicação web que utiliza o quartz para realizar agendamento e execução de Processos, tem apenas 3 telas, agendamento, consulta e execução.
O ruim disso é que sempre que temos que criar algum processo que tem a haver com algum outro sistema que ja tem as regras de negocio implementadas, temos que implementar regras repetidas e outras novas no nosso sistema de agendamento e fazer o deploy dele novamente amarrando o processo com o sistema de agendamento, com isso ja tivemos problemas em outro processo ja implementado.

Eu havia pensado em criar componentes EJB para cada processo, e com isso evitava de ter que mexer no sistema de agendamento, a unica coisa que deveria ser feita seria fazer referencia ao client do processo e cadastrar via tela de agendamento os parametros para encontrar o componente e horario de execução.

Gostaria de saber se alguem me recomendaria alguma outra arquitetura ou Pattern para poder gerenciar esse tipo de situação?

agradeço a atenção de Todos

Nessa linha de chamar “rotinas” em outras aplicações, eu iria pelo SpringRemote, que é bem facil de implementar, se vc já utilizar spring :slight_smile:

Essas aplicações ficam na mesma máquina ?

Boa tarde.

As aplicações ficam em maquinas diferentes que é gerenciado como cluster pelo WebSphere, eu nao sei ao certo como isso funciona, so sei que cada grupo de aplicação ficam em Vm’s diferentes.

Nos utilizamos Spring aqui, mas minha grande duvida é se compensa o esforço de separar o processo das sua respectiva aplicação.

Porque acredito que sempre que formos fazer um novo processo teremos que rescrever codigos que ja foram implementados na sua aplicação.

por exemplo:

tivemos que criar uma rotina de copia de base de dados da aplicação X.

Criamos np nosso sistema de Processos essa rotina.
E tivemos que recriar o modelo de dados, desperdiçando o modelo que ja existia na aplicação X.
Estou quase chegando a conclusão de que cada sistema deverá ser responsavel por controlar seus processos Batch.
E esse sistema que temos para controle ser tirado do ar…

grato pela atenção

Então, a idéia do SpringRemote que te falei é exatamente vc não retirar as rotinas das aplicações em que estão, vc faz uma chamada remota e o processo é executado na máquina/sistema onde está. Se fosse a mesma VM seria mais rapido, mas como são outras, ele tem uma uma opção de HttpInvoker, e tb RMI se eu não me engano.

Aí o processo de agendamento fica em uma VM e os processos nas outras VMs, vc terá que criar uma interface de chamada, para vc não ter que ficar espalhando JARs pelos sistemas.