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

Camunda 8 API's not complete enough

XMLWordPrintable

    • Icon: Feature Request Feature Request
    • Resolution: Duplicate
    • Icon: L3 - Default L3 - Default
    • None
    • None
    • None

      User Story (Required on creation):

      In order to give our customers the same experience for Camunda 7 and Camunda 8 we compared the API's we are using (C7) to the API's available for Camunda 8.

      Therefore, we figured out lots of missing endpoints and properties. 

      Concepts are different in Camunda 8, we figured out that the following endpoints are missing:

      • DecisionDefinition: There is an api for Process-Definitions in the Operate Api, but nothing about Decision-Definitions
      • Deployment: Nothing found to retrieve deployments.
      • Execution: Nothing found
      • ExternalTasks: Some implementations are done at the Zeebe API, but not all our requirements are fulfilled
      • History (Activity, Detail, Process-Instance, Task, User-Operation, Variable-Instance): There is nothing like History anymore. Is this included in the main endpoints or is it just not done yet?
      • Sub/Super/Root Process Instances: There is currently no option to query for Sub-/Super-/Root Process Instances and it is also not visible through the API's
      • BusinessKey: Not found for Message, Process-Start, Querying Process-Instances, etc.
      • Tenant: Missing overall: we make another request to address this issue.

      In the hints section, I included the details of our analysis. There was no approach to get 100% correctness, but it is still pretty broad.

      We also have to admit, that we are a bit curious about the API-Technologies used. For every API, there is a different technology (gRPC, GraphQL, REST). Is this changing in the future to reduce the tech-overhead for each API? Also the separation.

      The separation between Operate and Task API seems curious. Currently we combine process instance details with task and variable details a lot in our queries. What we would prefer is a single GraphQL API that can be used to execute such queries. As we understand all the data is inside the same (elastic search) database, this could led to better performance. Another option would be, that we use our own indexes / namespace in elastic search - in this case, the indexes used by camunda should be documented. This is a blockbox for us right now.

      As discussed with Jakob Arndt we create a Feature-Request for this matter. If there is any questions regarding the content, do not hesitate to ask.

      We would appreciate an answer regarding to these issues, thank you.

      Functional Requirements (Required before implementation):

      Technical Requirements (Required before implementation):

      Limitations of Scope (Optional):

      Hints (optional):

      The mentioned list of our API-Calls, which we are using at the moment. Red parts are missing, green parts should work.

      DecisionDefinition
      • query
        • key
        • versionTag
        • sortBy
        • sortOrder
        • maxResults
        • startableBy
        • tenant
      • DecisionDefinition
        • id
        • name
        • key
        • deploymentId
        • resource
        • version
        • versionTag
        • tenantId
           
      Deployment
      • queryDeployments
      • deleteDeployment
      • addDeployment
      • Deployment
        • id
        • name
        • source
        • tenantId
        • deploymentTime
      ExecutionService
      • execution/:id (get)
      • execution (query)
        • signalEventSubscriptionName
        • processInstanceId
        • businessKey
        • tenant
        • processInstanceId
      • Execution
        • id
        • processInstanceId
        • ended
        • tenantId
      ExternalTaskService
      • getList
      • fetchAndLock
        • workerId
        • maxTasks
        • usePriority
        • topics
        • asyncResponseTimeout
      • complete
        • workerId
        • variables
        • localVariables
      • :id/errorDetails
      • ExternalTask
        • id
        • topicName
        • processDefinitionId
        • processDefinitionKey
        • activityId
        • processInstanceId
        • priority
        • workerId
        • variables
        • tenantId
        • retries
      • BpmnError
        • workerId
        • errorCode
        • errorMessage
        • variables
        • localVariable
      • failure
        • workerId
        • errorMessage
        • errorDetails
        • retries
        • retryTimeout
      HistoryActivityInstanceService
      • query
        • finished (after, before)
        • started (after, before)
        • tenant
      • HistoryActivityInstance
        • id
        • processDefinitionKey
        • processInstanceId
        • activityType
        • rootProcessInstanceId
      HistoryDetailService
      • query
        • processInstanceIdIn
        • variableUpdates
        • deserializeValues → false
      • HistoryDetail
        • id
        • type
        • executionId
        • userOperationId
        • time
        • variableName
        • variableType
        • value
        • valueInfo
        • revision
      HistoryProcessInstanceService
      • query
        • tenant
        • processInstanceId
        • processInstanceIds
        • processInstanceBusinessKey
        • processInstanceBusinessKeyLike
        • rootProcessInstances
        • processDefinitionKeyIn
        • subProcessInstanceId
        • superProcessInstanceId
        • finished
        • unfinished
        • startedBy
        • started (before, after)
        • finished (before, after)
        • variables
        • → pagination, sorting
      • get (/:id)
      • HistoryProcessInstance
        • id
        • superProcessInstanceId
        • processDefinitionName
        • processDefinitionKey
        • processDefinitionId
        • businessKey
        • startTime
        • endTime
        • startUserId
        • tenantId
        • state
      HistoryTaskService
      • queryAllTasks by...
        • tenant
        • processInstanceId
        • userIdentity
        • processInstanceBusinessKey
        • processInstanceBusinessKeyIn
        • processDefinitionKey
        • dueDate (before, after)
        • followUp (before, after)
        • started (before, after)
        • finished (before, after)
        • taskAssingee
        • variables
        • processVariables
        • taskInvolvedUser
        • → pagination, sorting
      • we are using `orQueries`
      • HistoryTask
        • id
        • processDefinitionKey
        • processDefinitionId
        • executionId
        • activityInstanceId
        • name
        • description
        • deleteReason
        • owner
        • assignee
        • startTime
        • endTime
        • duration
        • taskDefinitionKey
        • priority
        • due
        • parentTaskId
        • followUp
        • tenantId
        • removalTime
        • rootProcessInstanceId
      HistoryUserOperationService
      • query (GET)
        • processInstanceId
        • maxResults
        • → sort
      • HistoryUserOperation
        • id
        • userId
        • timestamp
        • operationId
        • operationType
        • entityType
        • property
        • orgValue
        • newValue
        • processInstanceId
        • executionId
        • taskId
      HistoryVariableInstanceService
      • query (GET/POST)
        • variableName
        • processInstanceIdIn
        • includeDeleted
        • deserialize → false
        • ...
      • /:id/data
        • bytes/stream
      • HistoryVariableInstance
        • id
        • name
        • type
        • value
        • valueInfo
        • processInstanceId
        • createTime
      IncidentService
      • getIncident (list)
        • processInstanceId
      • Incident
        • id
        • processDefinitionId
        • processInstanceId
        • executionId
        • incidentTimestamp
        • incidentType
        • activityId
        • causeIncidentId
        • rootCauseIncidentId
        • configuration
        • tenantId
        • incidentMessage
        • jobDefinitionId
      MessageService
      • correlateMessage
      • message
        • messageName
        • businessKey
        • tenantId
        • withoutTenantId
        • processInstanceId
        • processVariables
        • resultEnabled
      ProcessDefinitionService
      • getList (POST/GET)
        • tenant
        • name
        • nameLike
        • key
        • processDefinitionId
        • processDefinitionIdIn
        • latestVersion
        • versionTag
        • active
        • startablePermissionCheck
        • startableInTasklist
        • notStartableInTasklist
        • startableBy
        • → pagination, sorting
      • count
      • /key/:key/tenant-id/:tenantId
      • :id/xml
      • Start
        • :id/start
        • /key/:key/tenant-id/:tenantId/start
      • ProcessDefinition
        • id
        • name
        • key
        • deploymentId
        • resource
        • version
        • versionTag
        • description
        • tenantId
      • ProcessStart
        • businessKey
        • variables
        • startInstructions
          • type
          • activityId
          • variables
      ProcessInstanceService
      • query (GET/POST)
        • all 
        • rootProcessInstances
        • processInstanceIds
        • subProcessInstance
        • superProcessInstanceId
      • count
      • :id
      • :id (delete)
        • skipCustomListeners
        • skipIoMappings
        • skipSubprocesses
        • failIfNotExists
      • :id/variables 
        • deserializeValues
      • :id/variables/:name (Stream/bytes)
        • deserializeValues
      • ProcessInstance
        • id
        • definitionId
        • businessKey
        • startUserId
        • tenantId
        • suspended
      • Variable
        • type
        • value
        • valueInfo
      SignalService
      • throwSignal
      • Signal
        • name
        • variables
        • tenantId
        • withoutTenantId
        • executionId*
      TaskService
      • query
        • tenant
        • identity
        • processInstanceId
        • processKey
        • processKeyLike
        • assingee
        • → pagination, sorting
      • count
      • :id
      • :id/variables
        • deserializeValues
      • :id/variables/:name (Stream/bytes)
        • deserializeValues
      • :id/complete
        • variables
      • :id/bpmnError
        • errorCode
        • message
        • variables
      • :id/claim
      • :id/assign
      • :id/unclaim
      • :id/getIdentityLinks (getCandidates)
      • :id/updateCandidates (nicht api aber...)
        • :id/addIdentityLink
        • :id/deleteIdentityLink
        • :id/getIdentityLinks
      • :id/setDue
      • :id/defer
      • :id/comments (queryList)
      • :id/createComment
      • Task
        • id
        • name
        • assignee
        • created
        • owner
        • tenantId
        • processDefinitionId
        • taskDefinitionKey
        • priority
        • formKey
        • due
        • followUp
      • TaskComment
        • id
        • userId
        • taskId
        • time
        • message
      • Variable
        • see above
      VariableInstanceService
      • query
        • deserializeValues → false
       

       

        This is the controller panel for Smart Panels app

              richard.kohl Richard Kohl
              oswald.foehn2@finnova.com Oswald Föhn
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: