Execution
pentaho.action Execution
The action.Execution
class represents a certain model of action execution.
This class manages the execution of an action and enforces the multiple phases by which all actions, generically, go through, which are: "init", "will", "do", and "finally".
Synchronous or Asynchronous
The associated action can be synchronous or asynchronous, as determined by the type property, pentaho.action.Base.isSync
. The execution of a synchronous action is completed synchronously. while that of an asynchronous action only completes asynchronously, due to its asynchronous "do" phase.
The execute
method handles the execution of both types of actions. When the associated action is asynchronous
, or it is not know if it is synchronous or asynchronous, after calling execute
, obtain the value of the promise
property and wait for its resolution.
Execution model
The following is a detailed description of the action execution model:
-
When an action execution is constructed, it is in the
unstarted
state.The action's
label
anddescription
properties, and any other property which defines what it ultimately does, can still be freely modified.In this state, the execution cannot be settled by marking it
done
orrejected
. -
When the
execute
method is called, the execution enters the init phase:- the state is set to
init
; - the
_onPhaseInit
method is called.
The action's
label
anddescription
properties, and any other property which defines what it ultimately does, can be freely modified at this stage.The execution can be settled by marking it
rejected
in which case it transits to the finally phase.Otherwise, if the associated action is not
valid
, the execution is automatically rejected with the first reported validation error.Otherwise, the execution automatically transits to the will phase.
- the state is set to
-
In the will phase, what the associated action will do is already determined and cannot change anymore:
- the state is set to
will
; - the associated action is frozen, using
Object.freeze
, and should not be modified anymore (e.g. by modifying nested objects); trying to modify direct properties of the action will throw aTypeError
; - the
_onPhaseWill
method is called.
From this point on, an execution can be canceled based on what exactly the associated action will do.
The execution can be settled by marking it
rejected
, in which case it transits to the finally phase.Otherwise, the execution automatically transits to the do phase.
- the state is set to
-
In the do phase, the execution, proper, is carried out:
- the state is set to
do
; - the
_onPhaseDo
method is called. - if after calling
_onPhaseDo
, the execution is not yet done or rejected, the_doDefault
method is called, allowing the action execution class to clearly handle a default behaviour.
The execution can be settled by marking it
rejected
or, alternatively,done
.In either case, the execution transits to the finally phase.
- the state is set to
-
In the beginning of the finally phase, the execution is considered
settled
, with or without success.If this phase was entered due to a rejection, the execution is in one of the states
canceled
orfailed
, depending on the type of rejection reason,isRejected
istrue
, and anerror
may be available.Otherwise, the execution was successful and it is in the
did
state. PropertyisDone
now returnstrue
and aresult
may be available.The
_onPhaseFinally
method is called.The
finished
state
bit is set to on. PropertyisFinished
now returnstrue
.
AMD Module
require(["pentaho/action/Execution"], function(Execution) { /* code goes here */ });
Extends
Constructor
Name | Description |
---|---|
new Execution() Abstract | Creates an action execution instance for a given action and target. |
Members
Name | Description |
---|---|
__isInside : | Indicates if currently calling any of the methods: |
action : Abstract | Gets the action of the action execution. |
base : Protected | If a method has been overridden, then the base method provides access to the overridden method. |
error : | Gets the reason for a rejected action execution, or |
isCanceled : | Gets a value that indicates if the action execution has been canceled. |
isDone : | Gets a value that indicates if the action execution completed successfully. |
isExecuting : | Gets a value that indicates if the action execution is executing. |
isFailed : | Gets a value that indicates if the action execution has failed. |
isFinished : | Gets a value that indicates if the action execution has finished. |
isRejected : | Gets a value that indicates if the action execution has been rejected. |
isSettled : | Gets a value that indicates if the action execution has been settled. |
isSync : | Gets a value that indicates if the execution is synchronous. |
isUnstarted : | Gets a value that indicates if the action execution is in the |
promise : | Gets a promise for the result (or error) of this action execution. |
result : | Gets the result of a successful action execution, if any. |
state : | Gets the current action execution state. |
target : Abstract | Gets the target of the action execution. |
Methods
Name | Description |
---|---|
_doDefault() : Promise Protected | Performs the default "execution" for the associated action. |
_lockAction() Protected | Locks the action. |
_onPhaseDo() : Promise Protected | Called during the action's do phase. |
_onPhaseFinally() Protected | Called during the action's finally phase. |
_onPhaseInit() Protected | Called during the action execution's initialize phase. |
_onPhaseWill() Protected | Called during the action execution's will phase. |
_validate() : Array.< Protected | Validates that the action execution is valid for entering the |
done(result) : pentaho.type.action.Execution | Called from an action observer to settle the action execution as being done, optionally giving a result value. |
execute() : pentaho.type.action.Execution | Executes the action. |
executeWill() : pentaho.type.action.Execution | Executes up to the 'will' phase of the action. |
extend(source, keyArgs) : object | Extend an object with the properties of another. |
reject(reason) : pentaho.type.action.Execution | Called to settle the action execution as rejected. |
Constructor Details
new Execution() Abstract |
---|
Creates an action execution instance for a given action and target. Source: javascript/web/pentaho/action/Execution.js, line 182 |
Members Details
__isInside: |
---|
Indicates if currently calling any of the methods: Source: javascript/web/pentaho/action/Execution.js, line 202 Default Value: false See also: pentaho.action.Execution#__callInside |
action: Abstract |
---|
Gets the action of the action execution. Once the action execution enters the Source: javascript/web/pentaho/action/Execution.js, line 229 |
base: Protected |
---|
If a method has been overridden, then the base method provides access to the overridden method. Can also be called from within a constructor function. Source: javascript/web/pentaho/lang/Base.js, line 299 Inherited From: pentaho.lang.Base#base |
error: |
---|
Gets the reason for a rejected action execution, or This property only returns a non-null value if Source: javascript/web/pentaho/action/Execution.js, line 323 |
isCanceled: |
---|
Gets a value that indicates if the action execution has been canceled. An action execution is considered canceled if its state has the Source: javascript/web/pentaho/action/Execution.js, line 391 See also: pentaho.type.action.Execution#isRejected |
isDone: |
---|
Gets a value that indicates if the action execution completed successfully. An action execution is considered done if its state has the Source: javascript/web/pentaho/action/Execution.js, line 440 See also: pentaho.type.action.Execution#isSettled , pentaho.type.action.Execution#result |
isExecuting: |
---|
Gets a value that indicates if the action execution is executing. An action execution is considered executing if it has started but not yet finished, i.e., if its state is not the Source: javascript/web/pentaho/action/Execution.js, line 424 See also: pentaho.type.action.Execution#isUnstarted , pentaho.type.action.Execution#isFinished |
isFailed: |
---|
Gets a value that indicates if the action execution has failed. An action execution is considered failed if its state has the Source: javascript/web/pentaho/action/Execution.js, line 406 See also: pentaho.type.action.Execution#isRejected |
isFinished: |
---|
Gets a value that indicates if the action execution has finished. An action execution is considered finished if its state has the When finished, one of the bits Source: javascript/web/pentaho/action/Execution.js, line 462 See also: pentaho.type.action.Execution#isSettled |
isRejected: |
---|
Gets a value that indicates if the action execution has been rejected. An action execution is considered rejected if its state has one of the following bits on: Source: javascript/web/pentaho/action/Execution.js, line 376 See also: pentaho.type.action.Execution#isCanceled , pentaho.type.action.Execution#isFailed , pentaho.type.action.Execution#isDone , pentaho.type.action.Execution#isSettled , pentaho.type.action.Execution#error |
isSettled: |
---|
Gets a value that indicates if the action execution has been settled. An action execution is considered settled if its state has one of the following bits on: When an execution is settled it may not yet be [finished]{@see pentaho.type.action.Execution#isFinished}. Source: javascript/web/pentaho/action/Execution.js, line 356 See also: pentaho.type.action.Execution#isCanceled , pentaho.type.action.Execution#isFailed , pentaho.type.action.Execution#isDone |
isSync: |
---|
Gets a value that indicates if the execution is synchronous. Source: javascript/web/pentaho/action/Execution.js, line 248 |
isUnstarted: |
---|
Gets a value that indicates if the action execution is in the Source: javascript/web/pentaho/action/Execution.js, line 334 |
promise: |
---|
Gets a promise for the result (or error) of this action execution. This promise can be requested anytime, before the execution has started, during execution, or after execution has finished. It can also be requested whether or not the associated action is The promise is fulfilled with the action execution's Source: javascript/web/pentaho/action/Execution.js, line 485 |
result: |
---|
Gets the result of a successful action execution, if any. This property only returns a non-undefined value if Source: javascript/web/pentaho/action/Execution.js, line 310 |
state: |
---|
Gets the current action execution state. Source: javascript/web/pentaho/action/Execution.js, line 279 See also: pentaho.type.action.Execution#isUnstarted , pentaho.type.action.Execution#isExecuting , pentaho.type.action.Execution#isSettled , pentaho.type.action.Execution#isDone , pentaho.type.action.Execution#isRejected , pentaho.type.action.Execution#isCanceled , pentaho.type.action.Execution#isFailed , pentaho.type.action.Execution#isFinished |
target: Abstract |
---|
Gets the target of the action execution. Source: javascript/web/pentaho/action/Execution.js, line 252 |
Methods Details
_doDefault() : Promise Protected | ||||
---|---|---|---|---|
Performs the default "execution" for the associated action. When the associated action is Source: javascript/web/pentaho/action/Execution.js, line 615
|
_lockAction() Protected |
---|
Locks the action. The default implementation locks the action by using the Source: javascript/web/pentaho/action/Execution.js, line 891 |
_onPhaseDo() : Promise Protected | ||||
---|---|---|---|---|
Called during the action's do phase. The default implementation does nothing. Source: javascript/web/pentaho/action/Execution.js, line 1052
|
_onPhaseFinally() Protected |
---|
Called during the action's finally phase. The default implementation does nothing. Source: javascript/web/pentaho/action/Execution.js, line 1063 |
_onPhaseInit() Protected |
---|
Called during the action execution's initialize phase. The default implementation does nothing. Source: javascript/web/pentaho/action/Execution.js, line 1029 |
_onPhaseWill() Protected |
---|
Called during the action execution's will phase. The default implementation does nothing. Source: javascript/web/pentaho/action/Execution.js, line 1039 |
_validate() : Array.< Protected | ||||
---|---|---|---|---|
Validates that the action execution is valid for entering the The default implementation validates the action. Source: javascript/web/pentaho/action/Execution.js, line 903
|
done(result) : pentaho.type.action.Execution | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Called from an action observer to settle the action execution as being done, optionally giving a result value. Source: javascript/web/pentaho/action/Execution.js, line 631
|
execute() : pentaho.type.action.Execution | ||||
---|---|---|---|---|
Executes the action. When the associated action is Source: javascript/web/pentaho/action/Execution.js, line 540
|
executeWill() : pentaho.type.action.Execution | ||||
---|---|---|---|---|
Executes up to the 'will' phase of the action. Source: javascript/web/pentaho/action/Execution.js, line 562
|
extend(source, keyArgs) : object | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Extend an object with the properties of another. Methods that are overridden are accessible through This object is extended, but its class doesn't change. Source: javascript/web/pentaho/lang/Base.js, line 1040 Inherited From: pentaho.lang.Base#extend
|
reject(reason) : pentaho.type.action.Execution | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Called to settle the action execution as rejected. The execution is considered failed if Otherwise, the execution is considered canceled if When unstarted, the execution's 'finally' phase is run. Otherwise, it is run later, when the execution reaches that phase. Source: javascript/web/pentaho/action/Execution.js, line 704
See also: pentaho.type.action.Execution#isRejected , pentaho.type.action.Execution#isCanceled , pentaho.type.action.Execution#isFailed , pentaho.type.action.Execution#error Example define([ "pentaho/lang/UserError", "pentaho/lang/RuntimeError" ], function(UserError, RuntimeError) { // ... target.on("fly", { will: function(event) { // Canceling the action execution // - Method 1 event.reject("Cannot do this action now."); // - Method 2 event.reject(new UserError("Cannot do this action now.")); // Failing the action execution // - Method 1 (message is not adequate to be shown to the user): event.reject(new Error("Null Pointer Exception.")); // - Method 2 (message is adequate to be shown to the user): event.reject(new RuntimeError("The server is currently unreachable.")); } }); // ... }); |