Parent
Part of #203
Summary
Add the first-class businessId field (introduced in Camunda 8.9) to all human and JSON views that display process instances. This covers the output rendered by commands such as get pi, walk pi, and any other command that renders process-instance rows or trees. Older version views (v8.6, v8.7, v8.8) must remain unchanged.
Scope
In scope
- Add
BusinessId field to the facade model (c8volt/process/model.go → ProcessInstance).
- Add
BusinessId field to the domain model (internal/domain/processinstance.go → ProcessInstance).
- Map
businessId from the v8.9 client response through the service → domain → facade conversion layers.
- Display
businessId in human (table/flat-row) views when present:
flatRowPIWithTimezone — add a bid:<value> tag (similar to p:<root>) when non-empty.
oneLinePIWithTimezone — inherits from flatRowPIWithTimezone.
renderFamilyTree / renderIncidentEnrichedFamilyTree / renderActivityFamilyTree — all delegate to oneLinePIWithTimezone, so they pick it up automatically.
- Include
businessId in JSON output via the existing json:"businessId,omitempty" tag on the facade model.
- Ensure the field is only populated for v8.9 service responses; v8.6/v8.7/v8.8 services must not set it.
Out of scope (covered by other sub-issues of #203)
--bid selector flag and search-backed resolution.
- Setting
businessId on run pi.
- Configuration switch (
app.process_instance_business_id).
- Version-gating errors when business ID features are used on older clusters.
- README documentation updates.
Acceptance Criteria
Implementation Hints
- Follow the existing pattern for optional display tags (see
pTag, eTag, vTag, incidentTag in flatRowPIWithTimezone).
- Place the
bid: tag after the key column and before the BPMN process ID for quick scanning, or after the parent tag — whichever reads better with existing output.
- The v8.8 generated client already contains
BusinessId but it is not yet an official Camunda 8.8 feature — only populate from v8.9 service layer.
Parent
Part of #203
Summary
Add the first-class
businessIdfield (introduced in Camunda 8.9) to all human and JSON views that display process instances. This covers the output rendered by commands such asget pi,walk pi, and any other command that renders process-instance rows or trees. Older version views (v8.6, v8.7, v8.8) must remain unchanged.Scope
In scope
BusinessIdfield to the facade model (c8volt/process/model.go → ProcessInstance).BusinessIdfield to the domain model (internal/domain/processinstance.go → ProcessInstance).businessIdfrom the v8.9 client response through the service → domain → facade conversion layers.businessIdin human (table/flat-row) views when present:flatRowPIWithTimezone— add abid:<value>tag (similar top:<root>) when non-empty.oneLinePIWithTimezone— inherits fromflatRowPIWithTimezone.renderFamilyTree/renderIncidentEnrichedFamilyTree/renderActivityFamilyTree— all delegate tooneLinePIWithTimezone, so they pick it up automatically.businessIdin JSON output via the existingjson:"businessId,omitempty"tag on the facade model.Out of scope (covered by other sub-issues of #203)
--bidselector flag and search-backed resolution.businessIdonrun pi.app.process_instance_business_id).Acceptance Criteria
ProcessInstancefacade struct containsBusinessId stringwithjson:"businessId,omitempty".ProcessInstancedomain struct containsBusinessId string.BusinessIdinto the domain model.BusinessId— existing output is unchanged.get pihuman output showsbid:<value>whenBusinessIdis non-empty.walk pitree output showsbid:<value>in each node line whenBusinessIdis non-empty.get pi --jsonincludes"businessId"in the JSON payload when present.businessId.Implementation Hints
pTag,eTag,vTag,incidentTaginflatRowPIWithTimezone).bid:tag after the key column and before the BPMN process ID for quick scanning, or after the parent tag — whichever reads better with existing output.BusinessIdbut it is not yet an official Camunda 8.8 feature — only populate from v8.9 service layer.