Uses of Class
org.jenkinsci.plugins.workflow.graph.FlowNode
Packages that use FlowNode
Package
Description
Provides a library of methods to work with and analyze the graph of
FlowNodes 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
Methods in org.jenkinsci.plugins.workflow.actions that return FlowNodeModifier and TypeMethodDescriptionstatic FlowNodeErrorAction.findOrigin(Throwable error, FlowExecution execution) Attempts to locate the first node of a build which threw an error.Methods in org.jenkinsci.plugins.workflow.actions that return types with arguments of type FlowNodeModifier and TypeMethodDescriptionabstract AnnotatedLargeText<? extends FlowNode>LogAction.getLogText()Access the log file and expose it to the UI with the progressive logging functionalityMethods in org.jenkinsci.plugins.workflow.actions with parameters of type FlowNodeModifier and TypeMethodDescriptionArgumentsAction.getArguments(FlowNode n) Get the map of arguments supplied to instantiate theSteprun in theFlowNodegiven 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.NotStoredReasonor null values removedstatic QueueItemAction.QueueStateQueueItemAction.getNodeState(FlowNode node) Get the currentQueueItemAction.QueueStatefor aFlowNode.static Queue.ItemQueueItemAction.getQueueItem(FlowNode node) ArgumentsAction.getResolvedArguments(FlowNode n) LikeArgumentsAction.getArguments(FlowNode)but attempting to resolve actual classes.static longTimingAction.getStartTime(FlowNode flowNode) static StringArgumentsAction.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 StringTagsAction.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 booleanNotExecutedNodeAction.isExecuted(FlowNode node) voidvoidCalled byFlowActionStorage.loadActions(FlowNode)when actions get loaded from persistent storage. -
Uses of FlowNode in org.jenkinsci.plugins.workflow.flow
Methods in org.jenkinsci.plugins.workflow.flow that return FlowNodeMethods in org.jenkinsci.plugins.workflow.flow that return types with arguments of type FlowNodeModifier and TypeMethodDescriptionFlowExecution.getCurrentHeads()In the current flow graph, return all the "head" nodes where the graph is still growing.Methods in org.jenkinsci.plugins.workflow.flow with parameters of type FlowNodeModifier and TypeMethodDescriptionFlowExecution.findAllEnclosingBlockStarts(FlowNode node) FlowExecution.findEnclosingBlockStart(FlowNode node) booleanabstract booleanFlowExecution.isCurrentHead(FlowNode n) Short forgetCurrentHeads().contains(n)but more efficient.FlowExecution.iterateEnclosingBlocks(FlowNode node) voidFlowExecutionshould 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
Subclasses of FlowNode in org.jenkinsci.plugins.workflow.graphModifier and TypeClassDescriptionclassFlowNode that has no further FlowNodes inside.classBlockEndNode<START extends BlockStartNode>End of a block.classTogether withBlockEndNode, designates some kind of nested structure that contains "children", which areFlowNodes that are in betweenBlockStartNodeandBlockEndNodeclassEnd of the entire program.classStart of the entire flow.classDeprecated.unusedclassDeprecated.unusedMethods in org.jenkinsci.plugins.workflow.graph that return FlowNodeMethods in org.jenkinsci.plugins.workflow.graph that return types with arguments of type FlowNodeModifier 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.Methods in org.jenkinsci.plugins.workflow.graph with parameters of type FlowNodeModifier and TypeMethodDescriptionvoidGraphLookupView.findAllEnclosingBlockStarts(FlowNode node) Return all enclosing block start nodes, as withGraphLookupView.findEnclosingBlockStart(FlowNode).StandardGraphLookupView.findAllEnclosingBlockStarts(FlowNode node) GraphLookupView.findEnclosingBlockStart(FlowNode node) Find the immediately enclosingBlockStartNodearound aFlowNodeStandardGraphLookupView.findEnclosingBlockStart(FlowNode node) booleanTests if the node is a currently running head, or the start of a block that has not completed executingbooleanGraphLookupView.iterateEnclosingBlocks(FlowNode node) Provide anIterableover 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 forFlowNodeto load its actions.voidUpdate with a new node added to the flowgraphvoidFlowActionStorage.saveActions(FlowNode node, List<Action> actions) Service forFlowNodeto load its actions.Method parameters in org.jenkinsci.plugins.workflow.graph with type arguments of type FlowNodeConstructors in org.jenkinsci.plugins.workflow.graph with parameters of type FlowNodeModifierConstructorDescriptionprotectedAtomNode(FlowExecution exec, String id, FlowNode... parents) BlockEndNode(FlowExecution exec, String id, START start, FlowNode... parents) protectedBlockStartNode(FlowExecution exec, String id, FlowNode... parents) EnclosingBlocksIterable(GraphLookupView view, FlowNode node) FlowEndNode(FlowExecution exec, String id, FlowStartNode start, Result result, FlowNode... parents) protectedFlowNode(FlowExecution exec, String id, FlowNode... parents) ForkNode(FlowExecution storage, String id, FlowNode... parents) Deprecated.Constructor parameters in org.jenkinsci.plugins.workflow.graph with type arguments of type FlowNodeModifierConstructorDescriptionBlockEndNode(FlowExecution exec, String id, START start, List<FlowNode> parents) protectedBlockStartNode(FlowExecution exec, String id, List<FlowNode> parents) protectedFlowNode(FlowExecution exec, String id, List<FlowNode> parents) Deprecated. -
Uses of FlowNode in org.jenkinsci.plugins.workflow.graphanalysis
Fields in org.jenkinsci.plugins.workflow.graphanalysis declared as FlowNodeModifier and TypeFieldDescriptionprotected FlowNodeMemoryFlowChunk.firstNodeprotected FlowNodeMemoryFlowChunk.lastNodeprotected FlowNodeAbstractFlowScanner.myCurrentprotected FlowNodeAbstractFlowScanner.myNextprotected FlowNodeMemoryFlowChunk.nodeAfterprotected FlowNodeMemoryFlowChunk.nodeBeforeFields in org.jenkinsci.plugins.workflow.graphanalysis with type parameters of type FlowNodeModifier and TypeFieldDescriptionstatic final Comparator<FlowNode>FlowScanningUtils.ID_ORDER_COMPARATORstatic final com.google.common.base.Predicate<FlowNode>FlowScanningUtils.MATCH_BLOCK_STARTprotected Collection<FlowNode>AbstractFlowScanner.myBlackListprotected ArrayDeque<FlowNode>DepthFirstScanner.queuestatic final Comparator<FlowNode>FlowScanningUtils.TIME_ORDER_COMPARATORSorts flownodes putting the one begun last (oldest startTime) at the end, with null times last because likely they represent the newest nodes with aTimingActionnot attached yet.DepthFirstScanner.visitedMethods in org.jenkinsci.plugins.workflow.graphanalysis that return FlowNodeModifier 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 FlowNodeLinearBlockHoppingScanner.jumpBlockScan(FlowNode node, Collection<FlowNode> blacklistNodes) Keeps jumping over blocks until we hit the first node preceding a blockAbstractFlowScanner.next()protected abstract FlowNodeAbstractFlowScanner.next(FlowNode current, Collection<FlowNode> blackList) Actual meat of the iteration, get the next node to visit, using and updating state as neededprotected FlowNodeDepthFirstScanner.next(FlowNode current, Collection<FlowNode> blackList) ForkScanner.next()protected FlowNodeForkScanner.next(FlowNode current, Collection<FlowNode> blackList) protected FlowNodeLinearBlockHoppingScanner.next(FlowNode current, Collection<FlowNode> blackList) protected FlowNodeLinearScanner.next(FlowNode current, Collection<FlowNode> blackList) Methods in org.jenkinsci.plugins.workflow.graphanalysis that return types with arguments of type FlowNodeModifier 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 allFlowNodes 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 ofFlowNodes 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 ofFlowNodes 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()Methods in org.jenkinsci.plugins.workflow.graphanalysis with parameters of type FlowNodeModifier and TypeMethodDescriptionbooleanbooleanvoidSimpleChunkVisitor.atomNode(FlowNode before, FlowNode atomNode, FlowNode after, ForkScanner scan) Called for a flownode neither start nor end.voidStandardChunkVisitor.atomNode(FlowNode before, FlowNode atomNode, FlowNode after, ForkScanner scan) Extend me to do something with nodes inside a chunkvoidSimpleChunkVisitor.chunkEnd(FlowNode endNode, FlowNode afterChunk, ForkScanner scanner) Called when hitting the end of a chunk.voidStandardChunkVisitor.chunkEnd(FlowNode endNode, FlowNode afterChunk, ForkScanner scanner) voidSimpleChunkVisitor.chunkStart(FlowNode startNode, FlowNode beforeBlock, ForkScanner scanner) Called when hitting the start of a chunk.voidStandardChunkVisitor.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 denyListbooleanBlockChunkFinder.isChunkEnd(FlowNode current, FlowNode previous) booleanChunkFinder.isChunkEnd(FlowNode current, FlowNode previous) Test if the current node is the end of a chunk (inclusive)booleanLabelledChunkFinder.isChunkEnd(FlowNode current, FlowNode previous) End is where the previous node is a chunk start or this is aBlockEndNodewhoseBlockStartNodehas a label actionbooleanBlockChunkFinder.isChunkStart(FlowNode current, FlowNode previous) booleanChunkFinder.isChunkStart(FlowNode current, FlowNode previous) Test if the current node is the start of a new chunk (inclusive)booleanLabelledChunkFinder.isChunkStart(FlowNode current, FlowNode previous) Start is anywhere with aLabelActionstatic booleanForkScanner.isParallelEnd(FlowNode f) static booleanForkScanner.isParallelStart(FlowNode f) protected FlowNodeLinearBlockHoppingScanner.jumpBlockScan(FlowNode node, Collection<FlowNode> blacklistNodes) Keeps jumping over blocks until we hit the first node preceding a blockprotected abstract FlowNodeAbstractFlowScanner.next(FlowNode current, Collection<FlowNode> blackList) Actual meat of the iteration, get the next node to visit, using and updating state as neededprotected FlowNodeDepthFirstScanner.next(FlowNode current, Collection<FlowNode> blackList) protected FlowNodeForkScanner.next(FlowNode current, Collection<FlowNode> blackList) protected FlowNodeLinearBlockHoppingScanner.next(FlowNode current, Collection<FlowNode> blackList) protected FlowNodeLinearScanner.next(FlowNode current, Collection<FlowNode> blackList) voidSimpleChunkVisitor.parallelBranchEnd(FlowNode parallelStartNode, FlowNode branchEndNode, ForkScanner scanner) Hit the end start of a parallel branchvoidStandardChunkVisitor.parallelBranchEnd(FlowNode parallelStartNode, FlowNode branchEndNode, ForkScanner scanner) voidSimpleChunkVisitor.parallelBranchStart(FlowNode parallelStartNode, FlowNode branchStartNode, ForkScanner scanner) Hit the start of a parallel branchvoidStandardChunkVisitor.parallelBranchStart(FlowNode parallelStartNode, FlowNode branchStartNode, ForkScanner scanner) voidSimpleChunkVisitor.parallelEnd(FlowNode parallelStartNode, FlowNode parallelEndNode, ForkScanner scanner) Notifies that we've seen the end of a parallel blockvoidStandardChunkVisitor.parallelEnd(FlowNode parallelStartNode, FlowNode parallelEndNode, ForkScanner scanner) voidSimpleChunkVisitor.parallelStart(FlowNode parallelStartNode, FlowNode branchNode, ForkScanner scanner) Notifies that we've hit the start of a parallel block (the point where it branches out).voidStandardChunkVisitor.parallelStart(FlowNode parallelStartNode, FlowNode branchNode, ForkScanner scanner) protected booleanDepthFirstScanner.possibleParallelStart(FlowNode f) voidMemoryFlowChunk.setFirstNode(FlowNode firstNode) voidMemoryFlowChunk.setLastNode(FlowNode lastNode) voidMemoryFlowChunk.setNodeAfter(FlowNode nodeAfter) voidMemoryFlowChunk.setNodeBefore(FlowNode nodeBefore) booleanHelper: version ofAbstractFlowScanner.setup(Collection, Collection)where we don't have any nodes to denylist and have just a single headbooleanAbstractFlowScanner.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 booleanDepthFirstScanner.testCandidate(FlowNode f, Collection<FlowNode> blackList) booleanVisit the flow node, and indicate if we should continue analysisMethod parameters in org.jenkinsci.plugins.workflow.graphanalysis with type arguments of type FlowNodeModifier 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 ofFlowNodes 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 ofFlowNodes 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 ofFlowNodes 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 ofFlowNodes 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 FlowNodeLinearBlockHoppingScanner.jumpBlockScan(FlowNode node, Collection<FlowNode> blacklistNodes) Keeps jumping over blocks until we hit the first node preceding a blockprotected abstract FlowNodeAbstractFlowScanner.next(FlowNode current, Collection<FlowNode> blackList) Actual meat of the iteration, get the next node to visit, using and updating state as neededprotected FlowNodeDepthFirstScanner.next(FlowNode current, Collection<FlowNode> blackList) protected FlowNodeForkScanner.next(FlowNode current, Collection<FlowNode> blackList) protected FlowNodeLinearBlockHoppingScanner.next(FlowNode current, Collection<FlowNode> blackList) protected FlowNodeLinearScanner.next(FlowNode current, Collection<FlowNode> blackList) protected abstract voidAbstractFlowScanner.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.myBlackListremoved - none of the filteredHeads are nullprotected voidDepthFirstScanner.setHeads(Collection<FlowNode> heads) protected voidForkScanner.setHeads(Collection<FlowNode> heads) protected voidLinearBlockHoppingScanner.setHeads(Collection<FlowNode> heads) protected voidLinearScanner.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.myBlackListremoved - none of the filteredHeads are nullstatic voidForkScanner.setParallelStartPredicate(com.google.common.base.Predicate<FlowNode> pred) Deprecated.booleanAbstractFlowScanner.setup(Collection<FlowNode> heads) Helper: version ofAbstractFlowScanner.setup(Collection, Collection)where we don't have any nodes to denylistbooleanAbstractFlowScanner.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).booleanAbstractFlowScanner.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 headbooleanLinearBlockHoppingScanner.setup(Collection<FlowNode> heads, Collection<FlowNode> blackList) booleanLinearScanner.setup(Collection<FlowNode> heads) Deprecated.booleanLinearScanner.setup(Collection<FlowNode> heads, Collection<FlowNode> blackList) Deprecated.protected booleanDepthFirstScanner.testCandidate(FlowNode f, Collection<FlowNode> blackList) voidAbstractFlowScanner.visitAll(Collection<FlowNode> heads, Collection<FlowNode> blackList, FlowNodeVisitor visitor) Given aFlowNodeVisitor, invokeFlowNodeVisitor.visit(FlowNode)on each node and halt early if it returns false.voidAbstractFlowScanner.visitAll(Collection<FlowNode> heads, FlowNodeVisitor visitor) Syntactic sugar forAbstractFlowScanner.visitAll(Collection, Collection, FlowNodeVisitor)where we don't denylist any nodesvoidLinearScanner.visitAll(Collection<FlowNode> heads, Collection<FlowNode> blackList, FlowNodeVisitor visitor) Given aFlowNodeVisitor, invokeFlowNodeVisitor.visit(FlowNode)on each node and halt early if it returns false.voidLinearScanner.visitAll(Collection<FlowNode> heads, FlowNodeVisitor visitor) Syntactic sugar forAbstractFlowScanner.visitAll(Collection, Collection, FlowNodeVisitor)where we don't denylist any nodesstatic voidForkScanner.visitSimpleChunks(Collection<FlowNode> heads, Collection<FlowNode> blacklist, SimpleChunkVisitor visitor, ChunkFinder finder) static voidForkScanner.visitSimpleChunks(Collection<FlowNode> heads, SimpleChunkVisitor visitor, ChunkFinder finder) Constructors in org.jenkinsci.plugins.workflow.graphanalysis with parameters of type FlowNodeModifierConstructorDescriptionMemoryFlowChunk(FlowNode before, FlowNode firstNode, FlowNode lastNode, FlowNode nodeAfter) ParallelMemoryFlowChunk(FlowNode firstNode, FlowNode lastNode) ParallelMemoryFlowChunk(FlowNode nodeBefore, FlowNode firstNode, FlowNode lastNode, FlowNode nodeAfter) Constructor parameters in org.jenkinsci.plugins.workflow.graphanalysis with type arguments of type FlowNodeModifierConstructorDescriptionForkScanner(Collection<FlowNode> heads) ForkScanner(Collection<FlowNode> heads, Collection<FlowNode> blackList) -
Uses of FlowNode in org.jenkinsci.plugins.workflow.log
Methods in org.jenkinsci.plugins.workflow.log that return types with arguments of type FlowNodeModifier and TypeMethodDescriptionProvides an alternate way of retrieving output from a build.Methods in org.jenkinsci.plugins.workflow.log with parameters of type FlowNodeModifier 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.