Zeta Workflow
Why Zeta Workflow
The Zeta Components, also known as the EZ Components, are an interesting set of PHP packages intended to be “building blocks” used in solving various problems. They were written so long ago that they may well be obsolete. With the Workflow package in particular, I see no indication of support or usage within the last five years.
However, the Zeta Components Workflow package with its Database Tie-In package seems to be what we need for ongoing development at the Star Tribune. All Zeta Components are open source PHP. The code is maintained to the extent that it has been placed on GitHub and is available from Packagist through Composer.
We use Laravel 4 as our PHP framework. This project integrates Zeta Workflow as a Laravel package. We intend to contribute both our Zeta Components changes and this Laravel package to the open source community.
Why WordPress-Based Documentation
What you’re reading right now is my documentation of the project, as opposed to documenting the package code. This narrative includes some speculation and suggestion as to how we might best use the Zeta Workflow for our purpose.
Why WordPress rather than standard docblocks and docbooks in the code, or with the code? Because a lot of this consists of code walkthroughs. The walkthroughs are far more clear by showing code samples this way, with syntax highlighted.
My Narrative Documentation
My documentation begins from the standpoint of, “Now that we have an interface from Laravel to Zeta Components Workflow, how might we best use it?” It then continues as a walkthrough of both the interface code and the unit tests verifying Zeta Components Workflow behavior.
Here are the posts related to the modified Zeta Components Workflow package.
- Zeta Workflow 01: Workflow Communication
- Zeta Workflow 02: Failure Handling
- Zeta Workflow 03: Failure Handling Walkthrough
- Zeta Workflow 04: Exception Handling Walkthrough
- Zeta Workflow 05: Zeta Components Interface
- Zeta Workflow 06: Zeta Components Wrapper Implementation
The Laravel Package Components
The various components are documented via PHPDocumentor. Begin with the package top level directory phpdoc/index.html.
There is also a top-level directory PUT_IN_PROJECT_ROOT which contains:
- Makefile. When there are a large number of Laravel/PHPUnit tests which connect to the database, the unit test runner blows up. This less-than-simple Makefile is less than simple because we split the unit tests into suites which run separately so as to not blow up. The Makefile also generates the phpdoc/ documentation.
- composer.json. Load the dependencies needed for package development.
- phpunit.xml. This contains the PHPUnit settings I use, and partitions the tests into suites which are referenced by the Makefile.
Ongoing Development
As I continue developing the Laravel Workflow package, I intend to lay out my train of thought as I go. Here are the posts.
- Zeta Workflow 07: Execution Sniffer Plugin
- Zeta Workflow 08: Execution State Object
- Zeta Workflow 09: Execution State Registry
- Zeta Workflow 10: Execution State Interpreter
- Zeta Workflow 11: Sniffer Plugin
- Zeta Workflow 12: The Sniffer Class
- Zeta Workflow 13: Sniffer Integration
That’s it!