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
=head1 VERSION
0.01
=head1 SYNOPSIS
Create a new BPM engine
use BPM::Engine;
my $callback = sub {
my($runner, $entity, $event, $node, $instance) = @_;
...
};
my $engine = BPM::Engine->new(
log_dispatch_conf => 'log.conf',
connect_info => { dsn => $dsn, user => $user, password => $password },
callback => $callback
);
Save an XPDL file with workflow process definitions, and retrieve the process
definitions
my $package = $engine->create_package('/path/to/model.xpdl');
my @processes = $engine->get_process_definitions->all;
Create and run a process instance
my $instance = $engine->create_process_instance(
$process, { instance_name => 'My first process run' }
);
$engine->start_process_instance($instance, { param1 => 'value1' });
( run in 2.850 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )