ixCMF im Umfeld einer Simulation von Supply Netzwerken II

In einem früheren Beitrag hatten wir über den anstehenden Einsatz von PHP5 sowie ixCMF in einer "Supply Chain"- oder besser "Supply Netzwerk"-Simulation berichtet. Siehe:

ixCMF im Umfeld einer Simulation von Supply Netzwerken I

In der letzten Woche hatten wir eine interessante Testrunde mit unserem Auftraggeber für das Core-Programm der beauftragten "Supply Netzwerk Simulation". Als Testaufgabe wurde gestellt, für ein Netzwerk mit folgenden charakteristischen Merkmalen eine zeitabhängige Propagationsrechnung durchzuführen:

  • 60 Zeitschritte,
  • ca. 2 * 65 Haupt-Knoten,
  • ca. 2 * 250 unterschiedliche logische Pfadsegmente zwischen den Haupt-Knoten,
  • ca. 19000 individuelle logische Pfade durch das Netz,
  • logische Tiefe der Knotenstruktur > 9,
  • 3 zu propagierende Größen,
  • ca. 80 Zeitschritte

Auf einem Laptop mit Opensuse 12.3, Apache2 mit PHP 5.4, MariaDB und einer Hardware mit I7 3632 Quad Mobile Prozessor, 16 GB RAM und einer schnellen SSD haben wir

  • die logische Struktur-Analyse des Netzwerks samt einer Analyse aller möglichen Pfade in 15 Sekunden
  • und den eigentlichen Simulationslauf auf dem 3-dimensionalen Netz-Zeit-Gitter in unter 3 Sekunden

fehlerfrei bewältigt.

Dabei wurden im Schnitt nur zwei Prozessorcores belastet. Der Speicherbedarf des PHP-Programms betrug ca. 60 MB. Bzgl. der Datenbanktransaktionen, die zur Abspeicherung der berechneten Daten erforderlich sind, konnten wir zeigen, dass die SSD auf einem Laptop bereits eine Peak-Performance im Bereich von mehreren Tausend (einfachen) Transaktionen per Sek. ermöglicht. Auf einer anderen über den zugehörigen Linux Host gut gepufferten virtuellen LAMP-Maschine mit nur einem einzigen CPU Core (Quad 9950 auf dem Host / Raid-System mit virtio-Zugriff der KVM-Guests) haben wir entsprechend ebenfalls Insert-Raten im Bereich von über 20K Inserts pro Sekunde bei kleinen Datengrößen pro Record gemessen.

supp_chain_2_600

Dies alles hat uns und unserem Auftraggeber gezeigt, dass wir auf dem richtigen Weg sind. Bereits ein nur ansatzweise optimiertes PHP-Programm bietet auf aktueller Hardware genügend Perfomance-Reserven nicht nur für einzelne sondern ganze Ketten von vielen sukzessiven Simulationsläufen. Zwischenzeitliche Kritik, das ganze System sei allein aus Performance-Gründen in Java zu entwickeln, konnten wir dadurch weitgehend entkräften. Die eigentlich zu stellende Frage wäre aus unserer Sicht zudem eher die gewesen, ob man bestimmte Komponenten des Core-Systems nicht besser hätte in C (mit embedded SQL) darstellen sollen.

Nächste Schritte bestehen nun in einer Erweiterung der im Simulationslauf zu lösenden Aufgaben und einer Erweiterung des Transportes der zu verfolgenden Größen. Für das zu entwickelnde User-Interface zur Kontrolle einer Sequenz von Simulationsläufen wird ixCMF in wachsendem Umfang zum Einsatz kommen.

ixCMF im Umfeld einer Simulation von Supply Netzwerken I

Im Auftrag eines Supply Chain Beraters entwickelt die Fa. anracon zur Zeit Prototypen zur Durchführung von logischen und statistischen Analysen von Supply Netzwerken und zur zeitabhängigen Simulation solcher Netze.

Komplexe Netzwerke in mehreren Dimensionen

"Supply Chain"-Prozesse entfalten sich heute weniger als einzelne lineare Ketten, sondern als Prozesse in komplexen Netzwerke aus verzahnten Pfadsegmenten und verarbeitenden Einheiten für die Transformation von Zwischenprodukten. Dabei spielen die Zeitabhängigkeit der Erzeugung von Zwischen- und Endprodukten sowie die Zeitabhängigkeit des zugehörigen Transportes eine entscheidende Rolle.

