Interface IWorkflowVariableHandler


  • public interface IWorkflowVariableHandler
    Interface for the variable handler used during execution of the workflow. During workflow execution, nodes may access data via variables. This contains methods for retrieving and storing variables.
    Since:
    7.0.0
    Author:
    XIMA MEDIA GmbH
    • Method Detail

      • accessAtPath

        @Nullable
        List<?> accessAtPath​(@Nullable
                             Object base,
                             @Nullable
                             String jsonPath)
        Access a value of the given object at a certain JSON path. Note that while simple JSON path only result in a single value, some JSON paths may match multiple values. This method always returns a list of all matching values. If the JSON path only matches a single value, this returns a list with one item.

        For example:

         // => ["a"]
         accessAtPath(["a", "b"], "[0]")
        
         // => [ ["a", "b"] ]
         accessAtPath([ ["a", "b"], ["c", "d"] ], "[0]")
        
         // => [ "b" ]
         accessAtPath([ ["a", "b"], ["c", "d"] ], "[0][1]")
        
         // => [ 0 ]
         accessAtPath({"foo": {"bar": 0}, "baz": 1}, "foo.bar")
        
         // => [ 0 ]
         accessAtPath({"foo": {"bar": 0}, "baz": 1}, "foo.bar")
        
         // => [ "c", "d" ]
         accessAtPath([ ["a", "b"] , ["c", "d"] ], "[1][*]")
         
        Parameters:
        base - Base object where to start. If null, an empty list is returned.
        jsonPath - Path to access on the result. If null or empty, the base value is returned.
        Returns:
        A list containing all values matching the given JSON path.
      • getCurrentLoopIndex

        @Nonnull
        int[] getCurrentLoopIndex()
        Finds the current nested loop index. When only one loop is active, this returns a single number, e.g. [0] for the first iteration, [1] for the second iteration etc. When multiple loops are nested, this returns a list of indices, with one indices entry for each loop, e.g. [2,1,3] for the 3rd iteration of the first loop, the 2nd iteration of the second loop, and the 4th iteration of the third loop.
        Returns:
        The current multi loop index, as determined by the calls to loopStart() and loopNext(). Empty array when no loop is currently active. Should be treated as read-only, modifications to this array are not reflected.
        Since:
        8.2.0
      • getDeclaredCurrentAttachmentsForNode

        @Nullable
        IWorkflowAttachmentValue getDeclaredCurrentAttachmentsForNode​(@Nonnull
                                                                      WorkflowNode node)
        Finds the current attachments provided by the node while it is being executed, see also handler.getCurrentAttachmentValueDescriptor(). When the node is not being executed currently or does not have any attachments, this returns an empty attachment value, but never null.
        Parameters:
        node - Node for which to find the current attachments.
        Returns:
        Attachments provided of the given node if it is being executed, or an empty attachment value otherwise.
        Since:
        8.2.0
      • getDeclaredCurrentFilesForNode

        @Nullable
        IWorkflowFileValue getDeclaredCurrentFilesForNode​(@Nonnull
                                                          WorkflowNode node)
        Finds the current files provided by the node while it is being executed, see also handler.getCurrentFileValueDescriptor(). When the node is not being executed currently or does not have any files, this returns an empty file value, but never null.
        Parameters:
        node - Node for which to find the current files.
        Returns:
        Files provided of the given node if it is being executed, or an empty file value otherwise.
        Since:
        8.2.0
      • getDeclaredCurrentValueForNode

        @Nullable
        Object getDeclaredCurrentValueForNode​(@Nonnull
                                              WorkflowNode node)
        Finds the current value provided by the node while it is being executed, see also handler.getCurrentValueDescriptor(). When the node is not being executed currently or does not provide any value, this returns null.
        Parameters:
        node - Node for which to find the current value.
        Returns:
        Value provided of the given node if it is being executed, or null otherwise.
        Since:
        8.2.0
      • getDeclaredSuccessValuesForNode

        @Nonnull
        IMultiDimensionalReadOnlyList<IWorkflowNodeResult> getDeclaredSuccessValuesForNode​(@Nonnull
                                                                                           WorkflowNode node)
        Finds all results for the given node, see also handler.getSuccessValueDescriptor().. A node may be executed multiple times when placed inside a loop. Note that loop can be nested. When the node was not executed yet, this returns null.
        Parameters:
        node - A node for which to retrieve the result.
        Returns:
        All results that were obtained when the node was executed. When the node was executed multiple times, returns the results in the order of the individual executions. Do not attempt to modify this list.
        Since:
        8.1.0
        See Also:
        , to find the nodes for which to obtain the result.
      • getException

        @Nullable
        NodeThrewException getException​(int index)
        Returns the exception at the given index in the exception stack.

        An exception can be caught via try-catch-blocks. The exception stack keeps track of the exception that was caught by the catch-block. When a catch block contains another try-catch-block, the stack contains a list of all exceptions from all currently active catch-blocks

        Parameters:
        index - Index of the exception to access. 0 corresponds to the most recent catch-block, 1 corresponds to the outer catch block, 2 corresponds to the outer catch block of the outer catch block etc. You can also use negative indices to refer to elements from the beginning of the stack: -1 corresponds to the outermost catch block.
        Returns:
        The exception at the given index, or null when the index is out of range.
      • getExecutionDataForCurrentNodeStack

        @Nonnull
        <T extends INodeExecutionDataList<T> getExecutionDataForCurrentNodeStack​(@Nonnull
                                                                                   Class<T> type)
        Each node may provide additional data via IWorkflowExecutor.provideExecutionData(WorkflowNode, INodeExecutionData) that is available while the node is executed. Custom logic may make use of this data to provide different behavior depending on the currently executed nodes.
        Parameters:
        type - Desired type of the node data to return.
        Returns:
        The data associated with the IWorkflowNodeLocator.currents(), in that order, filtered to instances of the given type. The list is read-only and cannot not be modified.
        Since:
        8.2.0
      • getExecutionDataForNode

        @Nonnull
        List<INodeExecutionData> getExecutionDataForNode​(@Nonnull
                                                         WorkflowNode node)
        Each node may provide additional data via IWorkflowExecutor.provideExecutionData(WorkflowNode, INodeExecutionData) that is available while the node is executed. Custom logic may make use of this data to provide different behavior depending on the currently executed nodes.
        Parameters:
        node - Node for which to get its data.
        Returns:
        The data associated with the node, or empty when no data is available. The list is read-only and cannot not be modified.
        Since:
        8.2.0
      • getExecutionDataForNode

        @Nonnull
        default <T extends INodeExecutionDataIterable<T> getExecutionDataForNode​(@Nonnull
                                                                                   WorkflowNode node,
                                                                                   @Nonnull
                                                                                   Class<T> type)
        Same as getExecutionDataForNode(WorkflowNode), but filters the results to the given type.
        Type Parameters:
        T - Type of the node data to return.
        Parameters:
        node - Node for which to get its data.
        type - Desired type of the node data to return.
        Returns:
        The data associated with the node, or empty when no data is available.
        Since:
        8.2.0
      • getTriggerData

        @Nullable
        Object getTriggerData​(@Nullable
                              String path)
        Each trigger can provide a set of data that will be available when the task is executed. The data can be a JSON like object with nested objects and arrays. This method finds the data at the given JSON path, if it exists.
        Parameters:
        path - Optional JSON path to access, e.g. button[0].name. If null or empty, the root value is returned.
        Returns:
        The value at the given path. null when the trigger provides no such data.
      • getTriggerFiles

        IWorkflowFileValue getTriggerFiles()
        Each trigger can provide a set of files that will be available when the task is executed. This method returns the files provided by the trigger.
        Returns:
        The files provided by the trigger. null when the trigger provides no files.
      • hasExecutionDataForNode

        boolean hasExecutionDataForNode​(WorkflowNode node)
        Each node may provide additional data via IWorkflowExecutor.provideExecutionData(WorkflowNode, INodeExecutionData) that is available while the node is being executed. Custom logic may make use of this data to provide different behavior depending on the currently executed nodes.
        Parameters:
        node - Node for which to check if data is present.
        Returns:
        Whether data associated with the node, or null when no data is available.
        Since:
        8.2.0