DEV Community

Jonas Brømsø
Jonas Brømsø

Posted on

Major Release 2 of the Perl Distribution Workflow

I finally got around to releasing a major release of the Perl distribution Workflow.

The release 2 has been on it's way for a long long time. We did two pre-releases to CPAN, to the final proper release ended up as version: 2.02. The reason for doing this was to make sure the test suite passed on all the platforms possible and when doing these public development releases, CPAN-testers pick up the releases and run the test suite on a wide range of platforms and Perl versions, but the releases do not interfere with the users of the distribution, since they are not indexed by the CPAN indexer - how awesome is that?

In addition the repository have moved into an origanisation, we are working on a website to collect some of all the scattered documentation, notes, examples and resources, More information will follow as this progresses.

After the release was made and was out in the open one of the contributors (@ehuelsmann) reported an issue with the release, so we made a new bug fix release, which was released as version: 2.03, with an update recommendation.

This demonstrates a very important aspect of open source development, the community and the contributors, who help maintain and improve the software are super important, but perhaps more important the users, since Workflow is used by two larger projects:

We can actually get our code exercised by more that the repository tests, we can get the code put to use.

This resulted in release 2.03, yes it was found and fixed by one of the contributors, which is also a user. This is very valuable since I am not using the distribution my self. The two mentioned projects have developers contributing to the repository, so I act more as an arbiter.

I have thought about passing on the maintenance role of the distribtion to one of the contributors, but since we currently only have the two and I am sure would could agree on this, I find my role interesting and important, since then not just one of the projects would dominate the development and maintenance of the distribution.

This sounds like we have conflicts of interests, but we do not, we share common interests in the distribution, so for now I stick on a little longer and we are a fragile little community and we get things released and fixed, slowly but eventually.

We have no larger plans for the distribution at this time, but we have a lot to do in regards to website, mainteance, clean up, so we will see what the future brings.

Change Log for 2.02

2.02 2025-01-11 Major release, update recommended

Added

  • Support for configurable history classes other than Workflow::History
  • Support for configuration of observers through a separate configuration file; i.e. independently of Workflow configuration
  • Added new observer events startup, finalize, run
  • Add new accessor methods last_action_executed, get_all_actions to Workflow object
  • Support for configuration of content of the first history item of a workflow through Workflow (instead of through the persister)
  • New persister Workflow::Persister::DBI::ExtraData to load data from a database when loading a workflow instance

Changed

  • Clarification that Workflow::Validator and Workflow::Condition define interfaces, not classes
  • Conditions return Workflow::Condition::IsTrue/Workflow::Condition::IsFalse on success/ failure instead of throwing a condition error
  • Workflow::Persister->fetch_history returns constructor arguments instead of Workflow::History objects, moving the responsibility of instantiating history instances to the factory
  • Logging library changed from Log::Log4perl to Log::Any; to get logging, install a Log::Any::Adapter
  • Moved add_observer and notify_observers from private to public API of Workflow
  • $wf->context->param( $key => undef ) removes $key from the context instead of setting it to undef
  • Autorunning now loops through executed actions instead of recursing; preventing stack overflows on very large execution chains
  • Workflow no longer calls {commit,rollback}_transaction; the factory has assumed this responsibility as it's the factory which is in charge of serializing workflows
  • Workflow::Action->execute must return a scalar value or undef (no references)
  • Renamed observer event complete to executed, changed arguments for state change an executed observer events to be a hash a not positional arguments.

Removed

  • Workflow::Persister->fetch_extra_workflow_data replaced by Workflow::Persister::DBI::ExtraData
  • Removed condition_error in light of the changed return value of conditions
  • Removed Workflow::Validator->_init since the private function does not need to be part of the specified public interface
  • Removed Workflow::Condition::CheckReturn and Workflow::Condition::GreedyOR
  • Removed empty modules Workflow::Condition::Nested and Workflow::Action::Mailer
  • Support for SPOPS - Workflow::Persister::SPOPS - has been removed from the Workflow dist; it has been moved to the Workflow-Persister-SPOPS dist for those who still need it. Reason for removal is that it does not seem to be actively supported and the latest release (0.87; released in 2004) has failed its cpantesters tests on every released Perl version since 5.11.1

Fixed

  • Workaround for Perls between 5.18 and 5.39.2 clobbering %SIG in Safe->reval() which is used internally by Workflow::Condition::Evaluate

Change Log for 2.03

2.03 2025-01-24 BUg fix release, update recommended

Fixed

  • Instances of Workflow::Condition::IsFalse interpreted as true return values under $Workflow::Condition::STRICT_BOOLEANS = 0

Top comments (1)

Collapse
 
jess profile image
Jess Lee

Congrats!