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 )