-
Task
-
Resolution: None
-
L3 - Default
-
None
-
Not defined
Context:
While implementing a new filter, I realised that filters applied on instance level sometimes have different filter logic than the instance level filtering for viewLevel filters.
So far, my assumption was that applying an instance level filter has the same effect as the instance filtering of an applied viewLevel filter, and our docs imply the same. This was not noticed until now because viewLevel filters were always applied as if they were instance filters, additionally to their own instance level filtering because the ProcessQueryEnhancer did not validate what level a filter is applied on before adding the respective filter to the query. After adjusting this, the differences in filters became more obvious. I could observe two cases where instance level filters behave differently from the instance level filtering of viewLevel filters:
1.: ExecutedFlowNodeFilter
Example: Apply ExecutedFlowNodeFilter NOT IN "userTask1"
Instance filtering of viewLevel filter:
"Show all instances who have executed at least one flowNode which is not "userTask1"", i.e. "Show any instance that has some flowNodes which match the filter"
Instance filtering of instanceLevel filter:
"Show only those instances that have not executed "userTask1", i.e. "Show any instances where all flownodes match the filter"
--> This has been adjusted in the docs, behaviour stays as is because the UI makes different filter behaviour clear.
2.: FlowNodeDurationFilter
Example: Apply 2 Filters: FlowNodeDurationFilter1 wtih "userTask1" less than 1hour and FlowNodeDurationFilter2 with "userTask1" greater than 1 hour.
Instance filtering of viewLevel filter:
"Show all instances where userTask1 was executed in either less than 1hour more than 1hour", ie. "instance with at least one flowNode that fulfils either filter1 or filter2"
An instance where userTask1 has been executed twice (once less than 1hour and once more than 1hour) will be included. Note that on flowNode level, flowNodes still need to match both filter1 and filter2, so all flowNodes will be filtered out for this instance, so the instanceCount will be 1 but the result will be empty.
Instance filtering of instanceLevel filter:
"Show all instances where userTask1 was always executed in both less than 1hour and more than 1hour simultaneously", i.e. "instance with at least one flownode that fulfils filter1 and filter2"
An instance where userTask1 has been executed twice (once less than 1hour and once more than 1hour) will not be included.
--> This needs adjusted.
AT:
- Either: decide the described filter behaviours should stay as is, and evaluate if/how we can communicate this difference to the user (in the docs and UI)
- Or: decide the described filter behaviours should be adjusted to be consistent and adjust accordingly. Note that this will affect existing reports.
This is the controller panel for Smart Panels app
- is related to
-
OPT-5411 FlowNodeDuration filters should use "and" logic for FlowNodeInstance filering
- Open
- links to