Die Rückberechnung von Konsequenzen aus Kunden-Anforderungen auf die zeitgerechte Produktion im Supply Netzwerk erfordert zeitabhängige Simulationen von Netzen, die nur im Ein- und Ausgangsbereich baumartigen Strukturen ähneln. Im Hauptbereich entsprechen moderne Supply Netze vielmehr voll entwickelten Netzwerken mit Knoten, die auf vielfältige Weise miteinander verbundenen sein können.

Rückkopplungen erzeugter Zwischen-Produkte in bestimmte verarbeitende Knoten verkomplizieren die logische Struktur und heben "natürlich" erscheinende geometrische Knotenanordnungen, die sich auf die produzierenden Einheiten beziehen, hinsichtlich einer strukturellen, logischen Ordnung materialabhängiger Pfade auf. Den gleichen Effekt haben produktabhängige Zeitverschiebungen. Die logische Abfolgestruktur entspricht nicht mehr der physikalischen Knotenanordnung von Produktionseinheiten sondern tiefer liegenden Ordnungsstrukturen, deren Knoten Punkte einer komplexen, hoch entwickelten mehrdimensionalen Netzstruktur sind.

Entwicklung des Core-Algorithmus

Dr. Ralph Mönchmeyer ist z.Z. maßgeblich an der Entwicklung eines Core-Algorithmus zur logischen Analyse solcher Netzwerke, zur Simulation dynamischer Gleichgewichte zu vorgegebenen Produktionsniveaus und zur Simulation der Auswirkungen zeitlich veränderlicher Kundenanforderungen auf das Netz beteiligt. Das gesamte System wird zwar datenbankgestützt laufen; wesentliche Operationen werden jedoch auf komplexen Array-Strukturen im Speicher erfolgen. Hier kommt einerseits die Erfahrung von Dr. Mönchmeyer im Umgang mit komplexen numerischen Simulationen physikalischer Systeme als auch die Erfahrung mit weborientierten Spachen wie PHP zum Tragen.

Einsatz von PHP und ixCMF

Ungewöhnlich ist in diesem Zusammenhang der Einsatz von PHP 5. Sieht man als Ziel aber eine Software, die im Web später ggf. als SaaS angeboten werden soll, so bekommt diese Anforderung Sinn. Ferner spielen die guten Möglichkeiten von PHP zur Anbindung an Datenbanken, zur Darstellung von Webservices sowie zur Erzeugung von Grafiken eine Rolle.

Da PHP eine rel. "langsame" Sprache ist, ist auf Programmoptimierung und Performance großen Wert zu legen: Einfache realistische Netze enthalten bereits mehrere zehn-tausend unterschiedlicher Pfade zwischen Ausgangs- und Eingangsknoten. Erste Simulationsrechnungen zeigen, dass die erforderlichen Zeiten zur Analyse und Simulation auch ohne künstliches Threading und Parallelisierung auf Webservern bereits im gewünschten Zielkorridor liegen.

Was hat das Ganze mit ixCMF zu tun?

Bzgl. der Kernalgorithmen fast nichts. ixCMF hilft jedoch bereits jetzt bei der strukturierten Verwaltung von Parameter- und Strukturtabellen und der webbasierten Darstellung von Ergebnistabellen. Ferner wird die Veränderung von Schlüsselwerten für Vergleichssimulationen erleichtert.

In späteren Ausbaustadien wird ixCMF jedoch eine Rolle bei der Erzeugung kundenspezifischer Webseiten und des Aufbaus eines generellen User-Interfaces zur Steuerung von Simulationsläufen spielen.

Unabhängig davon freuen wir uns, dass ixCMF schon heute die Handhabung der komplexen Tabellen, in denen die Struktur und Parameter des Supply Netzes erfasst werden, unterstützen kann.

Erneuerung der Applikation „Stellenanzeigen“

Seit der Version 1.0 des ixCMF-Frameworks gibt es eine Applikation, mit der mittelständische Unternehmen auf einfache Weise Stellenanzeigen in ihre Website integrieren können. Diese Applikation wird z.Z. für einen Kunden erneuert und an das aktuelle Framework 4.0 angepasst. Dabei wird u.a. dafür gesorgt, dass die Stellen Niederlassungen (in anderen Orten) zugeordnet werden können. In der Web-Anzeige wird ein entsprechender Filter nach der Niederlassung angeboten.

Kennzeichen der bisherigen Applikation

Die Applikation erlaubt das Erfassen bestimmter charakteristischer Felder zur Beschreibung der Stelle wie etwa :

Berufsgruppe, erforderliche Qualifikation, ab wann, zeitl. Umfang, Beschreibung, Ansprechpartner ... etc...

Zu den erfassten Inhalten verschiedener Stellenangebote werden folgende Arten von Web-Seiten generiert:

  • eine listenartige Übersicht zu allen angebotenen Stellen
  • eine Einzelseite zur Darstellung einer aus der Liste ausgewählten Position
  • eine generierte und ausdruckbare PDF-Datei mit allen erforderlichen Informationen

Die Erfassungsmasken entsprechen dabei den Masken des ixCMF des FW 1.0. Die Stellenapplikation kann an das ixCMF-User- und Rechte-System angebunden werden.

Bislang konnten nur Stellen-Anzeigen für genau zwei unterschiedliche Niederlassungen erfasst werden.

Kennzeichen der überarbeiteten Applikation

Die Überarbeitung erfolgt in folgenden größeren Schritten:

Zwischenlösung (bis ca. 20.08.)

  • Nutzung der Pflege-Masken (Stretch-Layout), Funktionalitäten und Webseitengeneratoren des FW 4.0
  • Technische Anpassung der Schemata und Datenbank-Tabellen an das FW 4.0. Damit wird die spätere Erfassung weiterer Freitextfelder und von Bildern vorbereitet.
  • Künstliche Einschränkung der Erfassungsfelder auf das bisherige Spektrum.
  • Aufbau einer vollständigen verzahnten Master-Detail-Hierarchie aus drei Applikationen: Für die Erfassung/Nutzung von Orten und Niederlassungen sowie die eigentliche Stellenapplikation. Damit können Kunden ihre Stellen vorhandenen Niederlassungen anderer ixCMF-Anwendungen zuordnen oder in einer Stand Alone Umgebung schnell Orte und Niederlassungen erfassen und dann den Stellen zuordnen.
  • Filter nach der Niederlassung in den Pflegemasken der Stellenbearbeitung
  • Filter nach der Niederlassung in den generierten, öffentlich zugänglichen Webseiten
  • Herstellung der Lauffähigkeit in älteren Umgebungen ixCMF V2.0 oder V3.0.
  • Ablösung der bisherigen Anwendung durch die Zwischenlösung.

Standard-Kundenlösung (bis ca. 30.09.)

  • Erweiterung der FPDF-basierten PDF-Generatoren zur Behandlung und Formatierung von Aufzählungen in erfassten Texten. Dabei werden Blocksatz-Darstellungen inkl. evtl. vorhandener Bold- und Italic-Formatierungen beachtet. Letzteres ist in FPDF ja ein grundsätzliches Problem. Hiermit werden die bisherigen Formatierungsmöglichkeiten der PDF-Generatoren des IxCMF V4.0 grundsätzlich erweitert.
  • Erweiterung der PDF-Generatoren für Stellen zur Behandlung erfasster Bilder, die Freitext-Feldern zugeordnet sind.
  • Freischaltung der Erfassung der Standard-Freitext-Felder mit Bildern des FW 4.0.
  • Erfassung von frei positionierbaren Bildern für die Stellenpräsentation auf den Webseiten zur Einzelansicht einer Webseite. (Diese Bilder werden im PDF ignoriert.)
  • Erfassung von Layout-Varianten für die Webseiten zur Darstellung einer einzelnen Stelle. (Layout-Varianten werden im PDF ignoriert).

Erweiterte Kundenlösung (bis ca. 30.11.)

  • Automatische Erfassung neuer Berufsgruppen in einer Datenbanktabelle / Auswahl in der Pflege per Select-Box
  • Kalender-Widget zur Erfassung von Datumsinformationen
  • Berücksichtigung der drei Basislayouts für die Web-Einzelpräsentation in Form von drei Varianten der PDF-Generatoren.
  • Berücksichtigung von 3 frei positionierten Bildern im PDF.

Zusammenfassung

Es handelt sich um ein mittleres PHP5-Projekt, mit dem die bisherige Stellenapplikation erneuert, auf mehrere Niederlassungen erweitert und um attraktive Features erweitert wird. Die kommenden zwei Anwendungsvarianten können im Verbund mit anderen ixCMF-Anwendungen betrieben werden oder sie lassen sich durch uns als Einzelapplikationen in vorhandene statische oder PHP-basierte Websites integrieren. Voraussetzungen sind PHP 5.1 oder höher, MySQL 5, die Basisklassen des FW 4.0 und applikationsspezifische Dateien.

ixCMF-Version 4.2 mit kleinen, praktischen Änderungen

Während der Arbeiten zur Texterfassung in einem aktuellen Web-Projekt ergaben sich für die Applikation "Leistungsgruppen / Einzelleistungen" vier Punkte, die nun auch in die Version 4.2 von ixCMF als Erweiterungen einfließen werden. Ergänzt wurde vor allem die Funktionalität der ixCMF-Update-Maske. Die neuen Funktionalitäten wirken sich über die Web-Generatoren natürlich auch auf die generierten Webseiten selbst aus.

Funktionale Erweiterungen der Update-Masken

ixCMF-Update-Maske-v4.2

ixCMF-Update-Maske Version 4.2

1. Erweiterung 1: Zusätzlicher Button für den Rücksprung zum Mastersatz

Der neue Button in der Hauptbedienleiste am unteren Ende des Browserfensters erlaubt einen Rücksprung zum Mastersatz - genauer gesagt zur Detailansicht eines Mastersatzes (hier Leistungsgruppen). Siehe die blaue Umrandung im Bild.

Dieser Button erscheint nur, wenn der zu pflegende Satz tatsächlich

  • ein Detailsatz ist,
  • der genau einem Master zugeordnet wurde.

Dieser zusätzliche Button ist nach Einführung der Zwischenspeicher-Funktionalität sinnvoll, da ein direkter Wechsel zur Masterebene nun auch ohne vorherigen Wechsel zur Feldansichtsmaske möglich ist. Dieser Wechsel wurde schon vorher über Buttons in der Master-Satz-Linie angeboten. Der Cursor-Weg zum korrespondierenden Button der oberen Mastersatz-Linie ist aber umständlich und nicht intuitiv. Ein schneller Wechsel ist bei der Bearbeitung mehrerer Detailsätze zu einem Mastersatz jedoch erforderlich.
Der Button ist mit einem Warndialog bzgl. der Speicherung verbunden.

Dieser neue Button steht nur in (Multi)-Master-Detail-Applikationen zur Verfügung. Er wird damit auch in der kommenden, generellen CMS-Applikation "Pager" für die Pflege von Subseiten vorhanden sein.

Für ältere ixCMF-Applikationen ist dieser Button irrelevant, da dort kein Wechsel zur Master-Ebene aus der Update-Maske heraus möglich ist.

2. Erweiterung 2: Ergänzung im BB-Code-Bereich: Löschung von BB-Tags

Durch zwei Buttons "cls" und "clt" wird es ermöglicht, zuvor eingefügte BB-Code-Tags aus einem markierten Abschnitt (cls) oder dem gesamten aktuell editierten Textblock-Feld (textarea) zu entfernen. Die Konsistenz des verbliebenen HTML-Codes wird durch die seit Version 4.1 verfügbare "Checker"-Funktion automatisch geprüft. Damit wird auf unpaarige Tags, die beim Löschen ggf. erzeugt wurden, hingewiesen.

3. Erweiterung 3: Ergänzung im BB-Code-Bereich: Einfügen von H3-Überschriften in Textblöcke

Ab Version 4.2 können Zwischen-Überschriften auf dem Niveau H3 in Textblöcke eingefügt werden. Die Formatierung lässt sich über die zentrale CSS-Datei der Applikation steuern. Vertikale Abstände werden im Text und auch am Kopf des Textblockes wirksam. Dies hat ggf. Auswirkungen bzgl. der Position des Bildes, das dem Textblock zugeordnet wird. Siehe Änderung 4.

Diese Änderung erlaubt eine besser Strukturierung langer in die verschiedenen Textblöcke eingegebener Texte. Sie verbessern auch die Lesbarkeit auf Screenreadern für Blinde.

4. Erweiterung 4: Vertikale Positionierung eines einem Textblock zugeordneten Bildes

Nicht nur wegen Erweiterung 3 sondern aus prinzipiellen Gründen kann der Anwender nun den vertikalen Abstand des Bildes, das er ggf. einem Textblock zugeordnet hat, manuell einstellen. Damit kann er bei Bedarf

  • Überschriften-Abstände kompensieren
  • und im Zusammenspiel mit der Vorgabe der Bildgröße und der Links/Rechts-Positionierung neue Effekte bzgl. des umfließenden Textes erreichen.

5. Fehlerbehebung: Darstellung neu hochgeladener Bilder im Auswahlbereich

Der "Bug", der dazu führte, das neue, ins Repository geladene Bilder erst nach einem Refresh der Update- oder Insert-Masken angezeigt wurden, ist in der Version 4.2 behoben.

Ergänzung 13.03.2013: Der "Bug" trat nur auf bestimmten langsamen Servern auf, auf denen das Abspeichern der mittels der GDlib skalierten Bilder ins Repository-Verzeichnis zu langsam abläuft. Der Generator nutzt die Pfad-Information des Bildskalierungsprogramms und baut den Seitencode auf, obwohl der Webserver die Bildinformation noch nicht parat hat. Hier half eine zusätzliche Verifikation im Generatorprogramm, ob das File bereits vorliegt.