Skip to content

Commit 1c44f02

Browse files
committed
revert undo order in money transfer
1 parent b1842ba commit 1c44f02

1 file changed

Lines changed: 11 additions & 25 deletions

File tree

src/main/java/io/iworkflow/workflow/money/transfer/MoneyTransferWorkflow.java

Lines changed: 11 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,36 +2,21 @@
22

33
import io.iworkflow.core.Context;
44
import io.iworkflow.core.ObjectWorkflow;
5-
import io.iworkflow.core.RPC;
65
import io.iworkflow.core.StateDecision;
76
import io.iworkflow.core.StateDef;
87
import io.iworkflow.core.WorkflowState;
98
import io.iworkflow.core.WorkflowStateOptionsExtension;
10-
import io.iworkflow.core.command.CommandRequest;
119
import io.iworkflow.core.command.CommandResults;
12-
import io.iworkflow.core.command.TimerCommand;
1310
import 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;
1811
import io.iworkflow.core.persistence.Persistence;
19-
import io.iworkflow.core.persistence.PersistenceFieldDef;
20-
import io.iworkflow.gen.models.ChannelRequestStatus;
2112
import io.iworkflow.gen.models.RetryPolicy;
2213
import io.iworkflow.gen.models.WorkflowStateOptions;
2314
import io.iworkflow.workflow.MyDependencyService;
24-
import io.iworkflow.workflow.microservices.SignupForm;
2515
import org.springframework.stereotype.Component;
2616

27-
import java.time.Duration;
2817
import java.util.Arrays;
2918
import 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

3722
public 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

Comments
 (0)