Interface IWorkflowNodeFlowAnalyzer<TData>

    • Method Detail

      • createFlowGraph

        <TElement extends IWorkflowNodeTypeProviding & IActiveFlagProvidingIFlowGraphEndPoints createFlowGraph​(ICreateFlowGraphParams<TData,​TElement> params)
                                                                                                          throws WorkflowAnalysisException
        This method is used to create the flow graph that represents the control flow of a workflow task, and to determine the end points of the node when executed.

        The flow graph is a directed graph. Each node in the control flow graph corresponds to a WorkflowNode The graph has an edge from node1 to node2 iff it is possible that node1 transfers control directly to node2; i.e. iff there exists at least one code path where node2 immediately succeeds node1.

        Regarding end point, see the documentation of IFlowGraphEndPoints.getNormalEndPoints() and IFlowGraphEndPoints.getThrowingEndPoints() for more details.

        This method is not pure and must have side-effects. It is responsible for

        1. calling createFlowGraph (or one of its variants) on all of its children (if applicable);
        2. calling connect (or one of its variants); and
        3. returning the set of normal and throwing end points of the node.

        This method must return the set of all nodes (including the children, grand-children etc. of this node) that represent the normal and throwing end points when the node is executed. These throwing end points are used for connecting this node to other siblings and parents. See the documentation of IFlowGraphEndPoints.getNormalEndPoints() and IFlowGraphEndPoints.getThrowingEndPoints() for more details.

        Type Parameters:
        TElement - The type of the node elements on which the analysis is performed. This type may be different depending on whether the analysis is performed on the backend data model WorkflowNode or the frontend view model.
        Parameters:
        params - The node to analyze and the current analysis context.
        Returns:
        The set of all end points of the given node. Use ICreateFlowGraphContext#endPoints and its variants to create this return value. See the documentation of IFlowGraphEndPoints.getNormalEndPoints() and IFlowGraphEndPoints.getThrowingEndPoints() for more details.
        Throws:
        WorkflowAnalysisException - May be thrown when an unhandled exception occurred during the analysis. If this exception is thrown, the entire analysis is cancelled and the exception is propagated up. You should only throw this exception yourself if encountering an illegal state that would render the analysis invalid.