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 )