ScenarioAssistant-Logo

Integration in bestehende Applikationen

Wie es der Name sagt, ist ScenarioAssistant Component eine Software-Komponente. Sie baut auf dem .NET-Framework auf und kann somit von beliebigen Applikationen genutzt werden, die ihrerseits Zugriff auf das .NET-Framework haben. Die .NET-Technologieplattform macht ScenarioAssistant zukunftssicher und kosteneffizient, denn das .NET-Framework ist anerkanntermaßen eines der modernsten EDV-Infrastrukturen, die ständig weiter entwickelt wird. Einer der wesentlichen Vorzüge von .NET-basierter Software ist ihre Schnittstellentransparenz.

Die Schnittstelle zwischen einer bestehenden Applikation und ScenarioAssistant ist ScenarioAssistant Component. Die bestehende Applikation wird im Folgenden Master-Applikation genannt.

Schnittstellentechnologie

Architektonisch gesehen ist ScenarioAssistant Component eine .NET-Assembly, die
  • von .NET-basierten Applikationen direkt
  • von allen anderen Windows-Applikationen über die COM-Technologie
angesteuert werden kann. Wenn die Ansteuerung über COM erfolgen soll (z.B. eine Kopplung an Excel), ist die Erstellung einer Wrapper-Klasse notwendig, die auf die Bedürfnisse der Master-Applikation zugeschnitten ist. Beispiele für diesen einfachen Vorgang stehen in der Installation zur Verfügung.

Datenaustausch

Das ScenarioAssistant-Datenmodell ist als .NET-Objektmodell in ScenarioAssistant Component realisiert. Alle zur Planung notwendigen Vorgabedaten (Kalender, Ressourcen, Projekte und Jobablaufkonfiguration) werden über dieses Objektmodell ausgetauscht. Analog erzeugt ScenarioAssistant Component nach einem Planungslauf ein separates Objektmodell für die Planergebnisdaten (Termine und Aufwände sowie deren zeitliche Verteilung). Die Ergebnisse können somit einfach und transparent in die Master-Applikation zurück transportiert werden. Die Menge der Vorgabedaten wird im Folgenden Vorgabekonfiguration genannt. Sämtliche Daten zusammen genommen, die das ScenarioAssistant-Datenmodell umfasst, werden Simulation genannt.

ScenarioAssistant Component garantiert (per Konstruktion) die Datenkonsistenz der Vorgabekonfiguration. Daher ist bei ihrem programmgesteuerten Aufbau der Daten eine Reihenfolge zu beachten, weil strukturelle Abhängigkeiten zwischen den Daten bestehen. Zum Beispiel hat jede Ressource einen Verweis auf einen Standortkalender, der zur Definition der täglichen Verfügbarkeit der Ressource benötigt wird. Folglich muss der Standortkalender im Objektmodell zuerst angelegt werden, so dass auf ihn bei der Erzeugung einer Ressource verwiesen werden kann. Beim Aufbau der Vorgabekonfiguration ist die folgende Reihenfolge einzuhalten:
  1. Standortkalender
    1. Basisdaten
    2. Tageseinträge des Kalenders
  2. Ressourcen
    1. Basisdaten für permanente Ressourcen; Erzeugungsreihenfolge: Top-Down
    2. Grundlast für permanente Ressourcen
    3. Ausweichkapazitäten für permanente Ressourcen
    4. Ressourcenkalender-Tageseinträge
    5. Basisdaten für temporäre Ressourcen; Erzeugungsreihenfolge: Top-Down
    6. Grundlast für temporäre Ressourcen
    7. Ausweichkapazitäten für temporäre Ressourcen
    8. Lieferkapazitäten für temporäre Ressourcen
  3. Projekte
    1. Basisdaten für Projekte
    2. Basisdaten für alle Netze des Projektes
    3. Basisdaten für alle Vorgänge des Projektes
    4. Ausführende Ressourcen der Produktionsvorgänge
  4. Vorgangsverknüpfungen zwischen den Vorgängen, netz-intern und -übergreifend
  5. Istdaten
    1. Vorgangsbezogene Istdaten
    2. Ressourcenbezogene Istdaten
  6. Jobablaufsteuerung für den Planungslauf
    1. Jobkarte für den Gesamtablauf
    2. Jobkarten für die Steuerung der Ressourcenplanung
    3. Jobkarten für die Steuerung der Terminplanung (Startwertermittlung)
    4. Jobkarten für die Steuerung der Freigabe
Bemerkungen
  1. Sowohl der permanente als auch der temporäre Ressourcenbaum müssen top-down, erzeugt werden, da jede Ressource einen Verweis auf ihre Verdichtungsressource trägt. Die Verdichtungsressource muss dementsprechend vorhanden sein, wenn ihre Kindressourcen erzeugt werden. Oftmals ist es am einfachsten, die Ressourcen ebenenweise zu erzeugen
  2. Die Projektstrukturbäume müssen analog zu den Ressourcenbäumen top-down erzeugt werden
  3. Vor Neuplanungen reicht es aus, die Vorgabekonfiguration zu modifizieren; es muss also nicht stets die gesamte Konfiguration neu erzeugt werden. Oftmals werden vor zyklisch wiederholten Planungsläufen nur die neu eingelaufenen Istdaten ergänzt, so dass die Planergebnisdaten auf der Basis des besten Wissensstandes generiert werden können
  4. Die Planergebnisdaten können in beliebiger Reihenfolge abgerufen werden

Datenzustände

Da sich der Planstand der Projekte und Ressourcen bis zum Abschluss sämtlicher Projekte der Simulation verändert, muss der Gesamtzustand der Simulation zwischen den sich zyklisch wiederholenden Planungsläufen gespeichert werden. Andernfalls stünde er nicht als Ausgangszustand für den nächsten Planungslauf zur Verfügung.

Wie im .NET-Framework üblich geschieht die Konservierung des Zustandes durch Serialisierung. Nach Aufruf einer Serialisierungs-Methode gibt ScenarioAssistant Component einen Stream zurück, der seinen aktuellen Datenzustand repräsentiert. Dieser kann in einer Datei oder Datenbank gespeichert werden. Zur Wiederherstellung wird der Stream nach dem Auslesen aus einer Datei oder Datenbank einfach einem ScenarioAssistant Component-Konstruktor übergeben. Dies wird Deserialisierung genannt. Je nach Datenmenge können die Serialisierung und die Deserialisierung zwischen Sekundenbruchteilen und mehreren Minuten beanspruchen.

Insbesondere können natürlich die einzelnen Gesamtzustände der Simulation aufbewahrt werden, um Zeitreihen zu bilden. Z.B. die Meilenstein-Trend-Analyse baut auf solchen fortgeschriebenen Planzuständen einzelner Projekte einer Simulation auf.

Ablauf

Eine Job-Session läuft synchron ab, d.h. der Ablauf der Master-Applikation wird unterbrochen, bis die Job-Session beendet ist.
Hinweis
ScenarioAssistant Component ist nicht thread-save. Das heißt, falls die Master-Applikation mehrere Threads zur Parallelisierung von Abläufen verwendet, muss die Master-Applikation selbst für die korrekte Koordination der Threads sorgen, um die Datenkonsistenz zu garantieren! Während eines Jobs dürfen weder die Daten der Vorgabekonfiguration noch evtl. bereits vorhandene Planergebnisdaten geändert werden.

Meldungen

Die während eines Jobs generierten Meldungen sind leicht über das ScenarioAssistant Component-Objektmodell abrufbar. Details können den Beispielen entnommen werden.