Class::Workflow::State::AcceptHooks - Add hooks that are fired when the state


Class-Workflow documentation Contained in the Class-Workflow distribution.

Index


Code Index:

NAME

Top

Class::Workflow::State::AcceptHooks - Add hooks that are fired when the state accepts an instance.

SYNOPSIS

Top

	use Class::Workflow::State::AcceptHooks;

DESCRIPTION

Top

When an instance enters a state it is sometimes convenient to call hooks, for e.g. notification or logging purposes.

These hooks should not have any side effect that directly affects the workflow instance in any way - for that functionality you should use transitions.

Hooks' returns values are thus ignored.

METHODS

Top

add_hook
add_hooks

Add hooks. These should be sub references.

clear_hooks

Clear the list of hooks.

hooks

Get the list of registered hooks.

AUGMENTED METHODS

Top

accept_instance

This method has an after hook that calls the hooks in the order of their definition.


Class-Workflow documentation Contained in the Class-Workflow distribution.

#!/usr/bin/perl

package Class::Workflow::State::AcceptHooks;
use Moose::Role;

has hooks => (
	isa => "ArrayRef",
	is  => "rw",
	auto_deref => 1,
	default    => sub { [] },
);

sub clear_hooks {
	my $self = shift;
	$self->hooks( [] );
}

sub add_hook {
	my ( $self, $hook ) = @_;
	$self->add_hooks( $hook );
}

sub add_hooks {
	my ( $self, @hooks ) = @_;
	push @{ $self->hooks }, @hooks;
}

after accept_instance => sub {
	my ( $self, $instance, @args ) = @_;
	$_->( $instance, @args ) for $self->hooks;
};

__PACKAGE__;

__END__