BPM-Engine

 view release on metacpan or  search on metacpan

t/04-run/10-engine.t  view on Meta::CPAN

$process = $engine->get_process_definitions({ process_uid => 'multi-inclusive-split-and-join' })->first;
isa_ok($process, 'BPM::Engine::Store::Result::Process');

#-- get_process_definition

throws_ok( sub { $engine->get_process_definition() },         qr/Validation failed/, 'Validation failed' );
throws_ok( sub { $engine->get_process_definition('string') }, qr/Validation failed/, 'Validation failed' );

$process = $engine->get_process_definition($process->id);
isa_ok($process, 'BPM::Engine::Store::Result::Process');

#-- delete_package

throws_ok( sub { $engine->delete_package() },          qr/Validation failed/, 'Validation failed' );
throws_ok( sub { $engine->delete_package('string') },  qr/Validation failed/, 'Validation failed' );
throws_ok( sub { $engine->delete_package(1) },         qr/Validation failed/, 'Validation failed' );

$engine->delete_package($package->id);
is($engine->get_packages->count, 0, 'Package deleted');
is($engine->get_process_definitions->count, 0, 'Process deleted');

#-- ProcessInstance Methods (Handler::ProcessInstanceHandler)
#----------------------------------------------------------------------------

$package = $engine->create_package('./t/var/08-samples.xpdl');
my @procs = $engine->get_process_definitions({ process_uid => 'unstructured-inclusive-tasks' })->all;
is(@procs, 1);
$process = shift @procs;
isa_ok($process, 'BPM::Engine::Store::Result::Process');

#-- create_process_instance

throws_ok( sub { $engine->create_process_instance() },          qr/Validation failed/, 'Validation failed' );
throws_ok( sub { $engine->create_process_instance('string') },  qr/Validation failed/, 'Validation failed' );
throws_ok( sub { $engine->create_process_instance(987654321) }, qr/Validation failed/, 'Validation failed' );
throws_ok( sub { $engine->create_process_instance('3C2B6B44-E2DB-1014-857D-7D16527AAD97') }, qr/Process 3C2B6B44-E2DB-1014-857D-7D16527AAD97 not found/, 'Process not found' );

ok(my $pi0 = $engine->create_process_instance($process->id));
isa_ok($pi0, 'BPM::Engine::Store::Result::ProcessInstance');

ok(my $pi = $engine->create_process_instance($process, { instance_name => 'my process instance' }));
isa_ok($pi, 'BPM::Engine::Store::Result::ProcessInstance');
is($pi->instance_name, 'my process instance');

#-- list_process_instances

is($engine->get_process_instances->count, 2, 'Two process instances found');
my $first_pi = $engine->get_process_instances->first;
isa_ok($first_pi, 'BPM::Engine::Store::Result::ProcessInstance');
is($pi0->id, $first_pi->id, 'Created process instance found in list');

#-- get_process_instance

throws_ok( sub { $engine->get_process_instance() },          qr/Validation failed/, 'Validation failed' );
throws_ok( sub { $engine->get_process_instance('string') },  qr/Validation failed/, 'Validation failed' );
throws_ok( sub { $engine->get_process_instance(987654321) }, qr/Process instance '987654321' not found/, 'Validation failed' );
throws_ok( sub { $engine->get_process_instance(987654321) }, 'BPM::Engine::Exception::Database', 'Validation failed' );

ok($first_pi = $engine->get_process_instance($first_pi->id));
isa_ok($first_pi, 'BPM::Engine::Store::Result::ProcessInstance');
is($first_pi->workflow_instance->state->name, 'open.not_running.ready');
is($first_pi->state, 'open.not_running.ready');

#-- start_process_instance

