BPM-Engine
view release on metacpan or search on metacpan
lib/BPM/Engine/Role/HandlesAssignments.pm view on Meta::CPAN
package BPM::Engine::Role::HandlesAssignments;
BEGIN {
$BPM::Engine::Role::HandlesAssignments::VERSION = '0.01';
$BPM::Engine::Role::HandlesAssignments::AUTHORITY = 'cpan:SITETECH';
}
use namespace::autoclean;
use Moose::Role;
use BPM::Engine::Util::ExpressionEvaluator;
requires qw/process_instance process/;
before 'start_process' => sub {
my $self = shift;
my @assignments = $self->process->start_assignments;
return unless scalar @assignments;
my $evaluator = BPM::Engine::Util::ExpressionEvaluator->load(
process => $self->process,
process_instance => $self->process_instance,
);
foreach my $ass (@assignments) {
$evaluator->assign($ass->{Target}, $ass->{Expression});
}
};
before 'complete_process' => sub {
my $self = shift;
my @assignments = $self->process->end_assignments;
return unless scalar @assignments;
my $evaluator = BPM::Engine::Util::ExpressionEvaluator->load(
process => $self->process,
process_instance => $self->process_instance,
);
foreach my $ass (@assignments) {
$evaluator->assign($ass->{Target}, $ass->{Expression});
}
};
before 'start_activity' => sub {
my ($self, $activity, $instance) = @_;
my @assignments = $activity->start_assignments;
return unless scalar @assignments;
my $evaluator = BPM::Engine::Util::ExpressionEvaluator->load(
activity => $activity,
activity_instance => $instance,
process => $self->process,
process_instance => $self->process_instance,
);
foreach my $ass (@assignments) {
$evaluator->assign($ass->{Target}, $ass->{Expression});
}
};
before 'complete_activity' => sub {
my ($self, $activity, $instance) = @_;
my @assignments = $activity->end_assignments;
return unless scalar @assignments;
( run in 0.672 second using v1.01-cache-2.11-cpan-39bf76dae61 )