NAME

Algorithm::DependencySolver::Operation - An operation representation

SYNOPSIS

my $operation = Algorithm::DependencySolver::Operation->new(
  id            => 2,
  depends       => [qw(x)],
  affects       => [qw(y)],
  prerequisites => [1],
  obj           => $whatever
);

OPTIONAL ATTRIBUTES

obj

An arbitrary object, which is never used by anything in the Algorithm::DependencySolver::* namespace.

prerequisites

An arrayref of other Operation objects, identified by their id strings.

If an operation $b depends on operation <C$a>, then any cycle which would have resulted in $b running before $a will be broken just before operation $a.

That is, if there exists a cycle containing both $a and $b, then edge $e will be removed, where $e is any edge within the cycle which points directly to $a.

id

A string which uniquely identifies this operation

depends

An arrayref of resources (each resource is simply a string identifier) that this operation depends on.

affects

An arrayref of resources (each resource is simply a string identifier) that this operation affects (i.e., modifies).