The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Hyper::Control::Flow - base class for all flow and container controls

VERSION

This document describes Hyper::Control::Flow 1.1

SYNOPSIS

    package Hyper::Control::Flow::FSampleControl;

    use Class::Std::Storable;
    use base qw(Hyper::Control::Flow);

    1;

DESCRIPTION

This class allows you to create flow controls which are defined in your configuration. It checks conditions to walk different transitions and calls generated functions and functions which where implemented in the code you've written. There are also methods to get the current state recursivelay (including all embedded controls) and another method to restore an old state (this is needed for browser back and forward button).

ATTRIBUTES

identifier
state
config

SUBROUTINES/METHODS

START

    my $object = Hyper::Control::Flow::FSampleControl->new();

Initialize Hyper::Identifier for persistance of ids. Calls _get_config and stores the config into the config attribute. If we have no state we set current state to START.

_get_config :RESTRICTED

Get config for instance of this control.

get_object

    my $embedded_control = $self->get_object('cSelectPerson');

Get an embedded control. Control Object is created if it wasn't existant since yet. Control class is read from config object. This method will also initialize and append validators which are configured for a control.

work

    $object->work();

Start workflow of flow control.

Generated Code comes from your step config. Call generated actions, call your action methods if it they where implemented and check for transitions. If the condition of a transition is true the internal state of Hyper::Control::Flow is updated the state is updated and method work is called again.

Workflow description of the work method:

$self->_action_of_step()
$self->ACTION_of_step()
$embedded_control->work()
check transitions
if current transition condition is valid

update internal state and call work again

if no transitions left

return

get_state

    my $state = $object->get_state();

Get the current state of an object.

set_state

    $object->set_state('step name');

Set state of the control. Valid states are the names of your steps defined in your config.

get_state_recursive

    my $viewstate = $object->get_state_recursive();

Get the state of this and all embedded controls.

Return structure: [ 'state_of_this_control', { name_of_embedded_1 => [...] }, { name_of_embedded_2 => [...] }, ]

restore_state_recursive

    $object->restore_state_recursive($viewstate);

Restore state of this and all embedded controls eg. after GET or POST. Use the return value from get_state_recursive to restore a state.

_check_transitions :PROTECTED

    my $destination_state = $self->_check_transitions();

This method is used to check if a valid transition can be found.

is_valid

    my $all_embedded_controls_are_valid = $object->is_valid();

Check if all embedded controls are valid and return a boolean value. This method performs the group validation only if all single validators are valid.

STORABLE_thaw_post :CUMULATIVE

This method is called automatically. It deletes the state object attribute.

DIAGNOSTICS

CONFIGURATION AND ENVIRONMENT

DEPENDENCIES

  • version

  • Hyper::Control

  • Class::Std::Storable

  • Hyper::Error

  • Hyper::Config::Reader::Flow

  • Hyper::Identifier

  • Hyper::Functions

  • Hyper::Singleton::Debug

  • Hyper::Singleton::Context

  • List::MoreUtils

INCOMPATIBILITIES

BUGS AND LIMITATIONS

RCS INFORMATIONS

Last changed by

$Author: ac0v $

Id

$Id: Flow.pm 318 2008-02-16 01:57:57Z ac0v $

Revision

$Revision: 318 $

Date

$Date: 2008-02-16 02:57:57 +0100 (Sa, 16 Feb 2008) $

HeadURL

$HeadURL: http://svn.hyper-framework.org/Hyper/Hyper/tags/0.05/lib/Hyper/Control/Flow.pm $

AUTHOR

Andreas Specht <ACID@cpan.org>

LICENSE AND COPYRIGHT

Copyright (c) 2007, Andreas Specht <ACID@cpan.org>. All rights reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.