--- Em zope-pt@yahoogrupos.com.br, Luciano Pacheco <lucm...@...> escreveu
>
> 2009/3/31 vinicius_marco <marco_vinic...@...>
> 
> > Pessoal,
> >
> >  Preciso criar uma validação que impeça a transição para determinado estado
> > enquanto as condições não forem atendidas.
> >
> >  Assim, por exemplo, caso se deseje publicar um objeto "inconsistente", a
> > transição deve ser abortada e uma mensagem exibida.
> >
> >  Tentei utilizar os scripts nos eventos de pre e pos transição, mas não vi
> > forma de abortar a transição uma vez iniciada.
> >
> 
> Na transição tem como usar um expression, pense nele como sendo um condition
> (do template). Eu já utilizei e funcionou.
> 
> A diferença de usar o expression é que enquanto o objeto estiver
> "incosistente" a transição não poderá ser feita.
> 
> Crie um método no seu objeto que diga se ele está insconsistente e no
> expression use algo como here/estaInconsistente.
> 
> Ou crie uma browser view que diga se o objeto está incosistente e use algo
> como here/@@estaInconsistente no expression.
> 
> Lá na tela da transition na ZMI tem uma ajuda ao lado do campo Expression,
> lá vc encontra mais informações.
> 
> Até mais,
> -- 
> Luciano Pacheco
> Simples Consultoria
> www.simplesconsultoria.com.br
>

Obrigado Luciano, mas desta forma o usuário fica sem saber que há transição 
possível até que uma determinada condição seja atendida. Isto é, até que o 
usuário preencha uma informação a transição não aparecerá no combo superior.   

Precisávamos de uma solução onde a transição estivesse sempre lá, mas houvesse 
uma validação prévia sempre que a mesma fosse disparada de modo a permitir ou 
não a continuidade do processo. 

Acabamos por utilizar uma solução "de contorno". Consiste em alterar no 
workflow o parâmetro URL da transição específica. Ao invés de invocar o 
content_status_modify, alteramos para um cpt ou cpy que se encarrega de dar o 
devido tratamento e decidir pela execução da transição. 

Não foi como imaginávamos, mas não ficou tão deselegante. 

[]'s

Responder a