eZ Components 2008.1 and ezcWorkflow 1.2

Sebastian Bergmann » 17 June 2008 » in Announcements » 1 Comment

eZ Components

The eZ Components development team is happy to announce the eZ Components 2008.1 release. Starting from this version, eZ Components requires PHP 5.2.1.

In this release, there are three new components:

  • The Document component enables you to convert documents between different formats.
  • The Feed component parses and generates RSS1, RSS2 and ATOM feeds.
  • The new Search component provides a unified interface to different search engine back-ends, quite similar to what the Database and PersistentObject components provide for database access.

The eZ Components 2008.1 release also comes with a new version of my workflow engine, Workflow 1.2. Here are the highlights of this update:

A new tie-in component, WorkflowSignalSlotTiein, has been added to allow integration between the Workflow and SignalSlot components.

Defined tags for this entry: , , ,

A Workflow Engine for PHP 5

Sebastian Bergmann » 14 March 2008 » in Presentations » 2 Comments

Defined tags for this entry: , ,

Workflow Engine Plugin System

Sebastian Bergmann » 19 February 2008 » in New Features » 3 Comments

eZ Components

Version 1.2 of the Workflow component that is part of the eZ Components introduces a plugin system that allows developers to hook into the workflow engine at well-defined extension points.

For now, plugin code can be called

  • after an execution has been started
  • after an execution has been suspended
  • after an execution has been resumed
  • after an execution has been cancelled
  • after an execution has successfully ended
  • before a node is activated
  • after a node has been activated
  • after a node has been executed
  • after a service object has been rolled back
  • after a new thread has been started
  • after a thread has ended
  • before a variable is set
  • after a variable has been set
  • before a variable is unset
  • after a variable has been unset

ezcWorkflowExecutionListenerPlugin and ezcWorkflowExecutionVisualizerPlugin are two workflow execution engine plugins that will ship with Workflow 1.2. The former is a refactored version of the execution logging code of Workflow versions 1.0-1.1.

The latter is new and can be used to visually log the execution of a workflow as shown below.

Execution of a workflow

The ezcWorkflowExecutionVisualizerPlugin generates a series of DOT files that can be rendered into single pictures using GraphViz. For the animation above, I crudely joined the single images to an animated GIF.

The before hooks are special as they allow the plugin to change (or even prevent) the current execution step. This will eventually allow for Aspect-Oriented Programming on the workflow level.

Defined tags for this entry: , , ,

Workflow Engine 1.1

Sebastian Bergmann » 21 December 2007 » in Announcements, New Features » 0 Comments

eZ Components

A couple of days ago, Derick rolled and announced the 2007.2 release of the eZ Components, the enterprise ready general purpose PHP components library used independently or together for PHP application development.

Part of this release is Version 1.1 of my workflow engine that consists of the Workflow, WorkflowDatabaseTiein, and WorkflowEventLogTiein components.

The new version makes expressing loops easier (thanks to the new ezcWorkflowNodeLoop class), adds an else-like construct for exclusive choice nodes, and introduces the mapping of workflow variables for sub-workflows. The marshalling of the node configuration is now handled in the individual node classes. This makes it possible to have custom node classes handled by the XML definition storage.

The new version also features improved compatibility with the (outdated) PHP 5.1 release series.
Defined tags for this entry: , ,

Speaking at Conférence PHP Québec 2008

Sebastian Bergmann » 15 November 2007 » in ezcWorkflow, PHPUnit » 1 Comment



I will speak at the 2008 edition of Conférence PHP Québec in Montreal next March.

Together with Marcus Börger I will present a PHPLab
Test-Driven Object-Oriented Programming - Learning and Understanding
PHP has become an extremly powerful web development platform, and since PHP 5 it supports a pretty good and capable object model. This allowed the design of high quality frameworks such as the eZ Components or the Zend Framework. But before you start using them, you might want to learn a bit more about OOP.

This PHPLab is an in-depth introduction to object-oriented and pattern-based programming using PHP 5. You will learn everything necessary to write your own cutting-edge components and applications - and of course how to use and extend components from other people or companies. You will learn how and when to use objects as well as when not to use them. Throughout the tutorial we will use a test-driven learning approach.
In my first session of the main conference I will take a look at PECL
PECL: The PHP Language Workbench
A look into PECL shows how flexible the language core of PHP, the Zend Engine, is. The repository holds a variety of extensions that not only add "normal" functionality, but alter and extend language features. This session will demonstrate, among other, PHP extensions for operator overloading, manipulation of bytecode at runtime, and access to the parse tree of PHP code.
My second session will present the Workflow component of the eZ Components:
Graph-Oriented Programming with PHP
Workflow Management (WfM) is becoming more and more important. For the development and maintainance of software that supports workflows, a new layer on top of the base programming language is needed. Graph-Oriented Programming (GOP) is such a layer. This session presents the eZ Components' workflow engine, its possible applications and the underlying principles and techniques.
I am looking forward to this conference for various reasons: it will be my first time tag-teaming a workshop with Marcus and I have been told that Conférence PHP Québec is the PHP conference with the most fun.
Defined tags for this entry: , , , , , ,