BPM-Engine

 view release on metacpan or  search on metacpan

lib/BPM/Engine.pm  view on Meta::CPAN

package BPM::Engine;

BEGIN {
    $BPM::Engine::VERSION   = '0.01';
    $BPM::Engine::AUTHORITY = 'cpan:SITETECH';
    }

use 5.010;
use namespace::autoclean;
use Moose;
use MooseX::StrictConstructor;
#use Scalar::Util ();
use BPM::Engine::Exceptions qw/throw_engine/;
use BPM::Engine::Store;
use BPM::Engine::ProcessRunner;
use BPM::Engine::Types qw/ArrayRef/;

with qw/
    MooseX::SimpleConfig
    MooseX::Traits
    BPM::Engine::Role::WithCallback
    BPM::Engine::Role::WithPersistence
    BPM::Engine::Role::WithLogger
    BPM::Engine::Handler::ProcessDefinitionHandler
    BPM::Engine::Handler::ProcessInstanceHandler
    BPM::Engine::Handler::ActivityInstanceHandler
    /;
with 'BPM::Engine::Role::EngineAPI';

#has '+configfile'       => ( default => '/etc/bpmengine/engine.yaml' );

has '+_trait_namespace' => (default => 'BPM::Engine::Trait');

has 'runner_traits' => (
    isa       => ArrayRef,
    is        => 'rw',
    default   => sub { [] },
    predicate => 'has_runner_traits'
    );

sub runner {
    my ($self, $pi) = @_;

    #Scalar::Util::weaken($self);

    my $args = {
        process_instance => $pi,
        #engine           => $self, # DEPRECATED
        logger           => $self->logger,
        };
    $args->{callback} = $self->callback      if $self->has_callback;
    $args->{traits}   = $self->runner_traits if $self->has_runner_traits;

    return BPM::Engine::ProcessRunner->new_with_traits($args);
    }

__PACKAGE__->meta->make_immutable;

1;
__END__

=pod

=encoding utf-8

=head1 NAME

BPM::Engine - Business Process Execution Engine



( run in 1.702 second using v1.01-cache-2.11-cpan-39bf76dae61 )