NAME

Quiq::Schedule - Matrix von zeitlichen Vorgängen

BASE CLASS

Quiq::Hash

DESCRIPTION

Ordne eine Menge von zeitlichen Vorgängen (z.B. gelaufene Prozesse) in einer Reihe von Zeitschienen (Matrix) an. Finden Vorgänge parallel statt (also zeitlich überlappend), hat die Matrix mehr als eine Zeitschiene.

METHODS

Klassenmethoden

new() - Konstruktor

Synopsis

$mtx = $class->new(\@objects,$sub);

Arguments

@objects

Liste von Objekten, die einen Anfangs- und einen End-Zeitpunkt besitzen.

$sub

Subroutine, die den Anfangs- und den Ende-Zeitpunkt des Objektes in Unix-Epoch liefert. Signatur:

sub {
    my $obj = shift;

    my $epoch1 = ...;
    my $epoch2 = ...;

    return ($epoch1,$epoch2);
}

Returns

Matrix-Objekt

Description

Instantiiere ein Matrix-Objekt für die Vorgänge @objects und liefere eine Referenz auf dieses Objekt zurück.

Algorithmus

  1. Wir beginnen mit einer leeren Liste von Zeitschienen.

  2. Die Objekte @objects werden nach Anfangszeitpunkt aufsteigend sortiert.

  3. Es wird über die Objekte iteriert. Das aktuelle Objekt wird zu der ersten Zeitschiene hinzugefügt, die frei ist. Eine Zeitschiene ist frei, wenn sie leer ist oder der Ende-Zeitpunkt des letzten Elements vor dem Anfangs-Zeitpunkt des aktuellen Objekts liegt.

Objektmethoden

entries() - Einträge der Prozess-Matrix

Synopsis

@entries | $entryA = $mtx->entries;
@entries | $entryA = $mtx->entries($i);

Returns

Liste von Prozess-Matrix-Einträgen (Array of Quiq::Hash). Im Skalarkontext eine Referenz auf die Liste.

Description

Liefere die Liste der Einträge in der Prozess-Matrix. Ist $i angegeben, nur die Einträge der Zeitleiste $i. Ein Eintrag ist ein Quiq:Hash-Objekt mit den Attributen:

timeline

Index der Zeitleiste.

begin

Anfangszeitpunkt in Unix Epoch.

end

Ende-Zeitpunkt in Unix Epoch.

object

Referenz auf das ursprüngliche Objekt.

maxLength() - Maximale Anzahl Einträge in einer Zeitleiste

Synopsis

$n = $mtx->maxLength;

Returns

Integer

Description

Liefere die maximale Anzahl an Einträgen in einer Zeitschiene.

minTime() - Frühester Anfangs-Zeitpunkt

Synopsis

$epoch = $mtx->minTime;

Returns

Float

Description

Liefere den frühesten Anfangs-Zeitpunkt über allen Objekten.

maxTime() - Spätester Ende-Zeitpunkt

Synopsis

$epoch = $mtx->maxTime;

Returns

Float

Description

Liefere den spätesten Ende-Zeitpunkt über allen Objekten.

width() - Breite der Matrix

Synopsis

$width = $mtx->width;

Returns

Integer

Description

Liefere die Anzahl der Kolumnen der Matrix.

VERSION

1.205

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2022 Frank Seitz

LICENSE

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