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())); }
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); }); }
@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(); }
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()); }; }
/** * 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)); }
@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(); }
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()); } }