throws_ok( sub { $engine->start_process_instance() },          qr/Validation failed/, 'Validation failed' );
throws_ok( sub { $engine->start_process_instance('string') },  qr/Validation failed/, 'Validation failed' );
throws_ok( sub { $engine->start_process_instance(987654321) }, qr/Process instance '987654321' not found/, 'Validation failed' );
throws_ok( sub { $engine->start_process_instance(987654321) }, 'BPM::Engine::Exception::Database', 'Validation failed' );

my $args = { splitA => 'B1', splitB => 'B1' };

is($pi->process->process_uid,'unstructured-inclusive-tasks');

$engine->start_process_instance($pi, $args);

is($pi->workflow_instance->state->name, 'closed.completed');
is($pi->state, 'closed.completed');

#-- terminate_process_instance

#-- abort_process_instance

#-- process_instance_attribute

#-- change_process_instance_state

my $pi1 = $engine->create_process_instance($process);

throws_ok(
    sub { $engine->change_process_instance_state($pi1, 'open.your.eyes') },
    qr/There's no 'open.your.eyes' transition from open.not_running.ready/,
    'Invalid process instance state change failed'
    );

is($pi1->state, 'open.not_running.ready');
my $st = $engine->change_process_instance_state($pi1, 'start');
is($pi1->state, 'open.running');
$engine->change_process_instance_state($pi1, 'terminate');
is($pi1->state, 'closed.cancelled.terminated');

my $pi2 = $engine->create_process_instance($process);
$engine->change_process_instance_state($pi2, 'start');
$engine->change_process_instance_state($pi2, 'abort');
is($pi2->state, 'closed.cancelled.aborted');

my $pi3 = $engine->create_process_instance($process);
$engine->change_process_instance_state($pi3, 'start');
$engine->change_process_instance_state($pi3, 'suspend');
is($pi3->state, 'open.not_running.suspended');
$engine->change_process_instance_state($pi3, 'resume');
is($pi3->state, 'open.running');
$engine->change_process_instance_state($pi3, 'finish');
is($pi3->state, 'closed.completed');

#-- delete_process_instance

is($engine->get_process_instances->count, 5, 'First process instance found');
ok($engine->delete_process_instance($pi));
is($engine->get_process_instances->count, 4, 'First process instance deleted');


#-- Activity Methods (Handler::ActivityInstanceHandler)
#----------------------------------------------------------------------------

$engine->start_process_instance($pi0);

#-- list_activity_instances

#is($engine->get_activity_instances->count, 7);
my $ai = $engine->get_activity_instances->first;
isa_ok($ai, 'BPM::Engine::Store::Result::ActivityInstance');

#-- get_activity_instance

throws_ok( sub { $engine->get_activity_instance() },          qr/Validation failed/, 'Validation failed' );
throws_ok( sub { $engine->get_activity_instance('string') },  qr/Validation failed/, 'Validation failed' );
throws_ok( sub { $engine->get_activity_instance(987654321) }, 'BPM::Engine::Exception::Database', 'Record not found' );

ok($ai = $engine->get_activity_instance($ai->id));
isa_ok($ai, 'BPM::Engine::Store::Result::ActivityInstance');

done_testing;
exit;
#######################

#-- change_activity_instance_state

#ok($engine->change_activity_instance_state($ai->id, 'finish'));

#-- activity_instance_attribute

throws_ok(
    sub { $engine->activity_instance_attribute($ai->id, 'UnknownVar') },
    qr/Attribute named 'UnknownVar' not found/, 'Validation failed'
    );
throws_ok(
    sub { $engine->activity_instance_attribute($ai->id, 'UnknownVar') },
    'BPM::Engine::Exception::Database', 'Validation failed'
    );

ok($ai->add_to_attributes({
    name => 'SomeVar',
    value => 'SomeVal',
    }));

is($engine->activity_instance_attribute($ai->id, 'SomeVar')->value, 'SomeVal');
ok($engine->activity_instance_attribute($ai->id, 'SomeVar', 'OtherValue'));
is($engine->activity_instance_attribute($ai->id, 'SomeVar')->value, 'OtherValue');



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