Releases: nedap/archie
Flattener spec compliance
The specialization examples in the specification have been added to the JUnit tests of the Flattener to ensure all cases work as intended. All non-complying cases have been changed to be compliant to the specification.
This means this is the first version to have a fully compliant Flattener.
It is now possible to define external functions on the rule evaluation.
Also some minor bugs have been fixed.
We have started development on a new version. This next version will offer much more functionality, but will introduce some breaking changes in the API. It should not be very hard to change, but expect to do some work to migrate to the next version after this.
Small bugfixes in rule evaluation
This release contains a small change in rule evaluation:
- when constructing missing structure in automatic assertion fixing, a whole tree would be created with as many fields filled as possible. This meant problems later, so it was changed so it creates only the minimal amount of fields necessary to fix the assertion
And a small bugfix:
- RMQueryContext threw an exception with the query "/". It now works correctly.
Minor bugfix
Minor bugfix in AssertionsFixer, that caused an exception because of an empty XPATH expression. Changed empty to "/" in that specific case, which it should be.
bugfixes
Rules flattening
Now the rules are flattened and added to operational templates.
- when specializing rules, both the original and specialized rules are added to the resulting flat archetype, original rules first
- rules with the same tag name are overwritten (TODO: this is NOT according to specs, we later found out, this will likely be reverted in the future)
- when using archetype roots to compose an archetype out of other archetypes, the rules are added to the combined flattened operational template. All path references are prefixed with the correct paths to make them work in the resulting operational template.
flattening rules, and operational templates with rules have been tested both with automated tests and by hand with a number of archetypes.
Also it is now possible to serialize and deserialize operational templates. One change to the grammar has been made to support this: archetype roots can now optionally have a matches {
section with children, conforming to the ADL 2 specs.
other improvements and bug fixes:
- a rule in the pattern AND <other_fixable_rule> is now treated as two fixable rules
- apath queries with a dot in the id code (eg [id2.1]) now work
0.3.9
0.3.8
Non-backwards compatible changes
- The constraints imposer incorrectly handled existence and cardinality, using cardinality instead of existence. This has been changed to reflect the model: existence now reflects if the value in the model can be null or not. Before, this incorrectly was cardinality. If you use this functionality, the behaviour changes.
- the primitive node id value should be 'id9999' in the specs, but it currently was 'primitive_node_id'. This has been changed back and can break your applications
Other changes
- unique paths had a space between the id-code and the number. This has been removed, so now instead of
/data[id3, 1]
it returns/data[id3,1]
- Apath query findList now works in more cases
- RMQueryContext can now retrieve the path of a given RMObject from the given root. This is experimental and will probably not work in all cases with leaf nodes - should work with all locatables or pathables.
- test coverage has been increased
- interval and MultiplicityInterval have some extra convenience methods added
0.3.7
ADL Validation and functions in rule evaluation
This release adds some basic ADL validation. Also a command line tool is present that loads an .adls file and runs it through the checker. Only basic checks for now, and no specialised archetypes or template validations. See the README.md for usage instructions.
the rule evaluation has been extended with function support. The min and max functions have been implementation. Also the function value_when_undefined has been implemented, with returns the given value, or a predefined other value when the value has not been defined.