22
33import io .iworkflow .core .Context ;
44import io .iworkflow .core .ObjectWorkflow ;
5- import io .iworkflow .core .RPC ;
65import io .iworkflow .core .StateDecision ;
76import io .iworkflow .core .StateDef ;
87import io .iworkflow .core .WorkflowState ;
98import io .iworkflow .core .WorkflowStateOptionsExtension ;
10- import io .iworkflow .core .command .CommandRequest ;
119import io .iworkflow .core .command .CommandResults ;
12- import io .iworkflow .core .command .TimerCommand ;
1310import io .iworkflow .core .communication .Communication ;
14- import io .iworkflow .core .communication .CommunicationMethodDef ;
15- import io .iworkflow .core .communication .InternalChannelCommand ;
16- import io .iworkflow .core .communication .InternalChannelDef ;
17- import io .iworkflow .core .persistence .DataAttributeDef ;
1811import io .iworkflow .core .persistence .Persistence ;
19- import io .iworkflow .core .persistence .PersistenceFieldDef ;
20- import io .iworkflow .gen .models .ChannelRequestStatus ;
2112import io .iworkflow .gen .models .RetryPolicy ;
2213import io .iworkflow .gen .models .WorkflowStateOptions ;
2314import io .iworkflow .workflow .MyDependencyService ;
24- import io .iworkflow .workflow .microservices .SignupForm ;
2515import org .springframework .stereotype .Component ;
2616
27- import java .time .Duration ;
2817import java .util .Arrays ;
2918import java .util .List ;
3019
31- import static io .iworkflow .workflow .signup .UserSignupWorkflow .DA_FORM ;
32- import static io .iworkflow .workflow .signup .UserSignupWorkflow .DA_Status ;
33- import static io .iworkflow .workflow .signup .UserSignupWorkflow .VERIFY_CHANNEL ;
34-
3520@ Component
3621
3722public class MoneyTransferWorkflow implements ObjectWorkflow {
@@ -49,7 +34,7 @@ public List<StateDef> getWorkflowStates() {
4934 StateDef .nonStartingState (new DebitState (myService )),
5035 StateDef .nonStartingState (new CreateCreditMemoState (myService )),
5136 StateDef .nonStartingState (new CreditState (myService )),
52- StateDef .nonStartingState (new CleanupState (myService ))
37+ StateDef .nonStartingState (new CompensateState (myService ))
5338 );
5439 }
5540}
@@ -98,7 +83,7 @@ public StateDecision execute(final Context context, final TransferRequest reques
9883 @ Override
9984 public WorkflowStateOptions getStateOptions () {
10085 return new WorkflowStateOptionsExtension ()
101- .setProceedOnExecuteFailure (CleanupState .class )
86+ .setProceedOnExecuteFailure (CompensateState .class )
10287 .executeApiRetryPolicy (new RetryPolicy ()
10388 .maximumAttemptsDurationSeconds (3600 ));
10489 }
@@ -125,7 +110,7 @@ public StateDecision execute(final Context context, final TransferRequest reques
125110 @ Override
126111 public WorkflowStateOptions getStateOptions () {
127112 return new WorkflowStateOptionsExtension ()
128- .setProceedOnExecuteFailure (CleanupState .class )
113+ .setProceedOnExecuteFailure (CompensateState .class )
129114 .executeApiRetryPolicy (new RetryPolicy ()
130115 .maximumAttemptsDurationSeconds (3600 ));
131116 }
@@ -152,7 +137,7 @@ public StateDecision execute(final Context context, final TransferRequest reques
152137 @ Override
153138 public WorkflowStateOptions getStateOptions () {
154139 return new WorkflowStateOptionsExtension ()
155- .setProceedOnExecuteFailure (CleanupState .class )
140+ .setProceedOnExecuteFailure (CompensateState .class )
156141 .executeApiRetryPolicy (new RetryPolicy ()
157142 .maximumAttemptsDurationSeconds (3600 ));
158143 }
@@ -181,16 +166,16 @@ public StateDecision execute(final Context context, final TransferRequest reques
181166 @ Override
182167 public WorkflowStateOptions getStateOptions () {
183168 return new WorkflowStateOptionsExtension ()
184- .setProceedOnExecuteFailure (CleanupState .class )
169+ .setProceedOnExecuteFailure (CompensateState .class )
185170 .executeApiRetryPolicy (new RetryPolicy ()
186171 .maximumAttemptsDurationSeconds (3600 ));
187172 }
188173}
189174
190- class CleanupState implements WorkflowState <TransferRequest > {
175+ class CompensateState implements WorkflowState <TransferRequest > {
191176 private MyDependencyService myService ;
192177
193- public CleanupState (final MyDependencyService myService ) {
178+ public CompensateState (final MyDependencyService myService ) {
194179 this .myService = myService ;
195180 }
196181
@@ -201,10 +186,11 @@ public Class<TransferRequest> getInputType() {
201186
202187 @ Override
203188 public StateDecision execute (final Context context , final TransferRequest request , final CommandResults commandResults , Persistence persistence , final Communication communication ) {
204- myService .undoCreateDebitMemo (request .getFromAccountId (), request .getAmount (), request .getNotes ());
205- myService .undoDebit (request .getFromAccountId (), request .getAmount ());
206- myService .undoCreateCreditMemo (request .getToAccountId (), request .getAmount (), request .getNotes ());
207189 myService .undoCredit (request .getToAccountId (), request .getAmount ());
190+ myService .undoCreateCreditMemo (request .getToAccountId (), request .getAmount (), request .getNotes ());
191+ myService .undoDebit (request .getFromAccountId (), request .getAmount ());
192+ myService .undoCreateDebitMemo (request .getFromAccountId (), request .getAmount (), request .getNotes ());
193+
208194 return StateDecision .forceFailWorkflow ("failed to transfer money" );
209195 }
210196
0 commit comments