Enum OperationType

    • Enum Constant Detail

      • MODAL

        public static final OperationType MODAL
        The primary goal of a modal operation is to perform a complex set of data changes/operations with an isolation/blocking from other processes changes using the stable state of the system data. The modal operation may be used to implement composite operations like data merge, refactoring, etc
        The modal operation creates a separate asynchronous computation/orchestration pipeline. This allows clients to execute other complex operations (exclusive included) in a separate context independently of the state being already collected within the main pipeline. All derived data compuations/orchestrated operations that are scheduled in the main pipeline are blocked until the finish of the modal operation.
        Only a single modal operation may be active per project pipeline. Modal operation waits for all other operations to be finished before the start.
        The modal operation may be finished before its internal operations are completed. After finishing of the modal operation all remaining data tasks and operations are being reintegrated back in the main pipeline.
        In case if an exclusive/half exclusive operation is being run at the moment of a modal operation closure, the main pipeline active stage is being synchronized with the state of the modal pipeline at the moment of a closure to support seamless continuation of an half-/exclusive operation execution
      • EXCLUSIVE

        public static final OperationType EXCLUSIVE
        The operation blocks the pipeline in the following manner:
        • All async. data computations are being frozen until the end of the operation
        • All operations except BACKGROUND ones are being frozen as well
        • BACKGROUND operations of the stages prior the target stage of the running exclusive operations are allowed to be executed to support the minimal responsiveness of a user interface/etc. BACKGROUND operations of later stages are blocked as well (as they aren't met the conditions of execution)
        The EXCLUSIVE operation may be started only in case if:
        • All data computations on the previous stages of the pipeline are completed
        • All exclusive or half-exclusive operations are finished/not started yet
        • All background operations of previous stages are either started or finished
        The system performs following actions with a new data computations or new operations during an active exclusive operation:
        • All new data computations are being placed in the pipeline and frozen immediatelly
        • All new exclusive or half-exclusive operations are being placed in the pipeline and frozen immediatelly
        • All background operations of previous stages are being placed into the pipeline and being executed normally
        • All background operations of the same and next stages are being placed into the pipeline and being frozen immediatelly
      • HALF_EXCLUSIVE

        public static final OperationType HALF_EXCLUSIVE
        The operation is being launched at the target stage of the pipeline. After launch it blocks:
        • All other scheduled exclusive/half-exclusive operations from launch
        • All pipeline stages (including stage, data and operations) which preceed the target stage of the operation. This is done to ensure the temporary data integrity for the operation.
        • To support the system responsiveness, the half-exclusive operation doesn't block the BACKGROUND-level orchestrated operations on any stages. Please note that data-changing BACKGROUND operations may still affect the data state of the system
        • Prevents all stage locks from being activated until the finish of the operation

        The operation doesn't block further stages of the pipeline (including the one the operation is scheduled to) from computing. The operation isn't required to be computed completelly before the pipeline is switched to the next stage.
      • BACKGROUND

        public static final OperationType BACKGROUND
        The operation is being launched at the target stage of the pipeline without any other prerequisites. The operation isn't required to be computed completelly before the pipeline is switched to the next stage.
        The operation is permitted to run on stages preceeding the locked stage as well as on the locked stage itself
    • Method Detail

      • values

        public static OperationType[] values()
        Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:
        for (OperationType c : OperationType.values())
            System.out.println(c);
        
        Returns:
        an array containing the constants of this enum type, in the order they are declared
      • valueOf

        public static OperationType valueOf​(String name)
        Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
        Parameters:
        name - the name of the enum constant to be returned.
        Returns:
        the enum constant with the specified name
        Throws:
        IllegalArgumentException - if this enum type has no constant with the specified name
        NullPointerException - if the argument is null