diff --git a/src/main/java/org/jenkinsci/plugins/workflow/graphanalysis/ChunkFinder.java b/src/main/java/org/jenkinsci/plugins/workflow/graphanalysis/ChunkFinder.java index 7a696cbb..0a3da2ad 100644 --- a/src/main/java/org/jenkinsci/plugins/workflow/graphanalysis/ChunkFinder.java +++ b/src/main/java/org/jenkinsci/plugins/workflow/graphanalysis/ChunkFinder.java @@ -10,9 +10,9 @@ *
This is used to define a linear "chunk" from the graph of FlowNodes returned by a {@link ForkScanner}, after it applies ordering. *
This is done by invoking {@link ForkScanner#visitSimpleChunks(SimpleChunkVisitor, ChunkFinder)}. *
Your {@link SimpleChunkVisitor} will receive callbacks about chunk boundaries on the basis of the ChunkFinder. - * It is responsible for tracking the state based on events fired + * It is responsible for tracking the state based on events fired. * - *
Common uses: + *
Common uses: *
We use this because every plugin has a different way of storing info about the nodes. + *
Common container interface for a series of {@link FlowNode}s with a logical start and end. + *
We use this because every plugin has a different way of storing info about the nodes. * - *
Common uses: + *
Common uses: *
A {@link ForkScanner#visitSimpleChunks(SimpleChunkVisitor, ChunkFinder)} creates these FlowChunks using a {@link ChunkFinder} to define the chunk boundaries. + *
A {@link ForkScanner#visitSimpleChunks(SimpleChunkVisitor, ChunkFinder)} creates these FlowChunks using a {@link ChunkFinder} to define the chunk boundaries. * *
We walk through the {@link FlowNode}s in reverse order from end to start, so end callbacks are invoked before * their corresponding start callbacks. * *
Callback types - *
There are two kinds of callbacks - chunk callbacks, and parallel structure callbacks + *
There are two kinds of callbacks - chunk callbacks, and parallel structure callbacks. *
Chunk Callbacks: *
Chunk callback rules: + *
Chunk callback rules: *
Parallel Structure Callbacks: Zero, One, or (in niche cases) several different ones may be invoked for any given FlowNode
+ *Parallel Structure Callbacks: Zero, One, or (in niche cases) several different ones may be invoked for any given FlowNode. *
These are used to provide awareness of parallel/branching structures if they need special handling. *
The cases where a node triggers multiple callbacks are where it is one of several forked branches of an incomplete parallel * block. In this case it can be a parallelBranchEnd, also potentially a parallelEnd, plus whatever role that node might normally * have (such as the start of another parallel). * *
Implementations get to decide how to use and handle chunks, and should be stateful. - *
- * This object must have the column.groovy. This view
+ * This object must have the column.groovy
. This view
* is called for each cell of this column. The {@link FlowNode} object
* is passed in the "node" variable. The view should render
* a {@code
- * This object may have an additional columnHeader.groovy. The default column header
+ * This object may have an additional columnHeader.groovy
. The default column header
* will render {@link #getColumnCaption()}.
*
* @author Kohsuke Kawaguchi