Class Saga

java.lang.Object
io.temporal.workflow.Saga

public final class Saga extends 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 Details

  • Method Details

    • 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