completed poll logic
This commit is contained in:
@@ -19,4 +19,5 @@ public interface TransactionRepository extends JpaRepository<Transaction, UUID>,
|
||||
List<Transaction> findAllByUserId(String uid);
|
||||
List<Transaction> findAllByConfirmationStatusAndPaymentStatusAndIntegrationStatus(
|
||||
Status s1, Status s2, Status s3);
|
||||
List<Transaction> findAllByConfirmationStatusAndIntegrationStatus(Status s1, Status s2);
|
||||
}
|
||||
@@ -12,6 +12,7 @@ import org.joda.time.DateTime;
|
||||
import org.slf4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import zw.qantra.tm.domain.dtos.StateResponse;
|
||||
import zw.qantra.tm.domain.enums.Status;
|
||||
import zw.qantra.tm.domain.models.Transaction;
|
||||
import zw.qantra.tm.domain.services.TransactionService;
|
||||
@@ -19,6 +20,7 @@ import zw.qantra.tm.utils.LogUtils;
|
||||
import zw.qantra.tm.utils.Utils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
@@ -45,8 +47,7 @@ public class PollCronWorkflow extends WorkflowDefinition {
|
||||
|
||||
public NextAction process(StateExecution execution) {
|
||||
List<Transaction> transactions = transactionService.getTransactionRepository()
|
||||
.findAllByConfirmationStatusAndPaymentStatusAndIntegrationStatus(
|
||||
Status.SUCCESS, Status.PENDING, Status.PENDING);
|
||||
.findAllByConfirmationStatusAndIntegrationStatus(Status.SUCCESS, Status.PENDING);
|
||||
log.info("Transaction count {}", transactions.size());
|
||||
|
||||
for (Transaction transaction: transactions) {
|
||||
@@ -74,15 +75,19 @@ public class PollCronWorkflow extends WorkflowDefinition {
|
||||
Object response = future.get();
|
||||
LogUtils.logPrettyJson(log, "polling result", response);
|
||||
|
||||
Transaction tran = Utils.deepCopy(response, Transaction.class);
|
||||
StateResponse wfResp = Utils.deepCopy(response, StateResponse.class);
|
||||
LinkedHashMap tran = (LinkedHashMap) wfResp.getBody();
|
||||
if(tran == null)
|
||||
break;
|
||||
|
||||
// only attempt integration logic if polling succeeded
|
||||
if(tran.getStatus().equals(Status.SUCCESS)) {
|
||||
if(tran.get("status").equals(Status.SUCCESS.name())) {
|
||||
// integration logic
|
||||
WorkflowInstance update1 = new WorkflowInstance.Builder()
|
||||
.setId(transaction.getWorkflowId())
|
||||
.setState("integration") // The state you want to transition to
|
||||
.setNextActivation(DateTime.now()) // Schedule immediate execution
|
||||
.setStateVariables(new HashMap<>(){{ put("body", Utils.toJson(transaction)); }})
|
||||
.setStateVariables(new HashMap<>(){{ put("body", Utils.toJson(tran)); }})
|
||||
.setStateText("Resumed from manual state")
|
||||
.build();
|
||||
|
||||
@@ -107,10 +112,6 @@ public class PollCronWorkflow extends WorkflowDefinition {
|
||||
|
||||
}catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
|
||||
transaction.setPollingStatus(Status.FAILED);
|
||||
transaction.setIntegrationStatus(Status.FAILED);
|
||||
transactionService.save(transaction);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,8 +28,8 @@ public class StartupApplicationListener implements ApplicationListener<ContextRe
|
||||
.setNextActivation(DateTime.now())
|
||||
.build();
|
||||
|
||||
// long workflowId = workflowInstanceService.insertWorkflowInstance(instance);
|
||||
long workflowId = workflowInstanceService.insertWorkflowInstance(instance);
|
||||
|
||||
// log.info("Cron workflow ID {} started", workflowId);
|
||||
log.info("Cron workflow ID {} started", workflowId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -256,7 +256,7 @@ public class TransactionWorkflow extends WorkflowDefinition {
|
||||
} catch (Exception e) {
|
||||
log.info(e.getMessage());
|
||||
execution.setVariable("body", Utils.toJson(transaction));
|
||||
return NextAction.retryAfter(DateTime.now().plusSeconds(30), e.getMessage());
|
||||
return NextAction.moveToState(TRAN_FAILED, "Polling failed");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user