Uploaded image for project: 'Camunda Optimize'
  1. Camunda Optimize
  2. OPT-5349

Differences in instance level filtering vs instance filtering of view level filters

XMLWordPrintable

    • 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

              Unassigned Unassigned
              helene.waechtler Helene Waechtler
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: