The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

DynGig::Automata::Sequence - Sequential automation framework.

SYNOPOSIS

 use DynGig::Automata::Sequence;

 $DynGig::Automata::Sequence::THREAD = $thread_count;  ## select thread mode

 my $sequence = DynGig::Automata::Sequence->new( 'blah' );

 $sequence->run  ## see DynGig::Util::Logger for parameter
 (
     log => '/home/bob/log/blah',
     time => 'local',
     context => \%context,
     thread => $thread_count,
 );

DESCRIPTION

Execution pauses when an error is encountered in any job. Execution resumes when all errors are removed from the alert database.

Execution pauses when pause is active. Execution resumes when pause is remove.

Execution terminates when stop is active.

CONFIGURATION FILE

A YAML file 'conf' is expected under the application root directory. It should load into a HASH with the following fields.

 KEY               TYPE             NOTE
 ===               ====             ====
 target            HASH
 queue             AoH
 begin             HASH             optional
 end               HASH             optional

Each sub-HASH represents a code/param HASH, where code is the path to the plugin subroutine, and param is a HASH for the parameter of code. ( see PLUGIN API )

PLUGIN API

Each plugin is a file that contains a subroutine. The path of the file corresponds to code in the configuration file. e.g.

 return sub
 {
     my %param = @_;
     my $logger = $param{logger};    ## CODE
     my $target = $param{target};
     my $context = $param{context};
     ## additional param are passed from the configuration file

     &$logger( "blah" );
     &$logger( "%s", 'blah' );
     ...
 };

MODE

In serial mode, target code must have an exhaustive batching behavior. e.g. n targets T1 .. Tn into k batches in k iterations of target code

  ITERATION        TARGET
  =========        ======
  1                T1, T2 .. Tm
  2                Tm+1 ..
  ...
  k                .. Tn-1, Tn
  k+1              undef

In serial mode, the target parameter for plugin is ARRAY. Whereas in thread mode, scalar.

ARTIFACT

The following directories or symlinks to which, if not already exist are created under the application root directory.

 DIRECTORY         NOTE
 =========         ====
 run               where alert database and symlink to log are kept
 param             where override parameter files are kept

The following files are created.

 FILE              NOTE
 ====              ====
 run/$name.alert   alert database
 run/$name.log     symlink to the log file

The following file is used to control execution

 FILE              NOTE
 ====              ====
 run/$name.pause   lock file for pause/stop

NOTE

See DynGig::Automata