Manual Reference Pages - OPENXPKI::SERVER::WORKFLOW (3)
Return an arrayref with the names of the global actions wakeup, resume, fail
that are available to the session user on this workflow.
This is the OpenXPKI specific subclass of Workflow.
Purpose: overwrite the Method execute_action of the baseclass to implement the feature of pauseing / wake-up / resuming workflows
The workflow-table is expanded with 4 new persistent fields (see OpenXPKI::Server::DBI::Schema)
Essential field is WORKFLOW_PROC_STATE, internally proc_state. All known and possible proc_states and their follow-up actions are defined in %known_proc_states.
running will be set, before SUPER::execute_action/Activity::run is called.
After execution of one or more Activities, either manual (waiting for interaction) or finished will be set.
If an exception occurs, the proc state exception is set. Also the message code (not translation) will be saved in WF context (key wf_exception)
The two states pause and retry_exceeded concern the pause feature.
Usage documentation and guidelines
Please refer to the documentation of Workflow Modul for basic usage
Constructor. Takes the original Workflow-Object as first argument and take all his properties - after that the object IS the original workflow.
wrapper around super::execute_action. does some initialisation before, checks the current proc_state, trigger the resume/wake_up - hooks,
sets the reap_at-timestamp, sets the proc state to running.
after super::execute_action() the special OpenXPKI::Server::Workflow::Pause-exception will be handled and some finalisation takes place.
should not be called manually/explicitly. Activities should always use $self->pause($msg) (= OpenXPKI::Server::Workflow::Activity::pause()).
calculates and stores the count_try and wake_up_at information. if max_count:_try is exceeded, an special exception
I18N_OPENXPKI_SERVER_WORKFLOW_ACTIVITY_RETRIES_EXEEDED will be thrown.
The given cause of pausing will be stored in context key wf_pause_msg. history etries are made, observers notified.
Note that pause requires an epoch value for $wakeup_at and NOT a relative date!
checks the current proc state and determines the follwo up action (e.g. pause->wake_up)
wrapper and try/catch around Activity::wake_up(). makes history entries and notifies observers.
sets the proc_state to wakeup.
wrapper and try/catch around Activity::resume(). makes history entries and notifies observers.
sets the proc_state to wakeup.
after calling Activity::runtime_exception() throws I18N_OPENXPKI_WORKFLOW_RUNTIME_EXCEPTION
stores the proc_state in the class field proc_state and calls $self->_save();
is called if an exception occurs during execute_action. the code of the exception (not the translation) is stored in context key wf_exception.
observers are notified, history written. the proc_state is set to exception,
if not otherwise specified (via param next_proc_state given to Exception::throw(), see pause() for details. Caveat: in any case the proc_state must be specified in %known_proc_states).
true, if the workflow has paused (i.e. the proc state is pause)
true, if the workflow is running(i.e. the proc state is running)
overwritten from parent Workflow class. handles the special case pause, otherwise it calls super::_get_next_state()
return a ref to the workflows factory
overwritten from parent Workflow class. adds the OpenXPKI-package to the allowed packages, which CAN set internal properties.
See documentation for
for limitations that exist for data stored in Workflow Contexts.
Creating new activities
For creating a new Workflow activity it is advisable to start with the
activity template available in OpenXPKI::Server::Workflow::Activity::Skeleton.
Authorization and access control
|perl v5.20.3 ||OPENXPKI::SERVER::WORKFLOW (3) ||2016-04-03 |
Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.