public static BiFunction<KieContainer, Simulation, AbstractScenarioRunner> getSpecificRunnerProvider(Simulation simulation) { if (Type.RULE.equals(simulation.getSimulationDescriptor().getType())) { return RuleScenarioRunner::new; } else if (Type.DMN.equals(simulation.getSimulationDescriptor().getType())) { return DMNScenarioRunner::new; } else { throw new IllegalArgumentException("Impossible to run simulation of type " + simulation.getSimulationDescriptor().getType()); } }
protected void setHeaderColumns(Simulation simulation) { final List<FactMapping> factMappings = simulation.getSimulationDescriptor().getUnmodifiableFactMappings(); boolean editableHeaders = !simulation.getSimulationDescriptor().getType().equals(ScenarioSimulationModel.Type.DMN); IntStream.range(0, factMappings.size()) .forEach(columnIndex -> { setHeaderColumn(columnIndex, factMappings.get(columnIndex), editableHeaders); }); }
public static String getExistingInstances(final String group, final ScenarioGridModel scenarioGridModel) { final boolean isDMN = scenarioGridModel.getSimulation().get().getSimulationDescriptor().getType().equals(ScenarioSimulationModel.Type.DMN); return String.join(";", scenarioGridModel.getColumns() .stream() .filter(gridColumn -> { GridColumn.HeaderMetaData m = ((ScenarioGridColumn) gridColumn).getInformationHeaderMetaData(); return isDMN || group.equals(m.getColumnGroup()); }) .map(gridColumn -> ((ScenarioGridColumn) gridColumn).getInformationHeaderMetaData().getTitle()) .collect(Collectors.toSet())); }
public Simulation cloneSimulation() { Simulation toReturn = new Simulation(); toReturn.getSimulationDescriptor().setType(simulationDescriptor.getType()); toReturn.getSimulationDescriptor().setDmnFilePath(simulationDescriptor.getDmnFilePath()); toReturn.getSimulationDescriptor().setDmoSession(simulationDescriptor.getDmoSession()); final List<FactMapping> originalFactMappings = this.simulationDescriptor.getUnmodifiableFactMappings(); for (int i = 0; i < originalFactMappings.size(); i++) { final FactMapping originalFactMapping = originalFactMappings.get(i); toReturn.simulationDescriptor.addFactMapping(i, originalFactMapping); } this.scenarios.forEach(scenario -> toReturn.scenarios.add(scenario.cloneScenario())); return toReturn; }
public Simulation cloneSimulation() { Simulation toReturn = new Simulation(); toReturn.getSimulationDescriptor().setType(simulationDescriptor.getType()); toReturn.getSimulationDescriptor().setDmnFilePath(simulationDescriptor.getDmnFilePath()); toReturn.getSimulationDescriptor().setDmoSession(simulationDescriptor.getDmoSession()); final List<FactMapping> originalFactMappings = this.simulationDescriptor.getUnmodifiableFactMappings(); for (int i = 0; i < originalFactMappings.size(); i++) { final FactMapping originalFactMapping = originalFactMappings.get(i); toReturn.simulationDescriptor.addFactMapping(i, originalFactMapping); } this.scenarios.forEach(scenario -> toReturn.scenarios.add(scenario.cloneScenario())); return toReturn; }
@Test public void executeKeepDataFalseDMN() { scenarioSimulationContext.getStatus().setKeepData(false); when(simulationDescriptorMock.getType()).thenReturn(ScenarioSimulationModel.Type.DMN); command.execute(scenarioSimulationContext); verify(gridColumnMock, times(1)).setEditableHeaders(eq(false)); verify(propertyHeaderMetaDataMock, times(1)).setColumnGroup(anyString()); verify(propertyHeaderMetaDataMock, times(1)).setTitle(VALUE); verify(propertyHeaderMetaDataMock, times(1)).setReadOnly(false); verify(scenarioGridModelMock, times(1)).updateColumnProperty(anyInt(), isA(ScenarioGridColumn.class), eq(VALUE), eq(VALUE_CLASS_NAME), eq(false)); }
@Test public void executeKeepDataFalseRule() { scenarioSimulationContext.getStatus().setKeepData(false); when(simulationDescriptorMock.getType()).thenReturn(ScenarioSimulationModel.Type.RULE); command.execute(scenarioSimulationContext); verify(gridColumnMock, times(1)).setEditableHeaders(eq(true)); verify(propertyHeaderMetaDataMock, times(1)).setColumnGroup(anyString()); verify(propertyHeaderMetaDataMock, times(1)).setTitle(VALUE); verify(propertyHeaderMetaDataMock, times(1)).setReadOnly(false); verify(scenarioGridModelMock, times(1)).updateColumnProperty(anyInt(), isA(ScenarioGridColumn.class), eq(VALUE), eq(VALUE_CLASS_NAME), eq(false)); }
@Test public void executeDMN() { scenarioSimulationContext.getStatus().setFullPackage(FULL_PACKAGE); scenarioSimulationContext.getStatus().setClassName(VALUE_CLASS_NAME); when(simulationDescriptorMock.getType()).thenReturn(ScenarioSimulationModel.Type.DMN); command.execute(scenarioSimulationContext); verify(gridColumnMock, times(1)).setEditableHeaders(eq(false)); verify(gridColumnMock, atLeastOnce()).getInformationHeaderMetaData(); verify(informationHeaderMetaDataMock, times(1)).setTitle(eq(VALUE_CLASS_NAME)); verify(gridColumnMock, times(1)).setInstanceAssigned(eq(true)); verify(propertyHeaderMetaDataMock, times(1)).setReadOnly(eq(false)); verify(scenarioGridModelMock, times(1)).updateColumnInstance(eq(COLUMN_INDEX), eq(gridColumnMock)); }
@Test public void executeRULE() { scenarioSimulationContext.getStatus().setFullPackage(FULL_PACKAGE); scenarioSimulationContext.getStatus().setClassName(VALUE_CLASS_NAME); when(simulationDescriptorMock.getType()).thenReturn(ScenarioSimulationModel.Type.RULE); command.execute(scenarioSimulationContext); verify(gridColumnMock, times(1)).setEditableHeaders(eq(true)); verify(gridColumnMock, atLeastOnce()).getInformationHeaderMetaData(); verify(informationHeaderMetaDataMock, times(1)).setTitle(eq(VALUE_CLASS_NAME)); verify(gridColumnMock, times(1)).setInstanceAssigned(eq(true)); verify(propertyHeaderMetaDataMock, times(1)).setReadOnly(eq(false)); verify(scenarioGridModelMock, times(1)).updateColumnInstance(eq(COLUMN_INDEX), eq(gridColumnMock)); } }
@Override public RequestContext executeScenario(KieContainer kieContainer, ScenarioRunnerData scenarioRunnerData, ExpressionEvaluator expressionEvaluator, SimulationDescriptor simulationDescriptor) { if (!ScenarioSimulationModel.Type.RULE.equals(simulationDescriptor.getType())) { throw new ScenarioException("Impossible to run a not-RULE simulation with RULE runner"); } RuleScenarioExecutableBuilder ruleScenarioExecutableBuilder = createBuilder(kieContainer); scenarioRunnerData.getGivens().stream().map(ScenarioGiven::getValue).forEach(ruleScenarioExecutableBuilder::insert); // all new facts should be verified internally to the working memory scenarioRunnerData.getExpects().stream() .filter(ScenarioExpect::isNewFact) .flatMap(output -> output.getExpectedResult().stream() .map(factMappingValue -> new ScenarioResult(output.getFactIdentifier(), factMappingValue))) .forEach(scenarioResult -> { Class<?> clazz = ScenarioBeanUtil.loadClass(scenarioResult.getFactIdentifier().getClassName(), kieContainer.getClassLoader()); scenarioRunnerData.addResult(scenarioResult); ruleScenarioExecutableBuilder.addInternalCondition(clazz, createExtractorFunction(expressionEvaluator, scenarioResult.getFactMappingValue(), simulationDescriptor), scenarioResult); }); return ruleScenarioExecutableBuilder.run(); }
@Before public void setup() { super.setup(); when(mockGridColumns.indexOf(gridColumnMock)).thenReturn(COLUMN_INDEX); when(scenarioGridModelMock.getColumns()).thenReturn(mockGridColumns); command = spy(new SetInstanceHeaderCommand() { @Override protected ScenarioGridColumn getScenarioGridColumnLocal(ScenarioSimulationBuilders.HeaderBuilder headerBuilder, ScenarioSimulationContext context) { return gridColumnMock; } @Override protected Optional<FactIdentifier> getFactIdentifierByColumnTitle(String columnTitle, ScenarioSimulationContext context) { return Optional.empty(); } }); assertTrue(command.isUndoable()); when(simulationDescriptorMock.getType()).thenReturn(ScenarioSimulationModel.Type.RULE); }
/** * Sets the editable headers on a given <code>ScenarioGridColumn</code> and returns a <code>FactIdentifier</code>. * @param context * @param selectedColumn * @param className * @param canonicalClassName * @return */ protected FactIdentifier setEditableHeadersAndGetFactIdentifier(ScenarioSimulationContext context, ScenarioGridColumn selectedColumn, String className, String canonicalClassName) { final ScenarioSimulationModel.Type simulationModelType = context.getModel().getSimulation().get().getSimulationDescriptor().getType(); selectedColumn.setEditableHeaders(!simulationModelType.equals(ScenarioSimulationModel.Type.DMN)); String nameToUseForCreation = simulationModelType.equals(ScenarioSimulationModel.Type.DMN) ? className : selectedColumn.getInformationHeaderMetaData().getColumnId(); return getFactIdentifierByColumnTitle(className, context).orElse(FactIdentifier.create(nameToUseForCreation, canonicalClassName)); }
@Before public void setup() { super.setup(); when(gridColumnsMock.indexOf(gridColumnMock)).thenReturn(COLUMN_INDEX); command = spy(new SetPropertyHeaderCommand() { @Override protected ScenarioGridColumn getScenarioGridColumnLocal(ScenarioSimulationBuilders.HeaderBuilder headerBuilder, ScenarioSimulationContext context) { return gridColumnMock; } }); scenarioSimulationContext.getStatus().setFullPackage(FULL_PACKAGE); scenarioSimulationContext.getStatus().setValue(VALUE); scenarioSimulationContext.getStatus().setValueClassName(VALUE_CLASS_NAME); assertTrue(command.isUndoable()); when(simulationDescriptorMock.getType()).thenReturn(ScenarioSimulationModel.Type.RULE); }
when(gridColumnMock.getInformationHeaderMetaData()).thenReturn(informationHeaderMetaDataMock); when(gridColumnMock.getPropertyHeaderMetaData()).thenReturn(propertyHeaderMetaDataMock); when(simulationDescriptorMock.getType()).thenReturn(ScenarioSimulationModel.Type.RULE);
@Override public RequestContext executeScenario(KieContainer kieContainer, ScenarioRunnerData scenarioRunnerData, ExpressionEvaluator expressionEvaluator, SimulationDescriptor simulationDescriptor) { if (!ScenarioSimulationModel.Type.DMN.equals(simulationDescriptor.getType())) { throw new ScenarioException("Impossible to run a not-DMN simulation with DMN runner"); } DMNScenarioExecutableBuilder executableBuilder = DMNScenarioExecutableBuilder.createBuilder(kieContainer); executableBuilder.setActiveModel(simulationDescriptor.getDmnFilePath()); for (ScenarioGiven input : scenarioRunnerData.getGivens()) { executableBuilder.setValue(input.getFactIdentifier().getName(), input.getValue()); } return executableBuilder.run(); }
private RemoteCallback<ScenarioSimulationModelContent> getModelSuccessCallback() { return content -> { //Path is set to null when the Editor is closed (which can happen before async calls complete). if (versionRecordManager.getCurrentPath() == null) { return; } packageName = content.getDataModel().getPackageName(); resetEditorPages(content.getOverview()); if(ScenarioSimulationModel.Type.RULE.equals(content.getModel().getSimulation().getSimulationDescriptor().getType())) { dataManagementStrategy = new DMODataManagementStrategy(oracleFactory); } else { dataManagementStrategy = new DMNDataManagementStrategy(dmnTypeService); } dataManagementStrategy.manageScenarioSimulationModelContent(versionRecordManager.getCurrentPath(), content); populateRightPanel(); model = content.getModel(); if (dataManagementStrategy instanceof DMODataManagementStrategy) { importsWidget.setContent(((DMODataManagementStrategy) dataManagementStrategy).getOracle(), model.getImports(), isReadOnly); addImportsTab(importsWidget); } baseView.hideBusyIndicator(); view.setContent(model.getSimulation()); setOriginalHash(getJsonModel(model).hashCode()); }; }
@Test public void unmarshalDMN() throws Exception { String toUnmarshal = getFileContent("scesim-dmn.scesim"); final ScenarioSimulationModel retrieved = ScenarioSimulationXMLPersistence.getInstance().unmarshal(toUnmarshal); assertEquals(retrieved.getSimulation().getSimulationDescriptor().getType(), ScenarioSimulationModel.Type.DMN); assertNotNull(retrieved.getSimulation().getSimulationDescriptor().getDmnFilePath()); assertNull(retrieved.getSimulation().getSimulationDescriptor().getDmoSession()); }
@Test public void unmarshalRULE() throws Exception { String toUnmarshal = getFileContent("scesim-rule.scesim"); final ScenarioSimulationModel retrieved = ScenarioSimulationXMLPersistence.getInstance().unmarshal(toUnmarshal); assertEquals(retrieved.getSimulation().getSimulationDescriptor().getType(), ScenarioSimulationModel.Type.RULE); assertNotNull(retrieved.getSimulation().getSimulationDescriptor().getDmoSession()); assertNull(retrieved.getSimulation().getSimulationDescriptor().getDmnFilePath()); }