Class GraphNodeImpl
java.lang.Object
org.nuxeo.ecm.platform.routing.core.impl.DocumentRouteElementImpl
org.nuxeo.ecm.platform.routing.core.impl.GraphNodeImpl
- All Implemented Interfaces:
Serializable
,DocumentRouteElement
,DocumentRouteStep
,GraphNode
Graph Node implementation as an adapter over a DocumentModel.
- Since:
- 5.6
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.nuxeo.ecm.platform.routing.core.impl.DocumentRouteElementImpl
DocumentRouteElementImpl.GetIsParentRunningUnrestricted, DocumentRouteElementImpl.SetDocumentOnReadOnlyUnrestrictedSessionRunner
Nested classes/interfaces inherited from interface org.nuxeo.ecm.platform.routing.api.DocumentRouteElement
DocumentRouteElement.ElementLifeCycleState, DocumentRouteElement.ElementLifeCycleTransistion
Nested classes/interfaces inherited from interface org.nuxeo.ecm.platform.routing.core.impl.GraphNode
GraphNode.Button, GraphNode.EscalationRule, GraphNode.Point, GraphNode.State, GraphNode.TaskInfo, GraphNode.Transition
-
Field Summary
Modifier and TypeFieldDescriptionprotected List<GraphNode.EscalationRule>
protected final GraphRouteImpl
protected List<GraphNode.Transition>
To be used through getter.protected GraphNode.State
protected List<GraphNode.Transition>
To be used through getter.protected List<GraphNode.Button>
To be used through getter.protected List<GraphNode.TaskInfo>
Fields inherited from class org.nuxeo.ecm.platform.routing.core.impl.DocumentRouteElementImpl
document, runner
Fields inherited from interface org.nuxeo.ecm.platform.routing.core.impl.GraphNode
MERGE_ALL, MERGE_ONE, NODE_VARIABLE_COMMENT, PROP_ALLOW_TASK_REASSIGNMENT, PROP_BTN_FILTER, PROP_BTN_LABEL, PROP_BTN_NAME, PROP_BTN_VALIDATE, PROP_CANCELED, PROP_COUNT, PROP_ESCALATION_RULE_CHAIN, PROP_ESCALATION_RULE_CONDITION, PROP_ESCALATION_RULE_EXECUTED, PROP_ESCALATION_RULE_ID, PROP_ESCALATION_RULE_LABEL, PROP_ESCALATION_RULE_MULTIPLE_EXECUTION, PROP_ESCALATION_RULES, PROP_EXECUTE_ONLY_FIRST_TRANSITION, PROP_FORK, PROP_HAS_MULTIPLE_TASKS, PROP_HAS_TASK, PROP_INPUT_CHAIN, PROP_KEYVALUE_KEY, PROP_KEYVALUE_VALUE, PROP_LAST_EXECUTION_TIME, PROP_MERGE, PROP_NODE_BUTTON, PROP_NODE_END_DATE, PROP_NODE_ID, PROP_NODE_LAST_ACTOR, PROP_NODE_START_DATE, PROP_NODE_X_COORDINATE, PROP_NODE_Y_COORDINATE, PROP_OUTPUT_CHAIN, PROP_START, PROP_STOP, PROP_SUB_ROUTE_INSTANCE_ID, PROP_SUB_ROUTE_MODEL_EXPR, PROP_SUB_ROUTE_VARS, PROP_TASK_ASSIGNEES, PROP_TASK_ASSIGNEES_PERMISSION, PROP_TASK_ASSIGNEES_VAR, PROP_TASK_BUTTONS, PROP_TASK_DIRECTIVE, PROP_TASK_DOC_TYPE, PROP_TASK_DUE_DATE, PROP_TASK_DUE_DATE_EXPR, PROP_TASK_INFO_ACTOR, PROP_TASK_INFO_COMMENT, PROP_TASK_INFO_ENDED, PROP_TASK_INFO_STATUS, PROP_TASK_INFO_TASK_DOC_ID, PROP_TASK_LAYOUT, PROP_TASK_NOTIFICATION_TEMPLATE, PROP_TASKS_INFO, PROP_TITLE, PROP_TRANS_CHAIN, PROP_TRANS_CONDITION, PROP_TRANS_LABEL, PROP_TRANS_NAME, PROP_TRANS_PATH, PROP_TRANS_RESULT, PROP_TRANS_TARGET, PROP_TRANSITIONS, PROP_VARIABLES_FACET
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
addTaskAssignees
(List<String> taskAssignees) void
addTaskInfo
(String taskId) Persist the info when a new task is created from this nodeboolean
Returns true if tasks created from this node can be reassigned.void
Cancels the sub-route if there is one.protected void
cancelTask
(CoreSession session, String taskId) void
Cancels the tasks not ended on this node.boolean
canMerge()
Checks if the merge is ready to execute (enough input transitions are present).protected List<GraphNode.EscalationRule>
protected List<GraphNode.Transition>
protected List<GraphNode.Button>
Evaluates the task due date from the taskDueDateExpr and sets it as the dueDateprotected List<GraphNode.TaskInfo>
void
ending()
Does bookkeeping at node end.static boolean
protected Date
Deprecated.Evaluates the task assignees from the taskAssigneesVarEvaluates transition conditions and returns the transitions that were true.void
executeChain
(String chainId) Executes an Automation chain in the context of this node.void
executeChain
(String chainId, String transitionId) boolean
When workflow engine runs an exclusive node, it evaluates the transition one by one and stops a soon as one of the transition is evaluated to truevoid
executeTransitionChain
(GraphNode.Transition transition) Executes an Automation chain in the context of this node for a given transitionprotected boolean
getBoolean
(String propertyName) long
Gets the canceled count for this node.Gets all the ended tasks originating from this node.Gets the list of all escalation rules for the nodeprotected OperationContext
getExecutionContext
(CoreSession session) getGraph()
getId()
Get the node id.Get input chain.Gets the input transitions.Gets a map containing the Json formatted variables currently defined on this nodeprotected Calendar
protected String
protected Calendar
Get output chain.Gets the output transitions.Gets all the ended tasks originating from this node that were processed with a status.protected CoreSession
getState()
Get the node state.protected Map<String,
Serializable> protected String
Gets the sub-route model id.Gets the task assigneesGets the permission to the granted to the actors on this task on the document following the workflowGets the task buttonsGets the task directiveGets the due dateGets the task layoutGets all the tasks info for the tasks created from this nodeGets a map containing the variables currently defined on this nodegetWorkflowContextualInfo
(CoreSession session, boolean detached) Gets a map containing the workflow and node variables and workflow documents.protected String
protected String
protected String
protected Calendar
boolean
Checks if this node has created multiple tasks, one for each assignees.boolean
Returns false if all tasks created from this node were ended.boolean
Checks if this node has a sub-route model defined.boolean
hasTask()
Checks it this node has an associated user task.boolean
hasTaskButton
(String name) Has the node the given action.protected void
incrementProp
(String prop) void
initAddInputTransition
(GraphNode.Transition transition) Internal during graph init.boolean
isFork()
Checks if this is a fork node.boolean
isMerge()
Checks if this is a merge node.boolean
isStart()
Checks if this is the start node.boolean
isStop()
Checks if this is a stop node.void
removeTaskInfo
(String taskId) protected void
void
setAllVariables
(Map<String, Object> map, boolean allowGlobalVariablesAssignment, boolean save) Sets the graph and node variables.void
Sets the property button on the node, keeping the id of the last action executed by the user on the associated task if anyvoid
Notes that this node was canceled (increments canceled counter).void
setJSONVariables
(Map<String, String> map) Sets the variables of the workflow based on their JSON representation (especially for scalar lists).void
setLastActor
(String actor) Sets the last actor on a node (user who completed the task).void
setState
(GraphNode.State state) Set the node state.void
setVariable
(String name, String value) Sets the variable on this node if it exists as a Node Variable.void
setVariables
(Map<String, Serializable> map) Sets the node variables.void
starting()
Does bookkeeping at node start.Starts the sub-route on this node.toString()
void
updateTaskInfo
(String taskId, boolean ended, String status, String actor, String comment) Persist these info from the task on the node.protected <T> T
valueOrExpression
(Class<T> klass, String v, OperationContext context, String kind) Methods inherited from class org.nuxeo.ecm.platform.routing.core.impl.DocumentRouteElementImpl
backToReady, cancel, canDeleteStep, canUndoStep, canUpdateStep, canValidateStep, checkLifeCycleState, followTransition, getAttachedDocuments, getDescription, getDocument, getDocumentRoute, getName, getProperty, getTitle, hasPermissionOnDocument, isCanceled, isDone, isDraft, isModifiable, isReady, isRunning, isValidated, resume, run, run, save, setCanceled, setCanDeleteStep, setCanReadStep, setCanUpdateStep, setCanValidateStep, setDone, setPermissionOnDocument, setReadOnly, setReady, setRunning, setValidated, validate
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.nuxeo.ecm.platform.routing.core.impl.GraphNode
getDocument, setAllVariables, setAllVariables
-
Field Details
-
graph
-
localState
-
inputTransitions
To be used through getter. -
outputTransitions
To be used through getter. -
taskButtons
To be used through getter. -
escalationRules
-
tasksInfo
-
-
Constructor Details
-
GraphNodeImpl
-
GraphNodeImpl
- Since:
- 5.7.2
-
-
Method Details
-
getGraph
-
toString
-
getBoolean
-
incrementProp
-
getSession
-
saveDocument
protected void saveDocument() -
getId
Description copied from interface:GraphNode
Get the node id. -
getState
Description copied from interface:GraphNode
Get the node state. -
setState
Description copied from interface:GraphNode
Set the node state. -
isFork
public boolean isFork()Description copied from interface:GraphNode
Checks if this is a fork node. -
isStart
public boolean isStart()Description copied from interface:GraphNode
Checks if this is the start node. -
isStop
public boolean isStop()Description copied from interface:GraphNode
Checks if this is a stop node. -
setCanceled
public void setCanceled()Description copied from interface:GraphNode
Notes that this node was canceled (increments canceled counter).- Specified by:
setCanceled
in interfaceGraphNode
-
getCanceledCount
public long getCanceledCount()Description copied from interface:GraphNode
Gets the canceled count for this node.- Specified by:
getCanceledCount
in interfaceGraphNode
-
isMerge
public boolean isMerge()Description copied from interface:GraphNode
Checks if this is a merge node. -
getInputChain
Description copied from interface:GraphNode
Get input chain.- Specified by:
getInputChain
in interfaceGraphNode
- Returns:
- the input chain
-
getOutputChain
Description copied from interface:GraphNode
Get output chain.- Specified by:
getOutputChain
in interfaceGraphNode
- Returns:
- the output chain
-
hasTask
public boolean hasTask()Description copied from interface:GraphNode
Checks it this node has an associated user task. -
getTaskAssignees
Description copied from interface:GraphNode
Gets the task assignees- Specified by:
getTaskAssignees
in interfaceGraphNode
- Returns:
- the task assignees
-
getTaskAssigneesVar
-
getTaskDueDate
Description copied from interface:GraphNode
Gets the due date- Specified by:
getTaskDueDate
in interfaceGraphNode
-
getTaskDirective
Description copied from interface:GraphNode
Gets the task directive- Specified by:
getTaskDirective
in interfaceGraphNode
-
getTaskAssigneesPermission
Description copied from interface:GraphNode
Gets the permission to the granted to the actors on this task on the document following the workflow- Specified by:
getTaskAssigneesPermission
in interfaceGraphNode
-
getTaskLayout
Description copied from interface:GraphNode
Gets the task layout- Specified by:
getTaskLayout
in interfaceGraphNode
-
getTaskNotificationTemplate
- Specified by:
getTaskNotificationTemplate
in interfaceGraphNode
-
getTaskDueDateExpr
- Specified by:
getTaskDueDateExpr
in interfaceGraphNode
-
starting
public void starting()Description copied from interface:GraphNode
Does bookkeeping at node start. -
ending
public void ending()Description copied from interface:GraphNode
Does bookkeeping at node end. -
getVariables
Description copied from interface:GraphNode
Gets a map containing the variables currently defined on this node- Specified by:
getVariables
in interfaceGraphNode
-
getJsonVariables
Description copied from interface:GraphNode
Gets a map containing the Json formatted variables currently defined on this node- Specified by:
getJsonVariables
in interfaceGraphNode
-
setVariables
Description copied from interface:GraphNode
Sets the node variables.- Specified by:
setVariables
in interfaceGraphNode
- Parameters:
map
- the map of variables
-
setJSONVariables
Description copied from interface:GraphNode
Sets the variables of the workflow based on their JSON representation (especially for scalar lists). For example:Map<String, String> map = new HashMap<>(); map.put("contributors", "[\"John Doe\", \"John Smith\"]"); map.put("title", "Test Title");
- Specified by:
setJSONVariables
in interfaceGraphNode
- Parameters:
map
- the map of variables
-
setAllVariables
public void setAllVariables(Map<String, Object> map, boolean allowGlobalVariablesAssignment, boolean save) Description copied from interface:GraphNode
Sets the graph and node variables.- Specified by:
setAllVariables
in interfaceGraphNode
- Parameters:
map
- the map of variablesallowGlobalVariablesAssignment
- if set to false, throw a DocumentRouteException when trying to set global variables when not supposed tosave
- whether to save the document after setting the variables
-
equality
-
getExecutionContext
-
getWorkflowContextualInfo
Description copied from interface:GraphNode
Gets a map containing the workflow and node variables and workflow documents.- Specified by:
getWorkflowContextualInfo
in interfaceGraphNode
detached
- The documents added into this map can be detached or not
-
getWorkflowInitiator
-
getWorkflowStartTime
-
getWorkflowParentRouteId
-
getWorkflowParentNodeId
-
getNodeStartTime
-
getNodeEndTime
-
getNodeLastActor
-
executeChain
Description copied from interface:GraphNode
Executes an Automation chain in the context of this node.- Specified by:
executeChain
in interfaceGraphNode
- Parameters:
chainId
- the chain- Throws:
DocumentRouteException
-
executeTransitionChain
Description copied from interface:GraphNode
Executes an Automation chain in the context of this node for a given transition- Specified by:
executeTransitionChain
in interfaceGraphNode
- Parameters:
transition
- the transition- Throws:
DocumentRouteException
-
executeChain
- Throws:
DocumentRouteException
-
initAddInputTransition
Description copied from interface:GraphNode
Internal during graph init.- Specified by:
initAddInputTransition
in interfaceGraphNode
-
computeOutputTransitions
-
getOutputTransitions
Description copied from interface:GraphNode
Gets the output transitions.- Specified by:
getOutputTransitions
in interfaceGraphNode
-
evaluateTransitions
Description copied from interface:GraphNode
Evaluates transition conditions and returns the transitions that were true.Transitions are evaluated in the order set on the node when the workflow was designed. Since @5.7.2 if the node has the property "executeOnlyFirstTransition" set to true, only the first transition evaluated to true is returned
- Specified by:
evaluateTransitions
in interfaceGraphNode
- Returns:
- the true transitions
- Throws:
DocumentRouteException
-
evaluateTaskAssignees
Description copied from interface:GraphNode
Evaluates the task assignees from the taskAssigneesVar- Specified by:
evaluateTaskAssignees
in interfaceGraphNode
- Throws:
DocumentRouteException
-
canMerge
public boolean canMerge()Description copied from interface:GraphNode
Checks if the merge is ready to execute (enough input transitions are present). -
getInputTransitions
Description copied from interface:GraphNode
Gets the input transitions.- Specified by:
getInputTransitions
in interfaceGraphNode
-
cancelTasks
public void cancelTasks()Description copied from interface:GraphNode
Cancels the tasks not ended on this node.- Specified by:
cancelTasks
in interfaceGraphNode
-
getTaskButtons
Description copied from interface:GraphNode
Gets the task buttons- Specified by:
getTaskButtons
in interfaceGraphNode
-
computeTaskButtons
-
setButton
Description copied from interface:GraphNode
Sets the property button on the node, keeping the id of the last action executed by the user on the associated task if any -
setLastActor
Description copied from interface:GraphNode
Sets the last actor on a node (user who completed the task).- Specified by:
setLastActor
in interfaceGraphNode
- Parameters:
actor
- the user id
-
addTaskAssignees
-
getTaskDocType
- Specified by:
getTaskDocType
in interfaceGraphNode
- Returns:
- the taskDocType. If none is specified, the default task type is returned.
-
evaluateDueDate
- Throws:
DocumentRouteException
-
computeTaskDueDate
Description copied from interface:GraphNode
Evaluates the task due date from the taskDueDateExpr and sets it as the dueDate- Specified by:
computeTaskDueDate
in interfaceGraphNode
- Throws:
DocumentRouteException
-
executeOnlyFirstTransition
public boolean executeOnlyFirstTransition()Description copied from interface:GraphNode
When workflow engine runs an exclusive node, it evaluates the transition one by one and stops a soon as one of the transition is evaluated to true- Specified by:
executeOnlyFirstTransition
in interfaceGraphNode
-
hasSubRoute
Description copied from interface:GraphNode
Checks if this node has a sub-route model defined.- Specified by:
hasSubRoute
in interfaceGraphNode
- Returns:
true
if there is a sub-route- Throws:
DocumentRouteException
-
getSubRouteModelId
Description copied from interface:GraphNode
Gets the sub-route model id.If this is present, then this node will be suspended while the sub-route is run. When the sub-route ends, this node will resume.
- Specified by:
getSubRouteModelId
in interfaceGraphNode
- Returns:
- the sub-route id, or
null
if none is defined - Throws:
DocumentRouteException
-
getSubRouteInstanceId
-
startSubRoute
Description copied from interface:GraphNode
Starts the sub-route on this node.- Specified by:
startSubRoute
in interfaceGraphNode
- Returns:
- the sub-route
- Throws:
DocumentRouteException
-
getSubRouteInitialVariables
-
valueOrExpression
protected <T> T valueOrExpression(Class<T> klass, String v, OperationContext context, String kind) throws DocumentRouteException - Throws:
DocumentRouteException
-
cancelSubRoute
Description copied from interface:GraphNode
Cancels the sub-route if there is one.- Specified by:
cancelSubRoute
in interfaceGraphNode
- Throws:
DocumentRouteException
-
computeEscalationRules
-
getEscalationRules
Description copied from interface:GraphNode
Gets the list of all escalation rules for the node- Specified by:
getEscalationRules
in interfaceGraphNode
-
evaluateEscalationRules
Deprecated.Description copied from interface:GraphNode
Evaluates the rules for the escalation rules and returns the ones to be executed. The rules already executed and not having the property multipleExecution = true are also ignored- Specified by:
evaluateEscalationRules
in interfaceGraphNode
-
hasMultipleTasks
public boolean hasMultipleTasks()Description copied from interface:GraphNode
Checks if this node has created multiple tasks, one for each assignees.- Specified by:
hasMultipleTasks
in interfaceGraphNode
-
computeTasksInfo
-
getTasksInfo
Description copied from interface:GraphNode
Gets all the tasks info for the tasks created from this node- Specified by:
getTasksInfo
in interfaceGraphNode
-
addTaskInfo
Description copied from interface:GraphNode
Persist the info when a new task is created from this node- Specified by:
addTaskInfo
in interfaceGraphNode
-
removeTaskInfo
- Specified by:
removeTaskInfo
in interfaceGraphNode
-
updateTaskInfo
public void updateTaskInfo(String taskId, boolean ended, String status, String actor, String comment) Description copied from interface:GraphNode
Persist these info from the task on the node. Status is the id of the button clicked to end the task by the actor.- Specified by:
updateTaskInfo
in interfaceGraphNode
-
getEndedTasksInfo
Description copied from interface:GraphNode
Gets all the ended tasks originating from this node. This also counts the canceled tasks.- Specified by:
getEndedTasksInfo
in interfaceGraphNode
-
hasOpenTasks
public boolean hasOpenTasks()Description copied from interface:GraphNode
Returns false if all tasks created from this node were ended.- Specified by:
hasOpenTasks
in interfaceGraphNode
-
getProcessedTasksInfo
Description copied from interface:GraphNode
Gets all the ended tasks originating from this node that were processed with a status. Doesn't count the canceled tasks.- Specified by:
getProcessedTasksInfo
in interfaceGraphNode
-
allowTaskReassignment
public boolean allowTaskReassignment()Description copied from interface:GraphNode
Returns true if tasks created from this node can be reassigned.- Specified by:
allowTaskReassignment
in interfaceGraphNode
-
cancelTask
- Throws:
DocumentRouteException
-
setVariable
Description copied from interface:GraphNode
Sets the variable on this node if it exists as a Node Variable.- Specified by:
setVariable
in interfaceGraphNode
-
hasTaskButton
Description copied from interface:GraphNode
Has the node the given action.- Specified by:
hasTaskButton
in interfaceGraphNode
- Since:
- 7.2
-