Revision history for Perl extension Workflow
0.10 Tue Oct 12 01:02:11 EDT 2004
Workflow
- POTENTIAL BACKWARD INCOMPATIBILITY
Since we've now got 'resulting_state' in a state's action that is
dependent on the action results of the previous action being run
(see Workflow::State change), we cannot set the 'new' workflow
state before executing the action.
One result: you shouldn't set the 'state' property of any created
Workflow::History objects -- we'll modify the state of any
history objects with an empty state before saving them (see
changes for Workflow::Factory)
Another result: the value of '$wf->state' inside your
Action now refers to the EXISTING state of the workflow not the
SOON TO BE state. Earlier versions had the SOON TO BE state set
into the workflow before executing the action to make things less
confusing. Now that it's changed any code you have using the
state of the workflow (such as in our example 'Trouble Ticket'
application in eg/ticket/) will give a different value than the
previous Workflow version.
This behavior seems more consistent, but comments/suggestions
are welcome.
- In 'execute_action()' -- once we're done executing the main
action, check to see if our new state is an autorun state, and if
so run it.
Workflow::Action::Null
- New class: use if you want to move the workflow from one state
to another without actually doing anything.
Workflow::Condition::Evaluate
- New class: allow inline conditions expressed as Perl code in
the 'test' attribution of 'condition'; has access to the values
in the current workflow context in a Safe compartment.
Workflow::Factory
- In save_workflow(), call 'set_new_state()' with the workflow
state on all unsaved Workflow::History objects before saving them.
Workflow::State
- Add 'autorun' property and 'get_autorun_action_name()' to
retrieve the single valid action name available from an autorun
state.
- The 'resulting_state' property of an action within a state can
now be multivalued, which means the next state depends on the
return value of the action that's executed. For instance, we
might have:
<state name="create user">
<action name="create">
<resulting_state return="admin" state="assign as admin" />
<resulting_state return="helpdesk" state="assign as helpdesk" />
<resulting_state return="*" state="assign as luser" />
</action>
....
So if the action 'create' returns 'admin', the new state will be
'assign as admin'; on 'helpdesk' it will be 'assign as helpdesk',
and all other values will go to state 'assign as luser'.
Existing behavior (actions returning nothing for a single
'resulting_state') is unchanged.
0.05 Thu Sep 30 23:11:01 EDT 2004
Workflow::Persister::DBI
- Trying to fetch a workflow with a non-existent ID didn't work
properly, returning an empty workflow object (which blew up when
you tried to call a method on it) instead of undef (as
documented). Thanks to Martin Winkler <mw@arsnavigandi.de> for
pointing the problem out.
0.04 Sun Sep 12 22:17:48 EDT 2004
eg (example application):
- Add CGI interface ('ticket.cgi') to example application, and
move most of the logic into App::Web, which is now a full object
instead of a bunch of class methods. Both the standalone web
server ('ticket_web.pl') and the CGI script use the same logic,
templates, template processing, etc.
Workflow::Config
- Move Perl/XML configuration parsers to separate classes and
make this class a factory.
- Add class method 'parse_all_files()' to allow you to pass in a
list of mixed-type files (some XML, some Perl) and have them be
parsed properly.
- Add documentation about implementing your own configuration reader
Workflow::Config::Perl
- New class: code moved from Workflow::Config for perl-only parsing
Workflow::Config::XML
- New class: code moved from Workflow::Config for XML-only parsing
Workflow::Factory
- Invoke class method in Workflow::Config to deal with
potentially different types of configuration (e.g., mixing and
matching 'xml' and 'perl' files).
Workflow::Persister::DBI::AutoGeneratedId:
- Fix typo bug spotted by Martin Winkler (winkler-martin@web.de)
0.03 Mon May 24 19:16:40 EDT 2004
* Applied modified patches from Jim Smith (jgsmith@tamu.edu) to
do the following:
- Allow you to read in the XML/Perl configuration file from
somewhere else and pass it to Workflow::Config as a scalar
reference.
- You can subclass Workflow::Factory and still use 'FACTORY' to
import the factory of the class you want and 'instance()' to do
the same.
* Added docs for these new features, and added tests for at
least the factory subclassing feature.
0.02 Sat May 22 00:34:43 EDT 2004
Updates to test scripts and files they require from CPAN tester
report -- thanks Barbie!
0.01 Thu May 13 22:08:29 EDT 2004
First CPAN release -- everything is new!