BPM-Engine
view release on metacpan or search on metacpan
lib/BPM/Engine/Role/HandlesTaskdata.pm view on Meta::CPAN
package BPM::Engine::Role::HandlesTaskdata;
BEGIN {
$BPM::Engine::Role::HandlesTaskdata::VERSION = '0.01';
$BPM::Engine::Role::HandlesTaskdata::AUTHORITY = 'cpan:SITETECH';
}
use namespace::autoclean;
use Moose::Role;
use Data::GUID;
use Try::Tiny;
requires qw/
process_instance
process
/;
before 'execute_task' => sub {
my ($self, $task, $activity_instance) = @_;
my $pi = $self->process_instance or die("Process instance not found");
my $process = $self->process or die("Process not found");
my $activity = $activity_instance->activity or die("Activity not found");
my $tdata = $task->task_data;
my $mtype = $task->task_type eq 'Send' ? 'Message' : 'MessageIn';
my $args = {
meta => {
# XXX Do GUID somewhere else (exec_impl) or not at all (same as activity_instance->id)?
id => Data::GUID->new()->as_string,
name => $task->task_name
|| $activity->activity_name
|| $activity->activity_uid,
type => $task->task_type,
process_id => $pi->process_id,
process_instance_id => $pi->id,
activity_id => $activity->id,
token_id => $activity_instance->id,
task_id => $task->id,
},
parameters => $task->actual_params, # XXX expression ApplicationFormalParams
message => _message($self, $tdata->{$mtype}, $process, $pi),
service => _service($tdata->{'WebServiceOperation'}),
performers => _performers($activity->participants_rs),
users => _performers($task->participants_rs),
# $process->participants_rs(
# { participant_uid => $tdata->{Performers}->{Performer} }
# )
# ),
};
$activity_instance->update({ taskdata => $args });
return;
};
sub _performers {
my $p_rs = shift;
return [ map { _performer($_) } $p_rs->all ];
#my @p = ();
#while (my $rec = $p_rs->next) {
# push(@p, _performer($rec));
# }
#
#confess("Performers not found") unless scalar @p;
#
#return \@p;
( run in 1.349 second using v1.01-cache-2.11-cpan-39bf76dae61 )