Como se implementa servicos no grails
01/08/2013 13:41
0
Bom disculpa tenho feito muitos topicos sobre duvidas no grails porem como estou comecando entao aqui que eh normal procurei apostilas sobre grails e axei uma em ingles aqui no forum msm poren nao tem nada sobre servicos la , alguem poderia me explicar ou indicar um site que tem uma boa ajuda sobre isso?obg desde ja
Tags: [Duvida]


0
Oi Wiliam,

um bom ponto pra começar é dar uma lida neste link da documentação oficial:
http://grails.org/doc/latest/guide/services.html

Off:
para facilitar nossa vida e a sua, tem como nas próximas dúvidas você incluir palavras-chave mais significativas do que simplesmente "Duvida"? É que isto facilita muito a indexação dos posts e consequentemente os usuários ao encontrarem seus problemas.


1
nos proximos posts tentarei ser mais claro... so uma coisa eu li a documentacao so que nao entendi algumas coisas!!!

1)quando eu crio um servico eu tenho que criar um controller pra ele ou eu vo ?njetar~ele no controlle do qual quero as informacoes? ex: quero um relario de uma ordem de servico da classe ordem de servico, tenho que injetar no controller dessa classe ou fazer um novo???

2) no servico que eu faco a requisicao do que eu quero buscar ex: quero fazer um relario de quantas vezes um carro veio na mecanica e quais os problemas que apresentou quando veio, nesse caso o "select" do que eu quero fica no servico?

basicamente essas sao as duvidas se e que deu para entender, nao sei se ficou claro
01/08/2013 14:33


0
Oi William,

às suas perguntas

1) Não, não precisa. O serviço é um local aonde você centraliza o seu código responsável por regras de negócios, procedimentos transacionais, etc. Coisas que executam independente da camada de controle. O controlador pode até chamar o serviço, mas não é obrigatório.

2) Sim, neste caso a sua consulta poderia ser feita no serviço mesmo. Aliás, é o recomendado, porque fica mais fácil para você testar por exemplo.

Qualquer coisa to aqui pra te ajudar.


1
Olá William!

Vou te dar um exemplo de uso de service que vai ficar mais fácil pra você entender.

Pense no exemplo clássico que você tem o domínios:

class Lancamento {
Date data
Float valor
}

class ContaCorrente {
String nome
String numero
}

class ContaSaldo {
static belongsTo = [conta: ContaCorrrente]
Date data
Float saldo
}


A cada movimentação que ocorrer na conta corrente você irá atualizar a tabela de saldo. Eu utilizo os services nestes casos.


class ContaCorrenteService {
def eftuarLancamento(ContaCorrente c, Float valor, Date dataLanc) {
new Lancamento(data:dataLanc, valor: valor).save()

def saldo = ContaSaldo.find{ conta = c && data == dataLanc }

if (!saldo)
saldo = new ContaSaldo(conta: c, data: datLanc)

saldo.valor = saldo.valor + valor
saldo.save()
}
}


Acredito que quando houver operações entre varios dominios é interessante utilzar os services


0
Dexa eu ver se intendi o servico nao precisa necessariamente de um controller e que ele poder ate chamar mais nao e obrigatorio, no Meu caso eu tenho um programa que gerencia ordems de servico em uma oficina, e quero mostrar o relatorio da ordem de servico com o que foi feito e tals e tudo que foi feito esta na classe (ordemServico,Servico,Laudo) ou seja um select para obter todos os dados e isso iria no RelatorioService certo? e axo que eu teria que faze uma view para mostrar isso no programa certo? como eu chamaria o servico enviando pra ele os parametros que quero e colocando o retorno na view?

eu vi o exemplo do leandro mais ainda nao clareou bem
01/08/2013 17:40


0
William,

o serviço nunca deve precisar de um controle: ele é independente, é onde sua lógica de negócio fica. Preferencialmente, ele não deve jamais executar um controlador.

Sim, a consulta fica no seu RelatorioService. No caso, você chama o serviço pelo seu controlador injetando-o nele. Isto é fácil. Repara no exemplo abaixo:


class SeuControlador {
def relatorioService
}


Basta declarar uma variavel com o nome do serviço camel cased como mostrei no exemplo acima.


0
desculpa a ignorancia mais uma vez mas, bom eu faco a consulta no service e injeto no controlador ai pro exemplo no controlador eu chamo ele assim


relatorioService.consulta()

passando os paramentros entre () ,so que preciso mostrar ele , e isso se faz atrasvez da view certo? ai para mostrar na view eu crio a view consulta etc etc eh mais ou menos isso?
01/08/2013 19:46


0
Veja se o exemplo desse link ajuda.
http://omarello.com/2010/10/working-with-grails-transactions/
O link é sobre transações mas tem um exemplo de um serviço.
Espero que ajude.



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto