Hier geben wir Einblicke in das Unternehmen, Gedanken, How-Tos, Wissenswertes und News, die sich aus der Programmierung und Projekten ergeben. Auch unsere Open Source Aktivitäten begleiten wir hier.

Corporate Blog der prooph software GmbH

Rapid Prototyping mit prooph-cli

Time Management

Time Management: Rapid Prototyping

Um den Entwicklungsprozess zu beschleunigen, wiederkehrende Aufgaben zu automatisieren und Kosten zu sparen, wurde das prooph-cli Tool entwickelt, das prooph components Anwendungen ideal ergänzt. Die Open Source PHP Library prooph components erweitert eine Web Applikation um Messaging und Event Logging Funktionalität. Das steigert die Performance, erhöht die Skalierbarkeit und ermöglicht neue Real-Time Daten-Analysen.

Command-Line Interface

Das prooph Command-Line Interface wurde in erster Linie für Rapid Prototyping geschaffen. Damit lassen sich die notwendigen Klassen, um die Open Source PHP Library prooph components zu nutzen, einfach und schnell generieren. Somit ist es das ideale Tool, um Commands für den Service Bus sowie Events und Aggregates für den Event Store erstellen zu lassen.

Neben dem eigentlichen Command gehört auch ein Command Handler, welcher den Command verarbeitet, und eine Command Handler Factory dazu. Die Command Handler Factory versorgt den Command Handler mit allen notwendigen Abhängigkeiten, um den Command zu verarbeiten. Die Command Klasse selbst fungiert dabei als Daten-Container für die eigentliche Nachricht.

Ein Command beschreibt Aktionen, die das Model (Aggregate Root) verarbeitet.

Beim Event Sourcing wird mit sogenannten Event Sourced Aggregates gearbeitet. Im Aggregate Root wird das Event verarbeitet und im Event Store aufgezeichnet.

Events geben immer an, dass bereits etwas geschehen ist. (Vergangenheit)

Zusammengefasst werden folgende Klassen und Methoden benötigt:

  • Eine Command Klasse: Dient als Daten-Container für Nachrichten
  • Eine Command Handler Klasse: Verarbeitet den Command
  • Eine Command Handler Factory Klasse: Erstellt die Command Handler Klasse mit allen Abhängigkeiten
  • Eine Model (Aggregate Root) Klasse:
    • Eine public Methode, welche den Command verarbeitet
    • Eine protected Methode, welche den Zustand des Events im Aggregate Root abbildet

Die proophessor-do Beispiel Applikation hat noch offene Übungsaufgaben. Nehmen wir z.B. die Aufgabe "Reopen a todo" (Issue #2). Nachdem alle Abhängigkeiten per Composer aufgelöst wurden, kann das prooph-cli Tool vom Wurzelverzeichnis der Applikation aus aufgerufen werden. Es stehen folgende Befehle zur Verfügung:

$ php vendor/bin/prooph-cli

Available commands:
  help              Displays help for a command
  list              Lists commands
 prooph
  prooph:generate:aggregate  Generates an aggregate class
  prooph:generate:all        Generates an aggregate, command, command handler, command handler factory and event class.
  prooph:generate:command    Generates a command, command handler and command handler factory class
  prooph:generate:event      Generates an event class

Bevor wir beginnen, setzen wir noch den PHP Namespace der proophessor-do Applikation per Umgebungsvariable. Die Klassen erhalten so den korrekten Namensraum. Die Umgebungsvariable wird auf der Linux Konsole mit folgendem Befehl gesetzt:

$ export PROOPHCLI_PACKAGE_PREFIX="Prooph\ProophessorDo"

Wenn ein Command ohne Parameter aufgerufen wird, erscheint ein Hinweis mit den verfügbaren Parametern. Der erste Schritt ist den Command ReopenTodo im Ordner Model/Todo mit dem dazugehörigen Handler und der Factory zu erzeugen.

$ php vendor/bin/prooph-cli prooph:generate:command ReopenTodo Model/Todo

Generated file Model/Todo/Command/ReopenTodo.php
Generated file Model/Todo/Command/ReopenTodoHandler.php
Generated file Model/Todo/Command/ReopenTodoHandlerFactory.php

Als Nächstes wird das notwendige Event TodoWasReopened erstellt. Das Aggregate Root Prooph\ProophessorDo\Model\Todo\Todo soll zusätzlich eine Methode whenTodoWasReopened() bekommen, um das Event zu verarbeiten. Der Befehl dazu lautet:

$ php vendor/bin/prooph-cli prooph:generate:event --update-aggregate "\Prooph\ProophessorDo\Model\Todo\Todo" TodoWasReopened Model/Todo

Generated file Model/Todo/Event/TodoWasReopened.php
Skip generation of aggregate class "\Prooph\ProophessorDo\Model\Todo\Todo". Already exists.
Updated file Model/Todo/Todo.php

Nun sind alle notwendigen Klassen erstellt und vorbereitet, um das Feature zu implementieren. Es besteht auch die Möglichkeit, alle Klassen und Methoden mit dem Befehl php vendor/bin/prooph-cli prooph:generate:all ReopenTodo TodoWasReopened Todo Model/Todo zu generieren, was die Sache noch mal ein wenig beschleunigt. Das Tool nutzt bestimmte Konventionen wie z.B. die Benamung der Klassen. Über Parameter lassen sich diese jedoch konfigurieren.

Rapid Prototyping

Am Anfang ist eine gute Geschäftsidee wichtig. Diese sollte dann auch möglichst schnell umgesetzt werden, um am Markt erfolgreich zu sein. Rapid Prototyping führt schnell zu ersten Ergebnissen und gibt frühzeitig Feedback über die Eignung des Lösungsansatzes. Wir bei der prooph software GmbH gehen noch einen Schritt weiter: Unsere Prototypen werden so konstruiert, dass sie einem hohen Maß an Qualität entsprechen und dadurch sofort produktiv einsetzbar sind. Dies erreichen wir mit selbst entwickelten Werkzeugen und automatischen Analysen. In kurzen Feedback- und Releasezyklen (agile Softwareentwicklung) sowie der prooph Service Bus und Event Sourcing Technologie wird die Anwendung stetig verbessert und weiter ausgebaut. Neue Features können sogar auf Daten aus vergangenen Ereignissen zurückgreifen. Das freut nicht nur das Business Intelligence Team. Fremdsysteme werden durch den prooph Service Bus kostengünstig in die Anwendung integriert.

Fazit

prooph-cli erstellt Commands, Aggregates und Events innerhalb von einer Sekunde. Dadurch sorgt das Tool beim Rapid Prototyping dafür, dass aus der Business Idee schnell und kostengünstig ein Prototyp entsteht. Durch die hohe Qualität des Prototypen ist dieser sofort produktiv einsetzbar und wird kontinuierlich verbessert.

Mit Rapid Prototyping schnell zum Erfolg Durch eine kurze Entwicklungsphase nach der Lean Startup Methode in Verbindung mit einer skalierbaren Softwarearchitektur sind Sie nicht nur frühzeitig auf dem Markt präsent, sondern bleiben es auch. Die prooph software Gmbh ist spezialisiert auf verteilte und serviceorientierte Systeme.

Profitieren Sie von unserem Know-How für Ihr Projekt: Projektanfrage stellen

Blog Artikel mit ähnlichen Themen