2. 1. 9   Job

SYNTAX

Der Tcl-Befehl jobCmd erlaubt Operationen mit einem Job-Objekt. Er hat die allgemeine Form:

    jobCmd option ?arg arg ...?

option und  args bestimmen das exakte Verhalten des Befehls. Über die allgemeinen Objektbefehle hinaus sind folgende Befehle für Job-Objekte definiert:

OBJEKTPARAMETER

jobCmd date string ?time?
Abfrage oder Modifikation von jobbezogenen Datumsangaben. Der Parameter string bestimmt die jeweilige Art des Datums:   
  • esd - 

  • Frühester Bereitstellungstermin (earliest supply date). Beim Erreichen dieses Zeitpunkts wird ein Bereitstellungsereignis erzeugt und der enter-Termin des Jobs gesetzt. Sollte die Bereitstellung des Jobs nicht möglich sein, erfolgt sie zum nächstmöglichen Termin. Voreinstellung ist 0.
    Die folgenden Werte dienen lediglich zur Kontrolle der Termineinhaltung und wirken sich nur mittelbar auf den Ablauf der Simulation aus.
  • edd - 
  • Frühester Fertigstellungstermin (earliest due date). Voreinstellung ist 0.
  • ldd - 
  • Spätester Fertigstellungstermin (latest due date). Voreinstellung ist Inf.
    Die folgenden Werte sollten nicht manuell verändert werden:
  • enter - 
  • Systemeintrittszeitpunkt - Zeitpunkt der Bereitstellung des Jobs. Voreinstellung ist 0.
  • fbusy - 
  • Bearbeitungsbeginn - Zeitpunkt, zu dem der Job erstmalig in den Zustand busy wechselte. Voreinstellung ist Inf.
  • lbusy - 
  • Bearbeitungsende - Zeitpunkt, zu dem der Job letztmalig in den Zustand ready wechselte. Dieser Wert wird immer dann, wenn der Job in den Zustand busy wechselt, auf Inf gesetzt. Voreinstellung ist inf.
  • leave - 
  • Systemaustritt - Zeitpunkt, zu dem der Job in seinem letzten Arbeitsgang in den Zustand ready wechselte. Voreinstellung ist Inf.
    Es gilt immer: enter <= fbusy <= lbusy <= leave. Es ist nicht möglich, einem dieser Parameter einen Wert zuzuweisen, der kleiner als der Wert seines linken Nachbarn ist. Wird einem dieser Parameter ein Wert zugewiesen, der größer als der Wert des rechten Nachbarn ist, werden die Werte aller rechten Nachbarn auf Inf gesetzt.
     
    jobCmd state option
    Abfrage eines singulären Jobzustandes. Der Rückgabewert entspricht der Anzahl der Stationen, in denen der Einzelzustand wahr ist, wenn es sich um einen Bearbeitungszustand handelt. Der Parameter option bestimmt die jeweilige Zustandsvariable: 
  • ready - 
  • Anzahl der Stationen, in denen die Bearbeitung des Jobs abgeschlossen ist.
  • setup - 
  • Anzahl der Stationen, in denen der Jobs gerüstet (bearbeitet) wird.
  • busy - 
  • Anzahl der Stationen, in denen der Jobs bearbeitet wird. (Eine Unterscheidung von setup und busy erfolgt nur aus statistischen Gründen.)
  • down - 
  • Anzahl der Stationen, die für den Job ausgefallen oder ausgeschaltet sind.
  • enter - 
  • Der Job ist bereitgestellt bei 1. Nicht bereitgestellte Jobs belegen keinen Platz. Voreinstellung ist 1.
  • leave - 
  • Der Job ist endgültig fertiggestellt bei 1. Es folgt kein weiterer Arbeitsgang mehr. Im Unterschied zu nicht bereitgestellten Jobs wird Platz in der Station belegt. Voreinstellung ist 0.
  • station - 
  • Anzahl der Stationen, in der sich der Job befindet. Voreinstellung ist 0.
  • sample - 
  • Anzahl der Quellen, in der sich der Job als Musterjob befindet. Voreinstellung ist 0.
     
    jobCmd state
    Gibt den aus state enter, state leave, der Bearbeitung in den einzelnen Stationen und der Verfügbarkeit der einzelnen Stationen, in denen der Job platziert ist, abgeleiteten Zustand des Jobs zurück (siehe auch stationCmd job index state). Die Einzelzustände unterliegen einer Priorität, die bei der Zusammenfassung angewandt wird: busy, setup, ready, off, down
  • {} - 
  • Der Job befindet sich außerhalb der Systemgrenzen (nicht bereitgestellt, letzter Arbeitsgang abgeschlossen, keine Station).
  • busy - 
  • Der Job wird wenigstens in einem Arbeitsgang bearbeitet (aktiv). 
  • setup - 
  • Der Job wird wenigstens in einem Arbeitsgang gerüstet (aktiv), jedoch nicht bearbeitet (busy). 
  • ready - 
  • Der Job ist wenigstens in einem Arbeitsgang fertig bearbeitet (passiv), jedoch weder bearbeitet (busy) noch gerüstet (setup). 
  • down - 
  • Wenigstens eine Station eines Hauptarbeitsgangs des Jobs ist ausgefallen oder ausgeschaltet, der Job wird jedoch weder in einem anderen Hauptarbeitsgang bearbeitet (busy) noch gerüstet (setup) noch ist die Bearbeitung fertig (ready). 
     
    jobCmd spec  ?string?
    Abfrage oder Setzen des aktuellen Spezifikators eines Jobs. Voreinstellung ist 0. Beim Platzieren eines Jobs in einem Arbeitsgang werden die Technologieparameter wirksam, deren Technologiespezifikator zum Spezifikator des Jobs passen. Ist der entsprechende Spezifikator in der Technologie nicht vorhanden, wird der Standard-Spezifikator der Technologie angewendet (immer der erste Spezifikator, specindex = 1).

    jobCmd size ?double?
    Abfrage oder Modifikation der Größe des Jobs. Die resultierende Größe ist die Verknüpfung der Job- und der jeweiligen Arbeitsganggröße. Ist die Arbeitsgangsgröße job eingestellt, gilt die Größe des Jobs, sonst die des Arbeitsgangs. Im Gegensatz zum quantity-Parameter hat der size-Parameter keine Auswirkungen auf die Bearbeitungszeit. Voreinstellung ist 1.
     
    jobCmd quantity ?double?
    Abfrage oder Modifikation der Menge. Die resultierende Menge ist die Verknüpfung der Job- und der jeweiligen Arbeitsgangmenge. Ist die Arbeitsgangsmenge job eingestellt, gilt die Menge des Jobs, sonst die des Arbeitsgangs. Die resultierende Bearbeitungszeit des Jobs ist das Produkt aus resultierender Menge und der im Arbeitsgang angegebenen Bearbeitungszeit, wenn der Arbeitsgang als mengenabhängig deklariert ist. Im Gegensatz zum size-Parameter hat der quantity-Parameter keine Auswirkungen auf den Raumbedarf. Voreinstellung ist 1.
     
    jobCmd priority ?integer?
    Abfrage oder Modifikation der Jobpriorität   pJob. Die resultierende Priorität ist die Verknüpfung der Job- und der jeweiligen Arbeitsgangpriorität. Ist die Arbeitsgangspriorität job eingestellt, gilt die Priorität des Jobs, sonst die des Arbeitsgangs. Voreinstellung ist 0.
     
    jobCmd enable ?boolean?
    Abfrage oder Modifikation der Aktivität. Inaktive (0) Jobs werden vom Scheduler nicht berücksichtigt. Befindet sich ein inaktiver Job in einer Station (z.B. Maschine oder Warteschlange), so wird er nicht bewegt, belastet aber weiter deren Kapazität. Der resultierende Wert für die Aktivität wird aus der UND-Verknüpfung der Jobaktivität und der jeweiligen Arbeitsgangaktivität gebildet. Voreinstellung ist 1.
     
    jobCmd children ?length?

    Abfrage der Kinderjobs bzw. deren Anzahl, die aus einem Split des Auftrags hervorgegangen sind. Wurde jobCmd nicht gesplittet, dann ist der Rückgabewert leer.

    jobCmd parent ?alive?

    Abfrage des Elternjobs, aus dem der Job bei einem Split des Auftrags hervorgegangen ist. Ist jobCmd kein Kindjob, dann ist der Rückgabewert leer. Bei Angabe der Option alive kann abgefragt werden, ob der Kindjob jobCmd noch aktiv ist (Rückgabewert 1), oder durch ein Merge wieder in den Elternjob überführt wurde (Rückgabewert 0).   

    jobCmd ctime length
    Abfrage der Anzahl der in der Statistik geführten Zeitintervalle des Jobs. Durch die weiteren Formen des Befehls werden die Werte aus den Intervallen abgefragt und modifiziert.
     
    jobCmd ctime clear
    Löschen der geführten Statistik des Jobs (alle Werte, die zu date und ctime gehören).
     
    jobCmd ctime index date ?value?
    Abfrage oder Modifikation des Datums des Beginns des erfassten Zeitintervalls. Dieses sollte nicht manuell verändert werden. Für index können Werte von 1 ... ctime length angegeben werden. Wann ein neues Intervall angelegt wird, wird durch den Taktgenerator festgelegt.

    jobCmd ctime index id state

    Abfrage aller eingenommenen Teilzustände im angegebenen Zeitintervall. Für index kann auch all angegeben werden, um alle eingenommenen Teilzustände abzufragen.
    state
  • on - 
  • Job befindet sich in einer verfügbaren Station mit den zugehörigen Teilzuständen 
  • down - 
  • Job befindet sich in einer nicht verfügbaren Station mit den zugehörigen Teilzuständen
    Die Zustände on und down sind zueinander disjunkt.
     
    jobCmd ctime index stype state ?substate? ?integer??
    Abfrage oder Modifikation der kumulierten Zeiten in dem durch index bezeichneten Zeitintervall. Diese Werte sollten nicht manuell verändert werden. Für index können Werte von 1 ... ctime length oder all (nur bei der Abfrage der Summe über alle Intervalle) angegeben werden. Das Ergebnis ist die gesamte Zeitdauer innerhalb des Intervalls, während der sowohl die durch den Parameter stype (in welchem Stationstyp) als auch die durch den Parameter state (welcher Zustand) definierten Bedingungen (UND-Verknüpfung) erfüllt sind. 
    stype
  • machine - 
  • Job befindet sich in Maschinen
  • queue - 
  • Job befindet sich in Warteschlangen
  • all - 
  • Job befindet sich entweder in Maschinen oder Warteschlangen (nur Abfrage)
    = expr [jobX ctime index machine state] + [jobX ctime index queue state]
    state  ohne Angabe von substate, die Gesamtdauer der eingenommenen Teilzustände
  • on -
  • Job befindet sich in einer verfügbaren Station mit den zugehörigen Teilzuständen
  • down - 
  • Job befindet sich in einer nicht verfügbaren Station mit den zugehörigen Teilzustände
  • all- 
  • Summe von on und down
    substate
    Standardzustände: ready, setup, busy, drüber hinaus alle selbst definierten Teilzuständ
  • busy - 
  • Bearbeitungsdauer in dem durch stype angegebenen Stationstyp
  • setup - 
  • Rüstdauer in dem durch stype angegebenen Stationstyp
  • ready - 
  • Lagerdauer in dem durch stype angegebenen Stationstyp
  • ... - 
  • selbst definierte Teilzustände
    Die Zustände on und down sowie die untergeordneten Teilzustände busy, setup, ready, ... sind zueinander disjunkt.
     
    OBJEKTVERKNÜPFUNGEN
     
    Jobs können mit Stationen (Maschinen und Warteschlangen) als Platzierung (zur Bearbeitung oder Lagerung) oder als Musterjob verknüpft werden. Die Verknüpfung erfolgt über die Job-Befehle place (Platzierung) und sample (Musterjob). Zu Beginn sind alle Vernüpfungen leer ({}).
     
    jobCmd station length
    Länge der Stationsliste des Jobs (identisch zu jobCmd state station)
     
    jobCmd check|place|enter ?options?
    Test (check) oder Platzierung (enter|place) des Jobs. Ist der Arbeitsgang der Platzierung eine Verzweigung oder Technologie, so erfolgt die Verteilung auf die entsprechenden Zweige automatisch bei enter; bei place wird der Job unabhängig vom Parallelitätsgrad und Typ stets im ersten Zweig der Verzweigung bzw. im ersten Arbeitsgang der Technologie platziert. Der reguläre Transfer eines Jobs in einen Arbeitsgang ist nur unter bestimmten Bedingungen möglich (check). Das Kommando enter kann nur ausgeführt werden, wenn der reguläre Transfer erlaubt (able) ist. Dann werden auch alle Arbeitsgangparameter so eingestellt, wie es im Arbeitsgang angegeben ist, so als hätte der Scheduler den Transfer ausgeführt. Der Job wird in der Station so eingeordnet, wie es seine Arbeitsgangparameter in Kombination mit der Einlagerungsstrategie der Station erfordern. Das Platzieren kann auch unter Umgehung bestimmter Bedingungen (z.B. Station aus, Job inaktiv, ...) ausgeführt werden. Dazu muss der Befehl place verwendet werden. Die Arbeitsgangparameter werden dabei nicht übernommen und müssen manuell eingestellt werden. Der Job wird immer am Ende der aktuellen Jobliste in der Station eingeordnet. Bei check wird getestet, ob der Job so wie im Arbeitsgang angegeben platziert werden könnte. Wenn ja, wird able zurückgegeben. Anderenfalls wird der Hinderungsgrund zurückgegeben (z.B. space - die aufnehmende Station hat nicht genügend Platz zur Verfügung).
    options:
    -index integer

    Jede Verknüpfung eines Jobs mit einer Station wird in der Stationsliste des Jobs erfasst. Die Reihenfolge der Verknüpfungen innerhalb der Liste ist dabei von ablaufrelevanter Bedeutung (zuerst betretene Stationen stehen am Anfang der Liste) und kann durch Angabe von -index gesteuert werden. Die erzeugte Verknüpfung von Job und Station reiht sich in der Stationsliste des Jobs an die index-te Position.
    -station  {stationCmd1 stationCmd2 ...}

    Der Job wird standardmäßig in den Stationen platziert, die durch den Stack referenziert ist. Abweichend davon kann der Job auch in anderen Stationen durch Verwendung der Option -station platziert werden und sich dennoch im angegebenen Stack befinden. Wird auf diese Weise ein Job auf mehreren Stionen platziert, so werden diese vom Scheduler als Parallelbelegungen erkannt.
    -stack stackCmd

    Die Platzierung erfolgt im angegebenen Stack stackCmd.
     
    jobCmd unplace
    Entfernt den Job aus ALLEN Stationen.
     
    jobCmd station ?index1? ?index2?
    Gibt einen Teil der in der Stationsliste des Jobs enthaltenen Stationen als geordnete Liste zurück. Die Verknüpfung selbst wird über jobCmd place hergestellt. Beginn und Ende der auszugebenden Liste werden durch die Parameter index1 und index2 bestimmt. Wird index2 nicht angegeben, wird nur die index1te Station ausgegeben. Fehlen beide Indizes, wird die gesamte Liste ausgegeben. Eine Fehlermeldung wird erzeugt bei ungültiger Angabe der Indizes.
     
    jobCmd station index option ?suboption? ?value?
    Abfrage oder Setzen von Eigenschaften der Verknüpfung des Jobs mit der index-ten Station. Die Eigenschaften können aus Sicht des Jobs über die Stationsliste angesprochen werden, ebenso aus Sicht der Station über die Jobliste (siehe stationCmd job). Die dort angegebenen Optionen option sind ebenso gültig. Die aufgelistete Option index liefert hier jedoch den Index der Verknüpfung von Job und Station in der Jobliste der Station.
     
    jobCmd sample length
    Länge der Quellenliste des Musterjobs (Anzahl der Quellen, in denen der Job als Musterjob dient, identisch zu jobCmd state sample).
     
    jobCmd sample ?index1? ?index2?
    Gibt einen Teil der Quellen, in denen der Job als Musterjob dient, als geordnete Liste zurück. Die Verknüpfung selbst wird über jobCmd sample append jobCmd bzw. jobCmd sample insert index jobCmd hergestellt. Beginn und Ende der auszugebenden Liste werden durch die Parameter index1 und index2 bestimmt. Wird index2 nicht angegeben, wird nur die index1-te Station ausgegeben. Fehlen beide Indices, werden alle Stationen ausgegeben. Eine Fehlermeldung wird erzeugt bei ungültiger Angabe der Indices. (zulässiger Wertebereich für index1 und index2: 1 ... length)
     
    jobCmd sample index option ?value?
    Abfrage oder Setzen von Eigenschaften der Verknüpfung der index-ten (= 1, 2, ...,length) Quelle eines Musterjobs (Der Job kann in mehreren Quellen als Musterjob dienen). Die Verknüpfungseigenschaften können auch aus Sicht der Quell über deren Musterjobliste angesprochen werden (siehe srcCmd sample index option). Unter Angabe von option und value können die folgenden Parameter abgefragt oder gesetzt werden:
  • src - 
  • Abfrage der Quelle. Unter Angabe von value kann eine andere Quelle referenziert werden.
  • distrib - 
  • Abfrage des mit dem Musterjob referenzierten Stochastik-Objektes. Unter Angabe von value kann ein anderes Stochastik-Objekt vom Musterjob benutzt werden.
  • tech - 
  • Abfrage des mit dem Musterjob referenzierten Technologie-Objektes. Unter Angabe von value kann ein anderes Technologie-Objekt vom Musterjob benutzt werden.
  • pass - 
  • Abfrage des mit dem Musterjob referenzierten Arbeitsganges. Unter Angabe von value kann ein anderer Arbeitsgang vom Musterjob benutzt werden.
  • stack - 
  • Abfrage des mit dem Musterjob referenzierten Stacks. Unter Angabe von value kann ein anderer Stack vom Musterjob benutzt werden.
  • create - 
  • Abfrage der Anzahl der zu erzeugenden Jobs dieses Musters. Unter Angabe von value kann der Wert gesetzt werden (Voreinstellung ist Inf).
  • rest - 
  • Abfrage der Sekunden bis zur nächste Erzeugung eines Jobs dieses Musters. Unter Angabe von value kann diese Zeit gesetzt werden (Voreinstellung ist 0).
  • count - 
  • Der nächste zu erzeugende Job dieses Musters erhält als Name den Integer-Wert count. Bei jeder Erzeugung wird count um 1 inkrementiert. Unter Angabe von value kann der Wert für count gesetzt werden.
  • remove - 
  • Löscht die betreffende Quelle aus der Liste der Quellen. Die Angabe eines Wertes value ist für diesen Fall nicht vorgesehen.
     
    ZUSÄTZLICHE TYPBEFEHLE
     
    Für den Typbefehl job können zusätzlich nachfolgend aufgeführte Optionen genutzt werden:
     
    job place ?integer?
    Gibt eine Liste aller Jobs zurück, die in genau integer Stationen platziert sind. Entfällt der Parameter integer (oder ist er negativ), werden alle Jobs gelistet, die in wenigstens einer Station platziert sind.