use of org.drools.scenariosimulation.api.model.Settings in project drools by kiegroup.
the class RuleScenarioRunnerHelperTest method setup.
@Before
public void setup() {
when(kieContainerMock.getClassLoader()).thenReturn(classLoader);
simulation = new Simulation();
background = new Background();
settings = new Settings();
settings.setType(ScenarioSimulationModel.Type.RULE);
personFactIdentifier = FactIdentifier.create("Fact 1", Person.class.getCanonicalName());
firstNameGivenExpressionIdentifier = ExpressionIdentifier.create("First Name Given", FactMappingType.GIVEN);
firstNameGivenFactMapping = simulation.getScesimModelDescriptor().addFactMapping(personFactIdentifier, firstNameGivenExpressionIdentifier);
firstNameGivenFactMapping.addExpressionElement("Fact 1", String.class.getCanonicalName());
firstNameGivenFactMapping.addExpressionElement("firstName", String.class.getCanonicalName());
disputeFactIdentifier = FactIdentifier.create("Fact 2", Dispute.class.getCanonicalName());
amountGivenExpressionIdentifier = ExpressionIdentifier.create("Amount Given", FactMappingType.GIVEN);
amountNameGivenFactMapping = simulation.getScesimModelDescriptor().addFactMapping(disputeFactIdentifier, amountGivenExpressionIdentifier);
amountNameGivenFactMapping.addExpressionElement("Fact 2", Double.class.getCanonicalName());
amountNameGivenFactMapping.addExpressionElement("amount", Double.class.getCanonicalName());
firstNameExpectedExpressionIdentifier = ExpressionIdentifier.create("First Name Expected", FactMappingType.EXPECT);
firstNameExpectedFactMapping = simulation.getScesimModelDescriptor().addFactMapping(personFactIdentifier, firstNameExpectedExpressionIdentifier);
firstNameExpectedFactMapping.addExpressionElement("Fact 1", String.class.getCanonicalName());
firstNameExpectedFactMapping.addExpressionElement("firstName", String.class.getCanonicalName());
amountExpectedExpressionIdentifier = ExpressionIdentifier.create("Amount Expected", FactMappingType.EXPECT);
amountNameExpectedFactMapping = simulation.getScesimModelDescriptor().addFactMapping(disputeFactIdentifier, amountExpectedExpressionIdentifier);
amountNameExpectedFactMapping.addExpressionElement("Fact 2", Double.class.getCanonicalName());
amountNameExpectedFactMapping.addExpressionElement("amount", Double.class.getCanonicalName());
expressionGivenExpressionIdentifier = ExpressionIdentifier.create("directMapping", FactMappingType.GIVEN);
disputeExpressionGivenFactMapping = simulation.getScesimModelDescriptor().addFactMapping(disputeFactIdentifier, expressionGivenExpressionIdentifier);
disputeExpressionGivenFactMapping.setFactMappingValueType(FactMappingValueType.EXPRESSION);
disputeExpressionGivenFactMapping.addExpressionElement("Dispute", Dispute.class.getCanonicalName());
scenario1 = simulation.addData();
scenario1.setDescription(TEST_DESCRIPTION);
scenario1.addMappingValue(personFactIdentifier, firstNameGivenExpressionIdentifier, NAME);
scenario1.addMappingValue(personFactIdentifier, firstNameExpectedExpressionIdentifier, NAME);
scenario2 = simulation.addData();
scenario2.setDescription(TEST_DESCRIPTION);
scenario2.addMappingValue(personFactIdentifier, firstNameGivenExpressionIdentifier, NAME);
scenario2.addMappingValue(personFactIdentifier, firstNameExpectedExpressionIdentifier, NAME);
scenario2.addMappingValue(disputeFactIdentifier, amountGivenExpressionIdentifier, AMOUNT);
amountNameExpectedFactMappingValue = scenario2.addMappingValue(disputeFactIdentifier, amountExpectedExpressionIdentifier, AMOUNT);
backgroundFirstNameGivenFactMapping = background.getScesimModelDescriptor().addFactMapping(personFactIdentifier, firstNameGivenExpressionIdentifier);
backgroundFirstNameGivenFactMapping.addExpressionElement("Person", String.class.getCanonicalName());
backgroundFirstNameGivenFactMapping.addExpressionElement("firstName", String.class.getCanonicalName());
backgroundAmountNameGivenFactMapping = background.getScesimModelDescriptor().addFactMapping(disputeFactIdentifier, amountGivenExpressionIdentifier);
backgroundAmountNameGivenFactMapping.addExpressionElement("Dispute", Double.class.getCanonicalName());
backgroundAmountNameGivenFactMapping.addExpressionElement("amount", Double.class.getCanonicalName());
backgroundData1 = background.addData();
backgroundData1.addMappingValue(personFactIdentifier, firstNameGivenExpressionIdentifier, NAME);
backgroundData1.addMappingValue(disputeFactIdentifier, amountGivenExpressionIdentifier, AMOUNT);
backgroundData2 = background.addData();
backgroundData2.addMappingValue(personFactIdentifier, firstNameGivenExpressionIdentifier, NAME);
}
use of org.drools.scenariosimulation.api.model.Settings in project drools by kiegroup.
the class DMNScenarioRunnerHelperTest method init.
@Before
public void init() {
when(dmnScenarioExecutableBuilderMock.run()).thenReturn(mock(RequestContext.class));
simulation = new Simulation();
settings = new Settings();
settings.setType(ScenarioSimulationModel.Type.DMN);
settings.setDmnFilePath(DMN_FILE_PATH);
personFactIdentifier = FactIdentifier.create("Fact 1", "Fact 1");
firstNameGivenExpressionIdentifier = ExpressionIdentifier.create("First Name Given", FactMappingType.GIVEN);
firstNameGivenFactMapping = simulation.getScesimModelDescriptor().addFactMapping(personFactIdentifier, firstNameGivenExpressionIdentifier);
firstNameGivenFactMapping.addExpressionElement("Fact 1", String.class.getCanonicalName());
firstNameGivenFactMapping.addExpressionElement("firstName", String.class.getCanonicalName());
disputeFactIdentifier = FactIdentifier.create("Fact 2", "Fact 2");
amountGivenExpressionIdentifier = ExpressionIdentifier.create("Amount Given", FactMappingType.GIVEN);
amountNameGivenFactMapping = simulation.getScesimModelDescriptor().addFactMapping(disputeFactIdentifier, amountGivenExpressionIdentifier);
amountNameGivenFactMapping.addExpressionElement("Fact 2", BigDecimal.class.getCanonicalName());
amountNameGivenFactMapping.addExpressionElement("amount", BigDecimal.class.getCanonicalName());
firstNameExpectedExpressionIdentifier = ExpressionIdentifier.create("First Name Expected", FactMappingType.EXPECT);
firstNameExpectedFactMapping = simulation.getScesimModelDescriptor().addFactMapping(personFactIdentifier, firstNameExpectedExpressionIdentifier);
firstNameExpectedFactMapping.addExpressionElement("Fact 1", String.class.getCanonicalName());
firstNameExpectedFactMapping.addExpressionElement("firstName", String.class.getCanonicalName());
amountExpectedExpressionIdentifier = ExpressionIdentifier.create("Amount Expected", FactMappingType.EXPECT);
amountNameExpectedFactMapping = simulation.getScesimModelDescriptor().addFactMapping(disputeFactIdentifier, amountExpectedExpressionIdentifier);
amountNameExpectedFactMapping.addExpressionElement("Fact 2", Double.class.getCanonicalName());
amountNameExpectedFactMapping.addExpressionElement("amount", Double.class.getCanonicalName());
scenario1 = simulation.addData();
scenario1.setDescription(TEST_DESCRIPTION);
scenario1.addMappingValue(personFactIdentifier, firstNameGivenExpressionIdentifier, FEEL_EXPRESSION_NAME);
firstNameExpectedValue = scenario1.addMappingValue(personFactIdentifier, firstNameExpectedExpressionIdentifier, FEEL_EXPRESSION_NAME);
scenario2 = simulation.addData();
scenario2.setDescription(TEST_DESCRIPTION);
scenario2.addMappingValue(personFactIdentifier, firstNameGivenExpressionIdentifier, FEEL_EXPRESSION_NAME);
scenario2.addMappingValue(personFactIdentifier, firstNameExpectedExpressionIdentifier, FEEL_EXPRESSION_NAME);
scenario2.addMappingValue(disputeFactIdentifier, amountGivenExpressionIdentifier, AMOUNT);
amountNameExpectedFactMappingValue = scenario2.addMappingValue(disputeFactIdentifier, amountExpectedExpressionIdentifier, AMOUNT);
when(requestContextMock.get(DMNScenarioExecutableBuilder.DMN_RESULT)).thenReturn(dmnResultMock);
when(requestContextMock.get(DMNScenarioExecutableBuilder.DMN_MODEL)).thenReturn(dmnModelMock);
}
use of org.drools.scenariosimulation.api.model.Settings in project drools by kiegroup.
the class RuleScenarioRunnerHelper method executeScenario.
@Override
protected Map<String, Object> executeScenario(KieContainer kieContainer, ScenarioRunnerData scenarioRunnerData, ExpressionEvaluatorFactory expressionEvaluatorFactory, ScesimModelDescriptor scesimModelDescriptor, Settings settings) {
if (!Type.RULE.equals(settings.getType())) {
throw new ScenarioException("Impossible to run a not-RULE simulation with RULE runner");
}
RuleScenarioExecutableBuilder ruleScenarioExecutableBuilder = createBuilderWrapper(kieContainer, settings);
if (settings.getRuleFlowGroup() != null) {
ruleScenarioExecutableBuilder.setActiveRuleFlowGroup(settings.getRuleFlowGroup());
}
loadInputData(scenarioRunnerData.getBackgrounds(), ruleScenarioExecutableBuilder);
loadInputData(scenarioRunnerData.getGivens(), ruleScenarioExecutableBuilder);
// all new facts should be verified internally to the working memory
scenarioRunnerData.getExpects().stream().filter(ScenarioExpect::isNewFact).flatMap(output -> output.getExpectedResult().stream().map(ScenarioResult::new)).forEach(scenarioResult -> {
Class<?> clazz = ScenarioBeanUtil.loadClass(scenarioResult.getFactIdentifier().getClassName(), kieContainer.getClassLoader());
ExpressionEvaluator expressionEvaluator = expressionEvaluatorFactory.getOrCreate(scenarioResult.getFactMappingValue());
scenarioRunnerData.addResult(scenarioResult);
ruleScenarioExecutableBuilder.addInternalCondition(clazz, createExtractorFunction(expressionEvaluator, scenarioResult.getFactMappingValue(), scesimModelDescriptor), scenarioResult);
});
return ruleScenarioExecutableBuilder.run();
}
use of org.drools.scenariosimulation.api.model.Settings in project drools-wb by kiegroup.
the class ScenarioRunnerServiceImplTest method makeScenarioSimulationModel.
private ScenarioSimulationModel makeScenarioSimulationModel(boolean toSkip) {
Simulation simulation = new Simulation();
Settings settings = new Settings();
settings.setType(Type.RULE);
settings.setSkipFromBuild(toSkip);
ScenarioSimulationModel scenarioSimulationModel = new ScenarioSimulationModel();
scenarioSimulationModel.setSimulation(simulation);
scenarioSimulationModel.setSettings(settings);
scenarioSimulationModel.setBackground(new Background());
return scenarioSimulationModel;
}
use of org.drools.scenariosimulation.api.model.Settings in project drools-wb by kiegroup.
the class ScenarioSimulationServiceImplTest method runScenario.
@Test
public void runScenario() throws Exception {
doReturn("test userMock").when(userMock).getIdentifier();
final Path path = mock(Path.class);
Simulation simulation = new Simulation();
Settings settings = new Settings();
Background background = new Background();
service.runScenario(path, simulation.getScesimModelDescriptor(), simulation.getScenarioWithIndex(), settings, background);
verify(scenarioRunnerServiceMock).runTest("test userMock", path, simulation.getScesimModelDescriptor(), simulation.getScenarioWithIndex(), settings, background);
}
Aggregations