Olá pessoal,<div><br></div><div>Eu comecei a fazer um app catalyst+dbix usando o Class::Workflow para fazer um sistema meio abstrato de controle de processos para a minha empresa.</div><div><br></div><div>Eu já fiz uma parte do esqueleto da aplicação mas estou sofrendo com duas coisas ainda e que tem a ver com extensão de resultsets do DBIx::Class...</div>

<div><br></div><div>Eu não sei basicamente o que tem de ser feito então não sei se vou conseguir descrever exatamente o meu problema, mas aí vai uma tentativa:</div><div><br></div><div>Eu tenho uma tabela de transições no banco e um resultset MyApp::Schema::Result::Workflow::Transition representando-a.</div>

<div><br></div><div>Quando eu aplico uma transição a uma entidade stateful (ou seja, que tem o class::workflow por trás representando seus estados, histórico, etc) eu chamo uma sub pertencente à classe de transição dela:</div>

<div><br></div><div>$transition->$action( $instance, @args ); # onde action, pode ser, por exemplo: REASSIGN</div><div><br></div><div>que chama um método em MyApp::Schema::Result::Workflow::Transition</div><div><br></div>

<div>mas como eu quero que o sistema seja abstrato, e permita que eu crie classes de transição relativas à entidade em questão, eu queria que o método fosse chamado em uma subclasse de MyApp::Schema::Result::Workflow::Transition, por exemplo, em MyApp::Schema::Result::Workflow::Transition::Ticket, ou MyApp::Schema::Result::Workflow::Transition::Order, etc...</div>

<div><br></div><div>Eu imagino que o que eu tenho de fazer é: no construtor da minha classe MyApp::Schema::Result::Workflow::Transition eu tenho sei se o sujeito está criando um Ticket ou um Order, e daí eu seto o resultset_class na classe certa...</div>

<div><br></div><div>daí eu fiz:</div><div><br></div><div>after 'new' => sub { my $self = shift; my $class = __PACKAGE__ . "::" . $self->class; bless ( $self, $class ) };</div><div><br></div><div>mas estou tendo o erro:</div>

<div><br></div><div>Can't locate object method "REASSIGN" via package "MyApp::Model::DB::Workflow::Transition::Ticket"</div><div><br></div><div>Eu defini o método em MyApp::Schema::Result::Workflow::Transition::Ticket, e dei o rebless em MyApp::Schema::Result::Workflow::Transition::Ticket, não entendo porque ele está dizendo que o package é MyApp::DB::Model....</div>

<div><br></div><div>Abraços!!</div><div>Donato Azevedo<br>
</div>