Uses of Class
org.jenkinsci.plugins.workflow.graph.FlowNode
Package
Description
Provides a library of methods to work with and analyze the graph of
FlowNode
s produced from a pipeline execution.APIs supporting the production and retrieval of log messages associated with Pipeline builds (
FlowExecutionOwner
) and individual steps (FlowNode
).-
Uses of FlowNode in org.jenkinsci.plugins.workflow.actions
Modifier and TypeMethodDescriptionstatic FlowNode
ErrorAction.findOrigin
(Throwable error, FlowExecution execution) Attempts to locate the first node of a build which threw an error.Modifier and TypeMethodDescriptionabstract AnnotatedLargeText<? extends FlowNode>
LogAction.getLogText()
Access the log file and expose it to the UI with the progressive logging functionalityModifier and TypeMethodDescriptionArgumentsAction.getArguments
(FlowNode n) Get the map of arguments supplied to instantiate theStep
run in theFlowNode
given or empty if the arguments were not stored or the FlowNode was not a step.ArgumentsAction.getFilteredArguments
(FlowNode n) Get just the fully stored, non-null arguments This means the arguments with allArgumentsAction.NotStoredReason
or null values removedstatic QueueItemAction.QueueState
QueueItemAction.getNodeState
(FlowNode node) Get the currentQueueItemAction.QueueState
for aFlowNode
.static Queue.Item
QueueItemAction.getQueueItem
(FlowNode node) ArgumentsAction.getResolvedArguments
(FlowNode n) LikeArgumentsAction.getArguments(FlowNode)
but attempting to resolve actual classes.static long
TimingAction.getStartTime
(FlowNode flowNode) static String
ArgumentsAction.getStepArgumentsAsString
(FlowNode n) Return a tidy string description for the step arguments, or null if none is present or we can't make one SeeStepDescriptor.argumentsToString(Map)
for the rulesGet the set of tag-value mappings for a nodestatic String
TagsAction.getTagValue
(FlowNode node, String tag) Get the value for a tag on a flownode, null if not set (convenience) Input is CheckForNull so you can directly pass in values without nullchecks upfront.static boolean
NotExecutedNodeAction.isExecuted
(FlowNode node) void
void
Called byFlowActionStorage.loadActions(FlowNode)
when actions get loaded from persistent storage. -
Uses of FlowNode in org.jenkinsci.plugins.workflow.flow
Modifier and TypeMethodDescriptionFlowExecution.getCurrentHeads()
In the current flow graph, return all the "head" nodes where the graph is still growing.Modifier and TypeMethodDescriptionFlowExecution.findAllEnclosingBlockStarts
(FlowNode node) FlowExecution.findEnclosingBlockStart
(FlowNode node) boolean
abstract boolean
FlowExecution.isCurrentHead
(FlowNode n) Short forgetCurrentHeads().contains(n)
but more efficient.FlowExecution.iterateEnclosingBlocks
(FlowNode node) void
FlowExecution
should batch up changes to a group and call this once, as opposed to call this for every new node added. -
Uses of FlowNode in org.jenkinsci.plugins.workflow.graph
Modifier and TypeClassDescriptionclass
FlowNode that has no further FlowNodes inside.class
BlockEndNode<START extends BlockStartNode>
End of a block.class
Together withBlockEndNode
, designates some kind of nested structure that contains "children", which areFlowNode
s that are in betweenBlockStartNode
andBlockEndNode
class
End of the entire program.class
Start of the entire flow.class
Deprecated.unusedclass
Deprecated.unusedModifier and TypeMethodDescriptionFlowNode.getParents()
Returns a read-only view of parents.FlowStartNode.getParents()
Deprecated.Why are you calling a method that always return empty list?FlowGraphWalker.iterator()
UnlikeIterable.iterator()
, this may be iterated only once.Modifier and TypeMethodDescriptionvoid
GraphLookupView.findAllEnclosingBlockStarts
(FlowNode node) Return all enclosing block start nodes, as withGraphLookupView.findEnclosingBlockStart(FlowNode)
.StandardGraphLookupView.findAllEnclosingBlockStarts
(FlowNode node) GraphLookupView.findEnclosingBlockStart
(FlowNode node) Find the immediately enclosingBlockStartNode
around aFlowNode
StandardGraphLookupView.findEnclosingBlockStart
(FlowNode node) boolean
Tests if the node is a currently running head, or the start of a block that has not completed executingboolean
GraphLookupView.iterateEnclosingBlocks
(FlowNode node) Provide anIterable
over all enclosing blocks, which can be used similarly toGraphLookupView.findAllEnclosingBlockStarts(FlowNode)
but does lazy fetches rather than materializing a full result.StandardGraphLookupView.iterateEnclosingBlocks
(FlowNode node) FlowActionStorage.loadActions
(FlowNode node) Service forFlowNode
to load its actions.void
Update with a new node added to the flowgraphvoid
FlowActionStorage.saveActions
(FlowNode node, List<Action> actions) Service forFlowNode
to load its actions.ModifierConstructorDescriptionprotected
AtomNode
(FlowExecution exec, String id, FlowNode... parents) BlockEndNode
(FlowExecution exec, String id, START start, FlowNode... parents) protected
BlockStartNode
(FlowExecution exec, String id, FlowNode... parents) EnclosingBlocksIterable
(GraphLookupView view, FlowNode node) FlowEndNode
(FlowExecution exec, String id, FlowStartNode start, Result result, FlowNode... parents) protected
FlowNode
(FlowExecution exec, String id, FlowNode... parents) ForkNode
(FlowExecution storage, String id, FlowNode... parents) Deprecated.ModifierConstructorDescriptionBlockEndNode
(FlowExecution exec, String id, START start, List<FlowNode> parents) protected
BlockStartNode
(FlowExecution exec, String id, List<FlowNode> parents) protected
FlowNode
(FlowExecution exec, String id, List<FlowNode> parents) Deprecated. -
Uses of FlowNode in org.jenkinsci.plugins.workflow.graphanalysis
Modifier and TypeFieldDescriptionprotected FlowNode
MemoryFlowChunk.firstNode
protected FlowNode
MemoryFlowChunk.lastNode
protected FlowNode
AbstractFlowScanner.myCurrent
protected FlowNode
AbstractFlowScanner.myNext
protected FlowNode
MemoryFlowChunk.nodeAfter
protected FlowNode
MemoryFlowChunk.nodeBefore
Modifier and TypeFieldDescriptionstatic final Comparator<FlowNode>
FlowScanningUtils.ID_ORDER_COMPARATOR
static final com.google.common.base.Predicate<FlowNode>
FlowScanningUtils.MATCH_BLOCK_START
protected Collection<FlowNode>
AbstractFlowScanner.myBlackList
protected ArrayDeque<FlowNode>
DepthFirstScanner.queue
static final Comparator<FlowNode>
FlowScanningUtils.TIME_ORDER_COMPARATOR
Sorts flownodes putting the one begun last (oldest startTime) at the end, with null times last because likely they represent the newest nodes with aTimingAction
not attached yet.DepthFirstScanner.visited
Modifier and TypeMethodDescriptionAbstractFlowScanner.findFirstMatch
(Collection<FlowNode> heads, com.google.common.base.Predicate<FlowNode> matchPredicate) Syntactic sugar forAbstractFlowScanner.findFirstMatch(Collection, Collection, Predicate)
where there is no denyListAbstractFlowScanner.findFirstMatch
(Collection<FlowNode> heads, Collection<FlowNode> blackListNodes, com.google.common.base.Predicate<FlowNode> matchCondition) Find the first FlowNode within the iteration order matching a given condition Includes null-checking on arguments to allow directly calling with unchecked inputs (simplifies use).AbstractFlowScanner.findFirstMatch
(FlowExecution exec, com.google.common.base.Predicate<FlowNode> matchPredicate) Syntactic sugar forAbstractFlowScanner.findFirstMatch(Collection, Collection, Predicate)
usingFlowExecution.getCurrentHeads()
to get heads and no denyListAbstractFlowScanner.findFirstMatch
(FlowNode head, com.google.common.base.Predicate<FlowNode> matchPredicate) Syntactic sugar forAbstractFlowScanner.findFirstMatch(Collection, Collection, Predicate)
where there is a single head and no denyListLinearScanner.findFirstMatch
(Collection<FlowNode> heads, com.google.common.base.Predicate<FlowNode> matchPredicate) Deprecated.LinearScanner.findFirstMatch
(Collection<FlowNode> heads, Collection<FlowNode> blackListNodes, com.google.common.base.Predicate<FlowNode> matchCondition) Find the first FlowNode within the iteration order matching a given condition Includes null-checking on arguments to allow directly calling with unchecked inputs (simplifies use).LinearScanner.findFirstMatch
(FlowExecution exec, com.google.common.base.Predicate<FlowNode> matchPredicate) Deprecated.unsafe to callForkScanner.getCurrentParallelStartNode()
Return the node that begins the current parallel head, if we are known to be in a parallel blockFlowChunk.getFirstNode()
MemoryFlowChunk.getFirstNode()
FlowChunk.getLastNode()
MemoryFlowChunk.getLastNode()
FlowChunkWithContext.getNodeAfter()
Return the node after this chunk, or null if it is the endMemoryFlowChunk.getNodeAfter()
FlowChunkWithContext.getNodeBefore()
Return the node before this chunk, or null if it is the beginningMemoryFlowChunk.getNodeBefore()
protected FlowNode
LinearBlockHoppingScanner.jumpBlockScan
(FlowNode node, Collection<FlowNode> blacklistNodes) Keeps jumping over blocks until we hit the first node preceding a blockAbstractFlowScanner.next()
protected abstract FlowNode
AbstractFlowScanner.next
(FlowNode current, Collection<FlowNode> blackList) Actual meat of the iteration, get the next node to visit, using and updating state as neededprotected FlowNode
DepthFirstScanner.next
(FlowNode current, Collection<FlowNode> blackList) ForkScanner.next()
protected FlowNode
ForkScanner.next
(FlowNode current, Collection<FlowNode> blackList) protected FlowNode
LinearBlockHoppingScanner.next
(FlowNode current, Collection<FlowNode> blackList) protected FlowNode
LinearScanner.next
(FlowNode current, Collection<FlowNode> blackList) Modifier and TypeMethodDescriptionAbstractFlowScanner.allNodes
(Collection<FlowNode> heads) Convenience method to get the list all flownodes in the iterator order.AbstractFlowScanner.allNodes
(FlowExecution exec) Convenience method to get the list of allFlowNode
s for the execution, in iterator order.protected Collection<FlowNode>
AbstractFlowScanner.convertToFastCheckable
(Collection<FlowNode> nodeCollection) Helper: convert stop nodes to a collection that can efficiently be checked for membership, handling null if neededstatic Filterator<FlowNode>
FlowScanningUtils.fetchEnclosingBlocks
(FlowNode f) Deprecated.Expose a filtered view of this FlowScanner's output.AbstractFlowScanner.filteredNodes
(Collection<FlowNode> heads, com.google.common.base.Predicate<FlowNode> matchPredicate) Syntactic sugar forAbstractFlowScanner.filteredNodes(Collection, Collection, Predicate)
with no denyList nodesAbstractFlowScanner.filteredNodes
(Collection<FlowNode> heads, Collection<FlowNode> blackList, com.google.common.base.Predicate<FlowNode> matchCondition) Return a filtered list ofFlowNode
s matching a condition, in the order encountered.AbstractFlowScanner.filteredNodes
(FlowExecution exec, com.google.common.base.Predicate<FlowNode> matchPredicate) AbstractFlowScanner.filteredNodes
(FlowNode head, com.google.common.base.Predicate<FlowNode> matchPredicate) Syntactic sugar forAbstractFlowScanner.filteredNodes(Collection, Collection, Predicate)
with a single head and no denyList nodesLinearScanner.filteredNodes
(Collection<FlowNode> heads, com.google.common.base.Predicate<FlowNode> matchPredicate) Deprecated.LinearScanner.filteredNodes
(Collection<FlowNode> heads, Collection<FlowNode> blackList, com.google.common.base.Predicate<FlowNode> matchCondition) Return a filtered list ofFlowNode
s matching a condition, in the order encountered.static com.google.common.base.Predicate<FlowNode>
FlowScanningUtils.hasActionPredicate
(Class<? extends Action> actionClass) Create a predicate that will match on all FlowNodes having a specific action presentAbstractFlowScanner.iterator()
Modifier and TypeMethodDescriptionboolean
boolean
void
SimpleChunkVisitor.atomNode
(FlowNode before, FlowNode atomNode, FlowNode after, ForkScanner scan) Called for a flownode neither start nor end.void
StandardChunkVisitor.atomNode
(FlowNode before, FlowNode atomNode, FlowNode after, ForkScanner scan) Extend me to do something with nodes inside a chunkvoid
SimpleChunkVisitor.chunkEnd
(FlowNode endNode, FlowNode afterChunk, ForkScanner scanner) Called when hitting the end of a chunk.void
StandardChunkVisitor.chunkEnd
(FlowNode endNode, FlowNode afterChunk, ForkScanner scanner) void
SimpleChunkVisitor.chunkStart
(FlowNode startNode, FlowNode beforeBlock, ForkScanner scanner) Called when hitting the start of a chunk.void
StandardChunkVisitor.chunkStart
(FlowNode startNode, FlowNode beforeBlock, ForkScanner scanner) static Filterator<FlowNode>
FlowScanningUtils.fetchEnclosingBlocks
(FlowNode f) Deprecated.AbstractFlowScanner.filteredNodes
(FlowNode head, com.google.common.base.Predicate<FlowNode> matchPredicate) Syntactic sugar forAbstractFlowScanner.filteredNodes(Collection, Collection, Predicate)
with a single head and no denyList nodesAbstractFlowScanner.findFirstMatch
(FlowNode head, com.google.common.base.Predicate<FlowNode> matchPredicate) Syntactic sugar forAbstractFlowScanner.findFirstMatch(Collection, Collection, Predicate)
where there is a single head and no denyListboolean
BlockChunkFinder.isChunkEnd
(FlowNode current, FlowNode previous) boolean
ChunkFinder.isChunkEnd
(FlowNode current, FlowNode previous) Test if the current node is the end of a chunk (inclusive)boolean
LabelledChunkFinder.isChunkEnd
(FlowNode current, FlowNode previous) End is where the previous node is a chunk start or this is aBlockEndNode
whoseBlockStartNode
has a label actionboolean
BlockChunkFinder.isChunkStart
(FlowNode current, FlowNode previous) boolean
ChunkFinder.isChunkStart
(FlowNode current, FlowNode previous) Test if the current node is the start of a new chunk (inclusive)boolean
LabelledChunkFinder.isChunkStart
(FlowNode current, FlowNode previous) Start is anywhere with aLabelAction
static boolean
ForkScanner.isParallelEnd
(FlowNode f) static boolean
ForkScanner.isParallelStart
(FlowNode f) protected FlowNode
LinearBlockHoppingScanner.jumpBlockScan
(FlowNode node, Collection<FlowNode> blacklistNodes) Keeps jumping over blocks until we hit the first node preceding a blockprotected abstract FlowNode
AbstractFlowScanner.next
(FlowNode current, Collection<FlowNode> blackList) Actual meat of the iteration, get the next node to visit, using and updating state as neededprotected FlowNode
DepthFirstScanner.next
(FlowNode current, Collection<FlowNode> blackList) protected FlowNode
ForkScanner.next
(FlowNode current, Collection<FlowNode> blackList) protected FlowNode
LinearBlockHoppingScanner.next
(FlowNode current, Collection<FlowNode> blackList) protected FlowNode
LinearScanner.next
(FlowNode current, Collection<FlowNode> blackList) void
SimpleChunkVisitor.parallelBranchEnd
(FlowNode parallelStartNode, FlowNode branchEndNode, ForkScanner scanner) Hit the end start of a parallel branchvoid
StandardChunkVisitor.parallelBranchEnd
(FlowNode parallelStartNode, FlowNode branchEndNode, ForkScanner scanner) void
SimpleChunkVisitor.parallelBranchStart
(FlowNode parallelStartNode, FlowNode branchStartNode, ForkScanner scanner) Hit the start of a parallel branchvoid
StandardChunkVisitor.parallelBranchStart
(FlowNode parallelStartNode, FlowNode branchStartNode, ForkScanner scanner) void
SimpleChunkVisitor.parallelEnd
(FlowNode parallelStartNode, FlowNode parallelEndNode, ForkScanner scanner) Notifies that we've seen the end of a parallel blockvoid
StandardChunkVisitor.parallelEnd
(FlowNode parallelStartNode, FlowNode parallelEndNode, ForkScanner scanner) void
SimpleChunkVisitor.parallelStart
(FlowNode parallelStartNode, FlowNode branchNode, ForkScanner scanner) Notifies that we've hit the start of a parallel block (the point where it branches out).void
StandardChunkVisitor.parallelStart
(FlowNode parallelStartNode, FlowNode branchNode, ForkScanner scanner) protected boolean
DepthFirstScanner.possibleParallelStart
(FlowNode f) void
MemoryFlowChunk.setFirstNode
(FlowNode firstNode) void
MemoryFlowChunk.setLastNode
(FlowNode lastNode) void
MemoryFlowChunk.setNodeAfter
(FlowNode nodeAfter) void
MemoryFlowChunk.setNodeBefore
(FlowNode nodeBefore) boolean
Helper: version ofAbstractFlowScanner.setup(Collection, Collection)
where we don't have any nodes to denylist and have just a single headboolean
AbstractFlowScanner.setup
(FlowNode head, Collection<FlowNode> blackList) Helper: version ofAbstractFlowScanner.setup(Collection, Collection)
where we don't have any nodes to denylist, and have just a single headprotected boolean
DepthFirstScanner.testCandidate
(FlowNode f, Collection<FlowNode> blackList) boolean
Visit the flow node, and indicate if we should continue analysisModifier and TypeMethodDescriptionAbstractFlowScanner.allNodes
(Collection<FlowNode> heads) Convenience method to get the list all flownodes in the iterator order.protected Collection<FlowNode>
AbstractFlowScanner.convertToFastCheckable
(Collection<FlowNode> nodeCollection) Helper: convert stop nodes to a collection that can efficiently be checked for membership, handling null if neededExpose a filtered view of this FlowScanner's output.AbstractFlowScanner.filteredNodes
(Collection<FlowNode> heads, com.google.common.base.Predicate<FlowNode> matchPredicate) Syntactic sugar forAbstractFlowScanner.filteredNodes(Collection, Collection, Predicate)
with no denyList nodesAbstractFlowScanner.filteredNodes
(Collection<FlowNode> heads, com.google.common.base.Predicate<FlowNode> matchPredicate) Syntactic sugar forAbstractFlowScanner.filteredNodes(Collection, Collection, Predicate)
with no denyList nodesAbstractFlowScanner.filteredNodes
(Collection<FlowNode> heads, Collection<FlowNode> blackList, com.google.common.base.Predicate<FlowNode> matchCondition) Return a filtered list ofFlowNode
s matching a condition, in the order encountered.AbstractFlowScanner.filteredNodes
(Collection<FlowNode> heads, Collection<FlowNode> blackList, com.google.common.base.Predicate<FlowNode> matchCondition) Return a filtered list ofFlowNode
s matching a condition, in the order encountered.AbstractFlowScanner.filteredNodes
(FlowExecution exec, com.google.common.base.Predicate<FlowNode> matchPredicate) AbstractFlowScanner.filteredNodes
(FlowNode head, com.google.common.base.Predicate<FlowNode> matchPredicate) Syntactic sugar forAbstractFlowScanner.filteredNodes(Collection, Collection, Predicate)
with a single head and no denyList nodesLinearScanner.filteredNodes
(Collection<FlowNode> heads, com.google.common.base.Predicate<FlowNode> matchPredicate) Deprecated.LinearScanner.filteredNodes
(Collection<FlowNode> heads, com.google.common.base.Predicate<FlowNode> matchPredicate) Deprecated.LinearScanner.filteredNodes
(Collection<FlowNode> heads, Collection<FlowNode> blackList, com.google.common.base.Predicate<FlowNode> matchCondition) Return a filtered list ofFlowNode
s matching a condition, in the order encountered.LinearScanner.filteredNodes
(Collection<FlowNode> heads, Collection<FlowNode> blackList, com.google.common.base.Predicate<FlowNode> matchCondition) Return a filtered list ofFlowNode
s matching a condition, in the order encountered.AbstractFlowScanner.findFirstMatch
(Collection<FlowNode> heads, com.google.common.base.Predicate<FlowNode> matchPredicate) Syntactic sugar forAbstractFlowScanner.findFirstMatch(Collection, Collection, Predicate)
where there is no denyListAbstractFlowScanner.findFirstMatch
(Collection<FlowNode> heads, com.google.common.base.Predicate<FlowNode> matchPredicate) Syntactic sugar forAbstractFlowScanner.findFirstMatch(Collection, Collection, Predicate)
where there is no denyListAbstractFlowScanner.findFirstMatch
(Collection<FlowNode> heads, Collection<FlowNode> blackListNodes, com.google.common.base.Predicate<FlowNode> matchCondition) Find the first FlowNode within the iteration order matching a given condition Includes null-checking on arguments to allow directly calling with unchecked inputs (simplifies use).AbstractFlowScanner.findFirstMatch
(Collection<FlowNode> heads, Collection<FlowNode> blackListNodes, com.google.common.base.Predicate<FlowNode> matchCondition) Find the first FlowNode within the iteration order matching a given condition Includes null-checking on arguments to allow directly calling with unchecked inputs (simplifies use).AbstractFlowScanner.findFirstMatch
(FlowExecution exec, com.google.common.base.Predicate<FlowNode> matchPredicate) Syntactic sugar forAbstractFlowScanner.findFirstMatch(Collection, Collection, Predicate)
usingFlowExecution.getCurrentHeads()
to get heads and no denyListAbstractFlowScanner.findFirstMatch
(FlowNode head, com.google.common.base.Predicate<FlowNode> matchPredicate) Syntactic sugar forAbstractFlowScanner.findFirstMatch(Collection, Collection, Predicate)
where there is a single head and no denyListLinearScanner.findFirstMatch
(Collection<FlowNode> heads, com.google.common.base.Predicate<FlowNode> matchPredicate) Deprecated.LinearScanner.findFirstMatch
(Collection<FlowNode> heads, com.google.common.base.Predicate<FlowNode> matchPredicate) Deprecated.LinearScanner.findFirstMatch
(Collection<FlowNode> heads, Collection<FlowNode> blackListNodes, com.google.common.base.Predicate<FlowNode> matchCondition) Find the first FlowNode within the iteration order matching a given condition Includes null-checking on arguments to allow directly calling with unchecked inputs (simplifies use).LinearScanner.findFirstMatch
(Collection<FlowNode> heads, Collection<FlowNode> blackListNodes, com.google.common.base.Predicate<FlowNode> matchCondition) Find the first FlowNode within the iteration order matching a given condition Includes null-checking on arguments to allow directly calling with unchecked inputs (simplifies use).LinearScanner.findFirstMatch
(FlowExecution exec, com.google.common.base.Predicate<FlowNode> matchPredicate) Deprecated.unsafe to callprotected FlowNode
LinearBlockHoppingScanner.jumpBlockScan
(FlowNode node, Collection<FlowNode> blacklistNodes) Keeps jumping over blocks until we hit the first node preceding a blockprotected abstract FlowNode
AbstractFlowScanner.next
(FlowNode current, Collection<FlowNode> blackList) Actual meat of the iteration, get the next node to visit, using and updating state as neededprotected FlowNode
DepthFirstScanner.next
(FlowNode current, Collection<FlowNode> blackList) protected FlowNode
ForkScanner.next
(FlowNode current, Collection<FlowNode> blackList) protected FlowNode
LinearBlockHoppingScanner.next
(FlowNode current, Collection<FlowNode> blackList) protected FlowNode
LinearScanner.next
(FlowNode current, Collection<FlowNode> blackList) protected abstract void
AbstractFlowScanner.setHeads
(Collection<FlowNode> filteredHeads) Set up to begin flow scanning using the filteredHeads as starting points This method makes several assumptions: -AbstractFlowScanner.reset()
has already been invoked to reset state - filteredHeads has already had any points inAbstractFlowScanner.myBlackList
removed - none of the filteredHeads are nullprotected void
DepthFirstScanner.setHeads
(Collection<FlowNode> heads) protected void
ForkScanner.setHeads
(Collection<FlowNode> heads) protected void
LinearBlockHoppingScanner.setHeads
(Collection<FlowNode> heads) protected void
LinearScanner.setHeads
(Collection<FlowNode> heads) Set up to begin flow scanning using the filteredHeads as starting points This method makes several assumptions: -AbstractFlowScanner.reset()
has already been invoked to reset state - filteredHeads has already had any points inAbstractFlowScanner.myBlackList
removed - none of the filteredHeads are nullstatic void
ForkScanner.setParallelStartPredicate
(com.google.common.base.Predicate<FlowNode> pred) Deprecated.boolean
AbstractFlowScanner.setup
(Collection<FlowNode> heads) Helper: version ofAbstractFlowScanner.setup(Collection, Collection)
where we don't have any nodes to denylistboolean
AbstractFlowScanner.setup
(Collection<FlowNode> heads, Collection<FlowNode> blackList) Set up for iteration/analysis on a graph of nodes, initializing the internal state Includes null-checking on arguments to allow directly calling with unchecked inputs (simplifies use).boolean
AbstractFlowScanner.setup
(FlowNode head, Collection<FlowNode> blackList) Helper: version ofAbstractFlowScanner.setup(Collection, Collection)
where we don't have any nodes to denylist, and have just a single headboolean
LinearBlockHoppingScanner.setup
(Collection<FlowNode> heads, Collection<FlowNode> blackList) boolean
LinearScanner.setup
(Collection<FlowNode> heads) Deprecated.boolean
LinearScanner.setup
(Collection<FlowNode> heads, Collection<FlowNode> blackList) Deprecated.protected boolean
DepthFirstScanner.testCandidate
(FlowNode f, Collection<FlowNode> blackList) void
AbstractFlowScanner.visitAll
(Collection<FlowNode> heads, Collection<FlowNode> blackList, FlowNodeVisitor visitor) Given aFlowNodeVisitor
, invokeFlowNodeVisitor.visit(FlowNode)
on each node and halt early if it returns false.void
AbstractFlowScanner.visitAll
(Collection<FlowNode> heads, FlowNodeVisitor visitor) Syntactic sugar forAbstractFlowScanner.visitAll(Collection, Collection, FlowNodeVisitor)
where we don't denylist any nodesvoid
LinearScanner.visitAll
(Collection<FlowNode> heads, Collection<FlowNode> blackList, FlowNodeVisitor visitor) Given aFlowNodeVisitor
, invokeFlowNodeVisitor.visit(FlowNode)
on each node and halt early if it returns false.void
LinearScanner.visitAll
(Collection<FlowNode> heads, FlowNodeVisitor visitor) Syntactic sugar forAbstractFlowScanner.visitAll(Collection, Collection, FlowNodeVisitor)
where we don't denylist any nodesstatic void
ForkScanner.visitSimpleChunks
(Collection<FlowNode> heads, Collection<FlowNode> blacklist, SimpleChunkVisitor visitor, ChunkFinder finder) static void
ForkScanner.visitSimpleChunks
(Collection<FlowNode> heads, SimpleChunkVisitor visitor, ChunkFinder finder) ModifierConstructorDescriptionMemoryFlowChunk
(FlowNode before, FlowNode firstNode, FlowNode lastNode, FlowNode nodeAfter) ParallelMemoryFlowChunk
(FlowNode firstNode, FlowNode lastNode) ParallelMemoryFlowChunk
(FlowNode nodeBefore, FlowNode firstNode, FlowNode lastNode, FlowNode nodeAfter) ModifierConstructorDescriptionForkScanner
(Collection<FlowNode> heads) ForkScanner
(Collection<FlowNode> heads, Collection<FlowNode> blackList) -
Uses of FlowNode in org.jenkinsci.plugins.workflow.log
Modifier and TypeMethodDescriptionProvides an alternate way of retrieving output from a build.Modifier and TypeMethodDescriptionBrokenLogStorage.nodeListener
(FlowNode node) FileLogStorage.nodeListener
(FlowNode node) LogStorage.nodeListener
(FlowNode node) Provides an alternate way of emitting output from a node (such as a step).Provides an alternate way of retrieving output from a build.