From 524e55ee19583166c83b0d9db3002bfc808923ec Mon Sep 17 00:00:00 2001 From: Radek Adamec Date: Wed, 29 Dec 2021 01:29:37 +0100 Subject: [PATCH] release v1.0.0 --- Version.props | 10 ++++----- build/custom/Build.props | 2 +- changelog.md | 46 ++++++++++++++++++++++++++-------------- 3 files changed, 36 insertions(+), 22 deletions(-) diff --git a/Version.props b/Version.props index 8f70aae..774e82f 100644 --- a/Version.props +++ b/Version.props @@ -10,10 +10,10 @@ 1 0 0 - 846 - 1.0.0-dev.846.211125021251 - 1.0.0-dev.846.211125021251+165.version-1.bb975b1-dirty - bb975b1-dirty - version-1 + 849 + 1.0.0 + 1.0.0+849.211229014443.release.33f2fba + 33f2fba + release \ No newline at end of file diff --git a/build/custom/Build.props b/build/custom/Build.props index 2597484..b8ad2e4 100644 --- a/build/custom/Build.props +++ b/build/custom/Build.props @@ -8,7 +8,7 @@ Radek Adamec Radek Adamec - Radek Adamec 2018 + Radek Adamec 2021 DMN Engine is a rule engine allowing to execute and evaluate the decisions defined in a DMN model. It's primary target is to evaluate the decision tables that transform the inputs into the output(s) using the decision rules https://github.com/adamecr/Common.DMN.Engine/blob/master/license.txt MIT diff --git a/changelog.md b/changelog.md index 78d3cf6..b627450 100644 --- a/changelog.md +++ b/changelog.md @@ -4,41 +4,54 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [Unreleased] ## -__Version-1__ + +## [1.0.0] - 2021-12-29 ## +As this is a major update, it's recommended to go through the [documentation](readme.md) for both "big picture" and the details. + +### Breaking change ### +- Decision table + - **Allowed input values checks don't throw the exception when the constraint is violated** (see the documentation for more details) + +### Added ### + +- Definition classes + - The DMN definition can be created also by code using the builders (`DmnDefinitionBuilder`) + +- Execution context + - New method `WithInputParameters` allowing to set multiple parameters in one call using the dictionary (`IReadOnlyCollection>`) + - Decision execution can be traced/audited using the snapshots + - When the result comes from the decision table, it also provides the list of rules that had a positive hit. Thanks [Noel](https://github.com/nlysaght) for contribution. + - Execution context can be configured using the `DmnExecutionContextOptions` when calling the factory - set the snapshots on/off, table rules parallel processing, parsed expressions cache + - Parsed expression cache is now configurable + - Tests - Shared code project with tests - "single test code" - Hierarchy of test classes for same test but different source (DMN XML 1.1/1.3 or builders) - Projects using the shared code targetting different platforms (.net core 2.1, 3.1, 5; .net framework 4.6.2, 4.7.2) - +### Changed ### - Definition classes - In general, trying to have kind of immutable public interface after constructed - `DmnVariableDefinition` is "hidden" via R/O `IDmnVariable`. Also the setters are now not public (can be changed via dedicated methods encapsulating the logic) - - `IDmnVariable` and `IDmnDecision` is used are reference to variable/decision definition + - `IDmnVariable` and `IDmnDecision` is used as reference to variable/decision definition - `IReadOnlyCollection` is used for required inputs and decision - Arrays are used instead of lists for decision table - Inputs, Outpus, Rules, Allowed values - - The DMN definition can be created also by code using the builders (`DmnDefinitionBuilder`) - - Execution context - Properties are published as `IReadOnlyDictionary` instead of `IDictionary` - Parsed expressions cache (static property) is `ConcurrentDictionary` now - - New method `WithInputParameters` allowing to set multiple parameters in one call using the dictionary (`IReadOnlyCollection>`) - `DmnExecutionContextFactory` class is static now - - Decision execution can be traced/audited using the snapshots - - Execution context can be configured using the `DmnExecutionContextOptions` when calling the factory - set the snapshots on/off, table rules parallel processing, parsed expressions cache - - FIX: when cloning the variables (for example from context to result), the ICloneable value is clonned properly - - Parsed expression cache is now configurable - The execution related classes have been better adapted for the support of extended/customized functionality using the inheritance - - FIX: DmnExecutionVariable.SetInputParameterValue - type/cast check - -- Decision table - - **Allowed input values checks don't throw the exception when the constraint is violated** (see the documentation for more details) - + - Other - - DynamicExpresso, NLog packages to current versions + - DynamicExpresso, NLog packages updated to current versions - Solution now primary for VS2019 (was 2017) + - Updated documentation with more details in some parts +### Fixed ### +- When cloning the variables (for example from context to result), the ICloneable value is clonned properly +- DmnExecutionVariable.SetInputParameterValue - type/cast check +- [Issue#8](https://github.com/adamecr/Common.DMN.Engine/issues/8) - ParsedExpressionsCache Corruption when running multiple concurrent evaluations ## [0.1.2] - 2020-07-18 ## ### Added ### @@ -53,6 +66,7 @@ __Version-1__ ### Added ### - Initial release +[1.0.0]: https://github.com/adamecr/Common.DMN.Engine/compare/v0.1.2...v1.0.0 [0.1.2]: https://github.com/adamecr/Common.DMN.Engine/compare/v0.1.1...v0.1.2 [0.1.1]: https://github.com/adamecr/Common.DMN.Engine/compare/v0.1.0...v0.1.1 [0.1.0]: https://github.com/adamecr/Common.DMN.Engine/releases/tag/v0.1.0 \ No newline at end of file