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 )