BPM-Engine
view release on metacpan or search on metacpan
lib/BPM/Engine/Store/Result/ActivityInstance.pm view on Meta::CPAN
is_nullable => 1,
serializer_class => 'JSON',
},
taskresult => {
data_type => 'TEXT',
is_nullable => 1,
serializer_class => 'JSON',
},
created => {
data_type => 'DATETIME',
is_nullable => 1,
set_on_create => 1,
timezone => 'UTC',
},
deferred => {
data_type => 'DATETIME',
is_nullable => 1,
timezone => 'UTC',
},
completed => {
data_type => 'DATETIME',
is_nullable => 1,
timezone => 'UTC',
},
);
__PACKAGE__->set_primary_key(qw/ token_id /);
__PACKAGE__->belongs_to(
process_instance => 'BPM::Engine::Store::Result::ProcessInstance',
'process_instance_id'
);
# state
__PACKAGE__->belongs_to(
activity => 'BPM::Engine::Store::Result::Activity', 'activity_id'
);
# the transition this instance is a result of
__PACKAGE__->belongs_to(
transition => 'BPM::Engine::Store::Result::Transition', 'transition_id'
);
# history, the instance this instance was derived from
__PACKAGE__->belongs_to(
prev => __PACKAGE__
);
__PACKAGE__->has_many(
next => __PACKAGE__, { 'foreign.prev' => 'self.token_id' }
);
__PACKAGE__->belongs_to(
parent => __PACKAGE__, { 'foreign.token_id' => 'self.parent_token_id' });
__PACKAGE__->has_many(
children => __PACKAGE__, { 'foreign.parent_token_id' => 'self.token_id' });
__PACKAGE__->has_many(
state_events => 'BPM::Engine::Store::Result::ActivityInstanceState',
{ 'foreign.token_id' => 'self.token_id' }, { cascade_delete => 1 }
);
__PACKAGE__->might_have(
'split' => 'BPM::Engine::Store::Result::ActivityInstanceSplit',
{ 'foreign.token_id' => 'self.token_id' }
);
__PACKAGE__->has_many(
attributes => 'BPM::Engine::Store::Result::ActivityInstanceAttribute',
{ 'foreign.activity_instance_id' => 'self.token_id' }
);
__PACKAGE__->has_many(
workitems => 'BPM::Engine::Store::Result::WorkItem',
{ 'foreign.token_id' => 'self.token_id' }
);
#__PACKAGE__->has_many(
# data_objects => 'BPM::Engine::Store::Result::DataObjectInstance',
# { 'foreign.token_id' => 'self.token_id' }
# );
sub insert {
my ($self, @args) = @_;
my $guard = $self->result_source->schema->txn_scope_guard;
$self->next::method(@args);
$self->discard_changes;
my $state = $self->create_related('state_events', {
state => $self->workflow->get_state($self->workflow->initial_state),
});
$self->update({ workflow_instance_id => $state->id });
$guard->commit;
return $self;
}
sub is_active {
my $self = shift;
return $self->completed || $self->deferred ? 0 : 1;
}
sub is_deferred {
my $self = shift;
return $self->deferred ? 1 : 0;
}
sub is_completed {
my $self = shift;
return $self->completed ? 1 : 0;
}
sub TO_JSON {
my ($self, $level) = @_;
my %struct = map { $_ => $self->$_ } grep { $self->$_ }
(qw/
( run in 1.440 second using v1.01-cache-2.11-cpan-39bf76dae61 )