added missing adapter to start loan agreement
This commit is contained in:
@@ -2,10 +2,8 @@ package de.weinbrecht.luc.bpm.architecture.loan.agreement.adapter.common;
|
||||
|
||||
public class ProcessConstants {
|
||||
|
||||
public static final String PROCESS_DEFINITION = "Loan_Agreement";
|
||||
public static final String LOAN_START_EVENT_MESSAGE_REF = "loanAgreementReceivedMessage";
|
||||
public static final String LOAN_AGREEMENT_NUMBER = "loanAgreementNumber";
|
||||
|
||||
public static final String RECOMMENDATION_START_EVENT_MESSAGE_REF = "crossSellingPotentialDiscoveredMessage";
|
||||
public static final String RECOMMENDATION_CUSTOMER_NUMBER = "customerNumber";
|
||||
|
||||
|
||||
@@ -1,24 +1,22 @@
|
||||
package de.weinbrecht.luc.bpm.architecture.loan.agreement.adapter.in.process;
|
||||
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.domain.model.CaseId;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.domain.model.LoanAgreement;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.domain.model.LoanAgreementNumber;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.usecase.out.LoanAgreementQuery;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.usecase.out.RecommendationTrigger;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.camunda.bpm.engine.RuntimeService;
|
||||
import org.camunda.bpm.engine.delegate.DelegateExecution;
|
||||
import org.camunda.bpm.engine.delegate.JavaDelegate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static de.weinbrecht.luc.bpm.architecture.loan.agreement.adapter.common.ProcessConstants.*;
|
||||
import static de.weinbrecht.luc.bpm.architecture.loan.agreement.adapter.common.ProcessConstants.LOAN_AGREEMENT_NUMBER;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Component
|
||||
public class SendCrossSellingRecommendation implements JavaDelegate {
|
||||
|
||||
private final RuntimeService runtimeService;
|
||||
private final RecommendationTrigger recommendationTrigger;
|
||||
private final LoanAgreementQuery loanAgreementQuery;
|
||||
|
||||
@Override
|
||||
@@ -26,17 +24,6 @@ public class SendCrossSellingRecommendation implements JavaDelegate {
|
||||
Long loanNumber = (Long) execution.getVariable(LOAN_AGREEMENT_NUMBER);
|
||||
LoanAgreement loanAgreement = loanAgreementQuery.loadByNumber(new LoanAgreementNumber(loanNumber));
|
||||
|
||||
Map<String, Object> processVariables = new HashMap<>();
|
||||
processVariables.put(RECOMMENDATION_CUSTOMER_NUMBER, loanAgreement.getRecipient().getCustomerNumber().getValue());
|
||||
|
||||
runtimeService.startProcessInstanceByMessage(
|
||||
RECOMMENDATION_START_EVENT_MESSAGE_REF,
|
||||
buildCrossSellingBusinessKey(loanNumber, execution.getBusinessKey()),
|
||||
processVariables
|
||||
);
|
||||
}
|
||||
|
||||
private String buildCrossSellingBusinessKey(Long loanNumber, String caseId) {
|
||||
return caseId + "-" + loanNumber;
|
||||
recommendationTrigger.startLoanAgreement(new CaseId(execution.getBusinessKey()), loanAgreement);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package de.weinbrecht.luc.bpm.architecture.loan.agreement.adapter.out.process;
|
||||
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.domain.model.CaseId;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.domain.model.LoanAgreementNumber;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.usecase.out.WorkflowCommand;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.camunda.bpm.engine.RuntimeService;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static de.weinbrecht.luc.bpm.architecture.loan.agreement.adapter.common.ProcessConstants.LOAN_AGREEMENT_NUMBER;
|
||||
import static de.weinbrecht.luc.bpm.architecture.loan.agreement.adapter.common.ProcessConstants.LOAN_START_EVENT_MESSAGE_REF;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Component
|
||||
class ProcessEngineClient implements WorkflowCommand {
|
||||
|
||||
private final RuntimeService runtimeService;
|
||||
|
||||
@Override
|
||||
public void startLoanAgreement(CaseId caseId, LoanAgreementNumber loanAgreementNumber) {
|
||||
Map<String, Object> processVariables = new HashMap<>();
|
||||
processVariables.put(LOAN_AGREEMENT_NUMBER, loanAgreementNumber.getValue());
|
||||
runtimeService.startProcessInstanceByMessage(LOAN_START_EVENT_MESSAGE_REF, caseId.getValue(), processVariables);
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,7 @@ import de.weinbrecht.luc.bpm.architecture.loan.agreement.usecase.in.LoanAgreemen
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.usecase.out.LoanAgreementCommand;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.usecase.out.LoanAgreementDistributor;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.usecase.out.LoanAgreementQuery;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.usecase.out.RecommendationTrigger;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.usecase.out.WorkflowCommand;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -17,15 +17,15 @@ import org.springframework.stereotype.Service;
|
||||
public class LoanAgreementService implements LoanAgreementCreation, LoanAgreementStatusCommand {
|
||||
|
||||
private final LoanAgreementCommand loanAgreementCommand;
|
||||
private final RecommendationTrigger recommendationTrigger;
|
||||
private final LoanAgreementDistributor loanAgreementDistributor;
|
||||
private final LoanAgreementQuery loanAgreementQuery;
|
||||
private final WorkflowCommand workflowCommand;
|
||||
|
||||
@Override
|
||||
public void create(LoanAgreement loanAgreement, CaseId caseId) {
|
||||
try {
|
||||
LoanAgreement savedLoanAgreement = loanAgreementCommand.save(loanAgreement);
|
||||
recommendationTrigger.startLoanAgreement(caseId, savedLoanAgreement);
|
||||
workflowCommand.startLoanAgreement(caseId, savedLoanAgreement.getLoanAgreementNumber());
|
||||
} catch (Exception e) {
|
||||
throw new LoanAgreementException("Cloud not save the loan agreement", e);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package de.weinbrecht.luc.bpm.architecture.loan.agreement.usecase.out;
|
||||
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.domain.model.LoanAgreement;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.domain.model.LoanAgreementNumber;
|
||||
|
||||
public interface LoanAgreementCommand {
|
||||
LoanAgreement save(LoanAgreement loanAgreement);
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package de.weinbrecht.luc.bpm.architecture.loan.agreement.usecase.out;
|
||||
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.domain.model.CaseId;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.domain.model.LoanAgreementNumber;
|
||||
|
||||
public interface WorkflowCommand {
|
||||
void startLoanAgreement(CaseId caseId, LoanAgreementNumber loanAgreementNumber);
|
||||
}
|
||||
@@ -1,18 +1,16 @@
|
||||
package de.weinbrecht.luc.bpm.architecture.loan.agreement.adapter.in.process;
|
||||
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.domain.model.CaseId;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.domain.model.LoanAgreement;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.usecase.out.LoanAgreementQuery;
|
||||
import org.camunda.bpm.engine.RuntimeService;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.usecase.out.RecommendationTrigger;
|
||||
import org.camunda.bpm.engine.delegate.DelegateExecution;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoSettings;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static de.weinbrecht.luc.bpm.architecture.loan.agreement.adapter.common.ProcessConstants.*;
|
||||
import static de.weinbrecht.luc.bpm.architecture.loan.agreement.adapter.common.ProcessConstants.LOAN_AGREEMENT_NUMBER;
|
||||
import static de.weinbrecht.luc.bpm.architecture.loan.agreement.domain.model.TestdataGenerator.createLoanAgreementWithNumber;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
@@ -23,7 +21,7 @@ class SendCrossSellingRecommendationTest {
|
||||
private SendCrossSellingRecommendation classUnderTest;
|
||||
|
||||
@Mock
|
||||
private RuntimeService runtimeService;
|
||||
private RecommendationTrigger recommendationTrigger;
|
||||
|
||||
@Mock
|
||||
LoanAgreementQuery loanAgreementQuery;
|
||||
@@ -40,12 +38,6 @@ class SendCrossSellingRecommendationTest {
|
||||
|
||||
classUnderTest.execute(delegateExecution);
|
||||
|
||||
Map<String, Object> processVariables = new HashMap<>();
|
||||
processVariables.put(RECOMMENDATION_CUSTOMER_NUMBER, loanAgreement.getRecipient().getCustomerNumber().getValue());
|
||||
verify(runtimeService).startProcessInstanceByMessage(
|
||||
RECOMMENDATION_START_EVENT_MESSAGE_REF,
|
||||
caseId + "-" + loanAgreement.getLoanAgreementNumber().getValue(),
|
||||
processVariables
|
||||
);
|
||||
verify(recommendationTrigger).startLoanAgreement(new CaseId(caseId), loanAgreement);
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
package de.weinbrecht.luc.bpm.architecture.loan.agreement.adapter.out.db;
|
||||
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.domain.model.LoanAgreement;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.domain.model.LoanAgreementNumber;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
package de.weinbrecht.luc.bpm.architecture.loan.agreement.adapter.out.process;
|
||||
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.domain.model.CaseId;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.domain.model.LoanAgreementNumber;
|
||||
import org.camunda.bpm.engine.RuntimeService;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoSettings;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static de.weinbrecht.luc.bpm.architecture.loan.agreement.adapter.common.ProcessConstants.LOAN_AGREEMENT_NUMBER;
|
||||
import static de.weinbrecht.luc.bpm.architecture.loan.agreement.adapter.common.ProcessConstants.LOAN_START_EVENT_MESSAGE_REF;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
@MockitoSettings
|
||||
class ProcessEngineClientTest {
|
||||
|
||||
@InjectMocks
|
||||
private ProcessEngineClient classUnderTest;
|
||||
|
||||
@Mock
|
||||
private RuntimeService runtimeService;
|
||||
|
||||
private final CaseId caseId = new CaseId("11");
|
||||
private final LoanAgreementNumber loanAgreementNumber = new LoanAgreementNumber(1L);
|
||||
|
||||
@Test
|
||||
void should_class_runtime_service_to_start() {
|
||||
Map<String, Object> processVariables = new HashMap<>();
|
||||
processVariables.put(LOAN_AGREEMENT_NUMBER, loanAgreementNumber.getValue());
|
||||
|
||||
classUnderTest.startLoanAgreement(caseId, loanAgreementNumber);
|
||||
|
||||
verify(runtimeService).startProcessInstanceByMessage(LOAN_START_EVENT_MESSAGE_REF, caseId.getValue(), processVariables);
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@ import de.weinbrecht.luc.bpm.architecture.loan.agreement.domain.model.LoanAgreem
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.usecase.out.LoanAgreementCommand;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.usecase.out.LoanAgreementDistributor;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.usecase.out.LoanAgreementQuery;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.usecase.out.RecommendationTrigger;
|
||||
import de.weinbrecht.luc.bpm.architecture.loan.agreement.usecase.out.WorkflowCommand;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
@@ -27,7 +27,7 @@ class LoanAgreementServiceTest {
|
||||
private LoanAgreementCommand loanAgreementCommand;
|
||||
|
||||
@Mock
|
||||
private RecommendationTrigger recommendationTrigger;
|
||||
private WorkflowCommand workflowCommand;
|
||||
|
||||
@Mock
|
||||
private LoanAgreementDistributor loanAgreementDistributor;
|
||||
@@ -44,7 +44,7 @@ class LoanAgreementServiceTest {
|
||||
|
||||
classUnderTest.create(loanAgreement, caseId);
|
||||
|
||||
verify(recommendationTrigger).startLoanAgreement(caseId, savedLoanAgreement);
|
||||
verify(workflowCommand).startLoanAgreement(caseId, savedLoanAgreement.getLoanAgreementNumber());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -56,7 +56,7 @@ class LoanAgreementServiceTest {
|
||||
assertThrows(LoanAgreementException.class,
|
||||
() -> classUnderTest.create(loanAgreement, caseId));
|
||||
|
||||
verify(recommendationTrigger, never()).startLoanAgreement(eq(caseId), any());
|
||||
verify(workflowCommand, never()).startLoanAgreement(eq(caseId), any());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user