[quote=lsjunior][quote]Acho que deveria ser feito no EJB em um novo método. Por que? para centralizar os processos de negócio a+b ou a+b+c.
Se for necessário em outro lugar (outro MB), estará pronto no EJB para ser utilizado. [/quote]
Claro que não, só vai duplicar as regras de negócio. Se vc tem um método que grava um usuário e outro que grava o grupo, em determinado momento vc quer gravar ambos, tem lógica duplicar os métodos sendo que eles já funcionam corretamente?. Vc apenas tem que garantir que ambos serão executados corretamente ou tudo deve ser desfeito. Outra coisa é que quem sabe quando invocar esse métodos é o cliente, no caso o MB. Se O MB desejar gravar 10 usuários, modificar 3 grupos, alterar mais 5 usuários, remover 1 usuário e depois modificar criar alguns grupos tudo na mesma transação é ele que sabe o que faz, o EJB fará a parte dele(validar as regras negociais de cara operação, inserir os dados no banco, gravar log, etc).
Isso fiz nele por que a tela precisa salvar os dados juntos, mas o EBJ continua com os métodos separados. A reutilização dos EJBs é bem maior visto que não vou precisar criar um método para cada situação que o cliente precisar.[/quote]
Opa, acho que vc não entendeu o que eu quis dizer nos posts anteriores.
Continuando seu exemplo fazA, fazB, fazAB digamos que sejam respectivamente:
cadastraCliente(Cliente cliente), cadastraProduto(Produto produto), cadastraPedido(ClienteProduto cp)
Então o cadastraPedido além de realizar as outras operações, faz mais alguma coisa. É um serviço de negócio composto por outros (ele poderia também cadastrar o cliente e o produto se já não estiverem cadastrados)
Nesse sentido eu não criaria no MB.
Agora se o seu fazAB (com transações individuais) é somente chamar os outros 2 (cadastraCliente e cadastraProduto), seria melhor fazer chamadas assíncronas. Não criaria ‘cadastraClienteProduto’ como serviço.
Se necessitar que fazAB execute na mesma transação porque não adianta gravar só Cliente ou somente Produto, talvez seja porque este fazAB (com transação sobre tudo) deveria ser um serviço (cadastraPedido).
Obs.: isso é minha opinião, posso estar completamente errado, mas é o que faz sentido para mim por enquanto