Class Saga


  • public final class Saga
    extends java.lang.Object
    This class implements the logic to execute compensation operations that is often required in Saga applications. The following is a skeleton to show of how it is supposed to be used in workflow code:
    
     Saga saga = new Saga(options);
     try {
       String r = activity.foo();
       saga.addCompensation(activity::cleanupFoo, arg2, r);
       Promise r2 = Async.function(activity::bar);
       r2.thenApply(r->saga.addCompensation(activity.cleanupBar(r));
       ...
       useR2(r2.get());
     } catch (Exception e) {
        saga.compensate();
        // Other error handling if needed.
     }
     
    • Constructor Summary

      Constructors 
      Constructor Description
      Saga​(Saga.Options options)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addCompensation​(Functions.Func<?> operation)
      Add compensation operation for saga.
      <A1> void addCompensation​(Functions.Func1<A1,​?> operation, A1 arg1)
      Add compensation operation for saga.
      <A1,​A2>
      void
      addCompensation​(Functions.Func2<A1,​A2,​?> operation, A1 arg1, A2 arg2)
      Add compensation operation for saga.
      <A1,​A2,​A3>
      void
      addCompensation​(Functions.Func3<A1,​A2,​A3,​?> operation, A1 arg1, A2 arg2, A3 arg3)
      Add compensation operation for saga.
      <A1,​A2,​A3,​A4>
      void
      addCompensation​(Functions.Func4<A1,​A2,​A3,​A4,​?> operation, A1 arg1, A2 arg2, A3 arg3, A4 arg4)
      Add compensation operation for saga.
      <A1,​A2,​A3,​A4,​A5>
      void
      addCompensation​(Functions.Func5<A1,​A2,​A3,​A4,​A5,​?> operation, A1 arg1, A2 arg2, A3 arg3, A4 arg4, A5 arg5)
      Add compensation operation for saga.
      <A1,​A2,​A3,​A4,​A5,​A6>
      void
      addCompensation​(Functions.Func6<A1,​A2,​A3,​A4,​A5,​A6,​?> operation, A1 arg1, A2 arg2, A3 arg3, A4 arg4, A5 arg5, A6 arg6)
      Add compensation operation for saga.
      void addCompensation​(Functions.Proc operation)
      Add compensation operation for saga.
      <A1> void addCompensation​(Functions.Proc1<A1> operation, A1 arg1)
      Add compensation operation for saga.
      <A1,​A2>
      void
      addCompensation​(Functions.Proc2<A1,​A2> operation, A1 arg1, A2 arg2)
      Add compensation operation for saga.
      <A1,​A2,​A3>
      void
      addCompensation​(Functions.Proc3<A1,​A2,​A3> operation, A1 arg1, A2 arg2, A3 arg3)
      Add compensation operation for saga.
      <A1,​A2,​A3,​A4>
      void
      addCompensation​(Functions.Proc4<A1,​A2,​A3,​A4> operation, A1 arg1, A2 arg2, A3 arg3, A4 arg4)
      Add compensation operation for saga.
      <A1,​A2,​A3,​A4,​A5>
      void
      addCompensation​(Functions.Proc5<A1,​A2,​A3,​A4,​A5> operation, A1 arg1, A2 arg2, A3 arg3, A4 arg4, A5 arg5)
      Add compensation operation for saga.
      <A1,​A2,​A3,​A4,​A5,​A6>
      void
      addCompensation​(Functions.Proc6<A1,​A2,​A3,​A4,​A5,​A6> operation, A1 arg1, A2 arg2, A3 arg3, A4 arg4, A5 arg5, A6 arg6)
      Add compensation operation for saga.
      void compensate()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • compensate

        public void compensate()
      • addCompensation

        public void addCompensation​(Functions.Proc operation)
        Add compensation operation for saga.
        Parameters:
        operation - to be executed during compensation.
      • addCompensation

        public <A1> void addCompensation​(Functions.Proc1<A1> operation,
                                         A1 arg1)
        Add compensation operation for saga.
        Parameters:
        operation - to be executed during compensation.
        arg1 - first operation function parameter
      • addCompensation

        public <A1,​A2> void addCompensation​(Functions.Proc2<A1,​A2> operation,
                                                  A1 arg1,
                                                  A2 arg2)
        Add compensation operation for saga.
        Parameters:
        operation - to be executed during compensation.
        arg1 - first operation function parameter
        arg2 - second operation function parameter
      • addCompensation

        public <A1,​A2,​A3> void addCompensation​(Functions.Proc3<A1,​A2,​A3> operation,
                                                           A1 arg1,
                                                           A2 arg2,
                                                           A3 arg3)
        Add compensation operation for saga.
        Parameters:
        operation - to be executed during compensation.
        arg1 - first operation function parameter
        arg2 - second operation function parameter
        arg3 - third operation function parameter
      • addCompensation

        public <A1,​A2,​A3,​A4> void addCompensation​(Functions.Proc4<A1,​A2,​A3,​A4> operation,
                                                                    A1 arg1,
                                                                    A2 arg2,
                                                                    A3 arg3,
                                                                    A4 arg4)
        Add compensation operation for saga.
        Parameters:
        operation - to be executed during compensation.
        arg1 - first operation function parameter
        arg2 - second operation function parameter
        arg3 - third operation function parameter
        arg4 - fourth operation function parameter
      • addCompensation

        public <A1,​A2,​A3,​A4,​A5> void addCompensation​(Functions.Proc5<A1,​A2,​A3,​A4,​A5> operation,
                                                                             A1 arg1,
                                                                             A2 arg2,
                                                                             A3 arg3,
                                                                             A4 arg4,
                                                                             A5 arg5)
        Add compensation operation for saga.
        Parameters:
        operation - to be executed during compensation.
        arg1 - first operation function parameter
        arg2 - second operation function parameter
        arg3 - third operation function parameter
        arg4 - fourth operation function parameter
        arg5 - fifth operation function parameter
      • addCompensation

        public <A1,​A2,​A3,​A4,​A5,​A6> void addCompensation​(Functions.Proc6<A1,​A2,​A3,​A4,​A5,​A6> operation,
                                                                                      A1 arg1,
                                                                                      A2 arg2,
                                                                                      A3 arg3,
                                                                                      A4 arg4,
                                                                                      A5 arg5,
                                                                                      A6 arg6)
        Add compensation operation for saga.
        Parameters:
        operation - to be executed during compensation.
        arg1 - first operation function parameter
        arg2 - second operation function parameter
        arg3 - third operation function parameter
        arg4 - fourth operation function parameter
        arg5 - fifth operation function parameter
        arg6 - sixth operation function parameter
      • addCompensation

        public void addCompensation​(Functions.Func<?> operation)
        Add compensation operation for saga.
        Parameters:
        operation - to be executed during compensation.
      • addCompensation

        public <A1> void addCompensation​(Functions.Func1<A1,​?> operation,
                                         A1 arg1)
        Add compensation operation for saga.
        Parameters:
        operation - to be executed during compensation.
        arg1 - first operation function parameter
      • addCompensation

        public <A1,​A2> void addCompensation​(Functions.Func2<A1,​A2,​?> operation,
                                                  A1 arg1,
                                                  A2 arg2)
        Add compensation operation for saga.
        Parameters:
        operation - to be executed during compensation.
        arg1 - first operation function parameter
        arg2 - second operation function parameter
      • addCompensation

        public <A1,​A2,​A3> void addCompensation​(Functions.Func3<A1,​A2,​A3,​?> operation,
                                                           A1 arg1,
                                                           A2 arg2,
                                                           A3 arg3)
        Add compensation operation for saga.
        Parameters:
        operation - to be executed during compensation.
        arg1 - first operation function parameter
        arg2 - second operation function parameter
        arg3 - third operation function parameter
      • addCompensation

        public <A1,​A2,​A3,​A4> void addCompensation​(Functions.Func4<A1,​A2,​A3,​A4,​?> operation,
                                                                    A1 arg1,
                                                                    A2 arg2,
                                                                    A3 arg3,
                                                                    A4 arg4)
        Add compensation operation for saga.
        Parameters:
        operation - to be executed during compensation.
        arg1 - first operation function parameter
        arg2 - second operation function parameter
        arg3 - third operation function parameter
        arg4 - fourth operation function parameter
      • addCompensation

        public <A1,​A2,​A3,​A4,​A5> void addCompensation​(Functions.Func5<A1,​A2,​A3,​A4,​A5,​?> operation,
                                                                             A1 arg1,
                                                                             A2 arg2,
                                                                             A3 arg3,
                                                                             A4 arg4,
                                                                             A5 arg5)
        Add compensation operation for saga.
        Parameters:
        operation - to be executed during compensation.
        arg1 - first operation function parameter
        arg2 - second operation function parameter
        arg3 - third operation function parameter
        arg4 - fourth operation function parameter
        arg5 - fifth operation function parameter
      • addCompensation

        public <A1,​A2,​A3,​A4,​A5,​A6> void addCompensation​(Functions.Func6<A1,​A2,​A3,​A4,​A5,​A6,​?> operation,
                                                                                      A1 arg1,
                                                                                      A2 arg2,
                                                                                      A3 arg3,
                                                                                      A4 arg4,
                                                                                      A5 arg5,
                                                                                      A6 arg6)
        Add compensation operation for saga.
        Parameters:
        operation - to be executed during compensation.
        arg1 - first operation function parameter
        arg2 - second operation function parameter
        arg3 - third operation function parameter
        arg4 - fourth operation function parameter
        arg5 - fifth operation function parameter
        arg6 - sixth operation function parameter