Uploaded image for project: 'camunda BPM'
  1. camunda BPM
  2. CAM-14211

Make the various Query classes more consistent in their APIs

    • Icon: Feature Request Feature Request
    • Resolution: Won't Do
    • Icon: L3 - Default L3 - Default
    • None
    • None
    • engine
    • None

      User Story (Required on creation):

      Just notice that the various xxxQuery objects exposed in the RuntimeService and the RepositoryService (I haven't checked all of them) are all over the place

      VariableInstanceQuery processInstanceIdIn(String... processInstanceIds);

      and

      ProcessDefinitionQuery processDefinitionIdIn(String... ids);

      vs

      ProcessInstanceQuery processInstanceIds(Set<String> processInstanceIds);

       

      So, in order to find all process definitions for a "collection" of process instance IDs, I need a java.util.Set, but to find all deployments from which those definitions came, I need a String array.

      Then, to delete multiple process instances, I need a java.util.List.

       

      All this could be a little more consistent to make the code I use to interact with that API a bit less "hacky".

      Functional Requirements (Required before implementation):

      No new functionality required

      Technical Requirements (Required before implementation):

      Limitations of Scope (Optional):

      Hints (optional):

        This is the controller panel for Smart Panels app

            [CAM-14211] Make the various Query classes more consistent in their APIs

            Hi Gwaptiva,

            Thanks for sharing your feedback. I certainly can see that handling those different parameter types can get annoying.
            Those APIs grew over time with a lot of people working on them. We usually strive to be consistent within one query object (e.g., ProcessInstanceQuery).

            We need to maintain backwards compatibility with our products so removing any of the already existing API methods is not an option.

            The only thing we could do is to provide a method for each parameter type for all queries. But this would certainly bloat the API and would not help understanding it.

            In conclusion, it is a valid suggestion to make the APIs consistent but unfortunately, it is not feasible.

            Best,
            Miklas

            Miklas Boskamp added a comment - Hi Gwaptiva , Thanks for sharing your feedback. I certainly can see that handling those different parameter types can get annoying. Those APIs grew over time with a lot of people working on them. We usually strive to be consistent within one query object (e.g., ProcessInstanceQuery). We need to maintain backwards compatibility with our products so removing any of the already existing API methods is not an option. The only thing we could do is to provide a method for each parameter type for all queries. But this would certainly bloat the API and would not help understanding it. In conclusion, it is a valid suggestion to make the APIs consistent but unfortunately, it is not feasible. Best, Miklas

            Understood; thanks

            Jaap Sperling added a comment - Understood; thanks

              miklas.boskamp Miklas Boskamp
              Gwaptiva Jaap Sperling
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: