Skip to content

Commit 6d40520

Browse files
authored
Dr.Egeria: Business Capability, Business Capability Dependency and Digital Support (#486)
* Dr.Egeria: Business Capability, its dependency and Digital Support Mandy Chessell reported that Dr.Egeria did not support BusinessCapability (a Collection subtype, 0715 Digital Business) or the BusinessCapabilityDependency relationship. The DigitalBusiness SDK client already wrapped the API; Dr.Egeria had no commands for it. - Create/Update Business Capability: new collection subtype, sending businessCapabilityType (BusinessCapabilityType enum) and businessImplementationType; routed to DigitalBusiness create/update. - Link/Detach Business Capability Dependency and Link/Detach Digital Support (both UNI_LINK on the live platform, so attach is an upsert). - Specs added through the Spec Editor API; refresh_specs regenerated the format sets and templates. Live on quickstart 9443 (Egeria 81beb8e5): properties stored, update changed the type and kept the implementation type, both relationships appeared with their labels and were gone after detach; throwaway elements deleted and read back as gone. Signed-off-by: Dan Wolfson <dan.wolfson@pdr-associates.com> * Dr.Egeria manual: Business Capability commands Signed-off-by: Dan Wolfson <dan.wolfson@pdr-associates.com> --------- Signed-off-by: Dan Wolfson <dan.wolfson@pdr-associates.com>
1 parent 2d0ec8c commit 6d40520

18 files changed

Lines changed: 3566 additions & 2 deletions

‎docs/dr_egeria_manual.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ Dr.Egeria organizes its commands into "families," each corresponding to a specif
258258
- **Actor Manager**: Manage organizational metadata, including people, teams, organizations, and roles (e.g., `Create Person`, `Create Team`, `Create Organization`, `Create Person Role`). Supports linking team structures and role appointments.
259259
- **Project**: Manage projects and their dependencies or hierarchies (e.g., `Create Project`, `Link Project Dependency`).
260260
- **Collection Manager**: Manage various collections of elements, including Folders, Products, and Agreements (e.g., `Create Collection Folder`, `Create Digital Product`).
261+
- **Business Capabilities** (0715 Digital Business, added 2026-10-24): `Create Business Capability` (a Collection subtype with `Business Capability Type` and `Business Implementation Type`), `Link`/`Detach Business Capability Dependency` (Dependent Capability → Supporting Capability) and `Link`/`Detach Digital Support` (a business capability → the element, such as a digital service or product, that supports it). Both relationships are uni-link, so re-running a Link updates rather than duplicates.
261262
- **Solution Architect**: Manage solution blueprints, components, information supply chains, and design patterns (e.g., `Create Design Pattern`, `Link Nested Design Patterns`, `Link Specialized Design Patterns`, `Link Related Design Patterns`).
262263
- **Concept Models** (0571, added 2026-08-21): `Create Concept Bead`, `Create Concept Bead Attribute`, `Create Concept Bead Relationship`, and 8 relationship commands — `Link Concept Design`, `Link Concept Bead Relationship End`, `Link Typed By Concept Bead`, `Link Is A Concept Bead`, `Link Concept Bead Attribute Link`, `Link Concept Bead Extension`, `Link Solution Component Port`, `Link Solution Port Delegation` (`Detach`/`Unlink`/`Remove` variants auto-derived from each `Link` command). Routed through the existing generic `SolutionArchitectProcessor`/`SolutionLinkProcessor` (new `om_type` branches, no new processor classes needed) — auto-registered via `register_solution_architect_processors()`'s family-driven loop, same as every other Solution Architect command.
263264
- `Create Concept Model` (added 2026-08-21) creates the `ConceptModel` container `Link Concept Design` attaches elements to. No dedicated `/solution-architect/concept-models` REST endpoint exists yet, so this routes through the generic `Collection Manager` creation path instead — added `"Concept Model"` to `COLLECTION_SUBTYPES` (`md_processing_constants.py`), which per this repo's own convention is the entire wiring step (auto-routes to `CollectionManagerProcessor`'s existing generic-collection-subtype fallback, no bespoke pyegeria method needed). Live-verified end to end against a running 6.2-SNAPSHOT server: `Create Concept Model` → `Create Concept Bead` → `Link Concept Design`, with the `ConceptDesign` relationship confirmed present via direct fetch afterward.

‎md_processing/data/compact_commands/commands_collections_compact.json‎

Lines changed: 240 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2272,6 +2272,126 @@
22722272
"max_cardinality": 1,
22732273
"level": "Domain",
22742274
"Journal Entry": ""
2275+
},
2276+
"Business Capability Type": {
2277+
"variable_name": "business_capability_type",
2278+
"inUpdate": true,
2279+
"attr_labels": "",
2280+
"examples": "",
2281+
"default_value": "UNCLASSIFIED",
2282+
"valid_values": [
2283+
"UNCLASSIFIED",
2284+
"BUSINESS_SERVICE",
2285+
"BUSINESS_AREA",
2286+
"BUSINESS_DOMAIN",
2287+
"OTHER"
2288+
],
2289+
"existing_element": "",
2290+
"description": "The kind of business capability (BusinessCapabilityType enum, 0715 Digital Business).",
2291+
"generated": false,
2292+
"style": "Valid Value",
2293+
"user_specified": true,
2294+
"unique": false,
2295+
"input_required": false,
2296+
"min_cardinality": 0,
2297+
"max_cardinality": 1,
2298+
"level": "Domain",
2299+
"Journal Entry": ""
2300+
},
2301+
"Business Implementation Type": {
2302+
"variable_name": "business_implementation_type",
2303+
"inUpdate": true,
2304+
"attr_labels": "",
2305+
"examples": "",
2306+
"default_value": "",
2307+
"valid_values": [],
2308+
"existing_element": "",
2309+
"description": "How the business capability is implemented, e.g. organization, process, or third party.",
2310+
"generated": false,
2311+
"style": "Simple",
2312+
"user_specified": true,
2313+
"unique": false,
2314+
"input_required": false,
2315+
"min_cardinality": 0,
2316+
"max_cardinality": 1,
2317+
"level": "Domain",
2318+
"Journal Entry": ""
2319+
},
2320+
"Dependent Capability": {
2321+
"variable_name": "dependent_capability",
2322+
"inUpdate": true,
2323+
"attr_labels": "",
2324+
"examples": "",
2325+
"default_value": "",
2326+
"valid_values": [],
2327+
"existing_element": "BusinessCapability",
2328+
"description": "The business capability that depends on the supporting capability (end 1 of BusinessCapabilityDependency).",
2329+
"generated": false,
2330+
"style": "Reference Name",
2331+
"user_specified": true,
2332+
"unique": false,
2333+
"input_required": true,
2334+
"min_cardinality": 1,
2335+
"max_cardinality": 1,
2336+
"level": "Domain",
2337+
"Journal Entry": ""
2338+
},
2339+
"Supporting Capability": {
2340+
"variable_name": "supporting_capability",
2341+
"inUpdate": true,
2342+
"attr_labels": "",
2343+
"examples": "",
2344+
"default_value": "",
2345+
"valid_values": [],
2346+
"existing_element": "BusinessCapability",
2347+
"description": "The business capability that supports the dependent capability (end 2 of BusinessCapabilityDependency).",
2348+
"generated": false,
2349+
"style": "Reference Name",
2350+
"user_specified": true,
2351+
"unique": false,
2352+
"input_required": true,
2353+
"min_cardinality": 1,
2354+
"max_cardinality": 1,
2355+
"level": "Domain",
2356+
"Journal Entry": ""
2357+
},
2358+
"Digital Service": {
2359+
"variable_name": "digital_service",
2360+
"inUpdate": true,
2361+
"attr_labels": "",
2362+
"examples": "",
2363+
"default_value": "",
2364+
"valid_values": [],
2365+
"existing_element": "Referenceable",
2366+
"description": "The element (for example a digital service or product) that supports the business capability (end 2 of DigitalSupport).",
2367+
"generated": false,
2368+
"style": "Reference Name",
2369+
"user_specified": true,
2370+
"unique": false,
2371+
"input_required": true,
2372+
"min_cardinality": 1,
2373+
"max_cardinality": 1,
2374+
"level": "Domain",
2375+
"Journal Entry": ""
2376+
},
2377+
"Supported Capability": {
2378+
"variable_name": "supported_capability",
2379+
"inUpdate": true,
2380+
"attr_labels": "",
2381+
"examples": "",
2382+
"default_value": "",
2383+
"valid_values": [],
2384+
"existing_element": "BusinessCapability",
2385+
"description": "The business capability supported by the digital service (end 1 of DigitalSupport).",
2386+
"generated": false,
2387+
"style": "Reference Name",
2388+
"user_specified": true,
2389+
"unique": false,
2390+
"input_required": true,
2391+
"min_cardinality": 1,
2392+
"max_cardinality": 1,
2393+
"level": "Domain",
2394+
"Journal Entry": ""
22752395
}
22762396
},
22772397
"bundles": {
@@ -2397,6 +2517,27 @@
23972517
"Data Description Base": {
23982518
"inherits": "Link Command Base",
23992519
"own_attributes": []
2520+
},
2521+
"Business Capability Base": {
2522+
"inherits": "Collection Base",
2523+
"own_attributes": [
2524+
"Business Capability Type",
2525+
"Business Implementation Type"
2526+
]
2527+
},
2528+
"Business Capability Dependency Base": {
2529+
"inherits": "Link Command Base",
2530+
"own_attributes": [
2531+
"Dependent Capability",
2532+
"Supporting Capability"
2533+
]
2534+
},
2535+
"Digital Support Base": {
2536+
"inherits": "Link Command Base",
2537+
"own_attributes": [
2538+
"Supported Capability",
2539+
"Digital Service"
2540+
]
24002541
}
24012542
},
24022543
"commands": {
@@ -2975,6 +3116,105 @@
29753116
"Element Id"
29763117
],
29773118
"Journal Entry": ""
3119+
},
3120+
"Create Business Capability": {
3121+
"display_name": "Business Capability",
3122+
"qn_prefix": "BusinessCapability",
3123+
"alternate_names": [],
3124+
"family": "Collections",
3125+
"description": "Create a Business Capability - a collection describing a function, capability or skill set of the organization (0715 Digital Business).",
3126+
"verb": "Create",
3127+
"upsert": true,
3128+
"attach": false,
3129+
"level": "Basic",
3130+
"find_method": "CollectionManager.find_collections",
3131+
"find_constraints": "{\"metadata_element_type\": \"BusinessCapability\"}",
3132+
"extra_find": "",
3133+
"extra_constraints": "",
3134+
"OM_TYPE": "BusinessCapability",
3135+
"bundle": "Business Capability Base",
3136+
"custom_attributes": [],
3137+
"Journal Entry": ""
3138+
},
3139+
"Link Business Capability Dependency": {
3140+
"display_name": "Business Capability Dependency",
3141+
"qn_prefix": "",
3142+
"alternate_names": [
3143+
"Link Business Capability to Supporting Capability"
3144+
],
3145+
"family": "Collections",
3146+
"description": "Record that one business capability depends on another (BusinessCapabilityDependency relationship).",
3147+
"verb": "Link",
3148+
"upsert": false,
3149+
"attach": true,
3150+
"level": "Basic",
3151+
"find_method": "",
3152+
"find_constraints": "",
3153+
"extra_find": "",
3154+
"extra_constraints": "",
3155+
"OM_TYPE": "BusinessCapabilityDependency",
3156+
"bundle": "Business Capability Dependency Base",
3157+
"custom_attributes": [],
3158+
"Journal Entry": ""
3159+
},
3160+
"Detach Business Capability Dependency": {
3161+
"display_name": "Business Capability Dependency",
3162+
"qn_prefix": "",
3163+
"alternate_names": [],
3164+
"family": "Collections",
3165+
"description": "Remove the BusinessCapabilityDependency relationship between two business capabilities.",
3166+
"verb": "Detach",
3167+
"upsert": false,
3168+
"attach": false,
3169+
"level": "Basic",
3170+
"find_method": "",
3171+
"find_constraints": "",
3172+
"extra_find": "",
3173+
"extra_constraints": "",
3174+
"OM_TYPE": "BusinessCapabilityDependency",
3175+
"bundle": "Business Capability Dependency Base",
3176+
"custom_attributes": [],
3177+
"Journal Entry": ""
3178+
},
3179+
"Link Digital Support": {
3180+
"display_name": "Digital Support",
3181+
"qn_prefix": "",
3182+
"alternate_names": [
3183+
"Link Business Capability to Digital Service"
3184+
],
3185+
"family": "Collections",
3186+
"description": "Record that an element, such as a digital service or product, supports a business capability (DigitalSupport relationship).",
3187+
"verb": "Link",
3188+
"upsert": false,
3189+
"attach": true,
3190+
"level": "Basic",
3191+
"find_method": "",
3192+
"find_constraints": "",
3193+
"extra_find": "",
3194+
"extra_constraints": "",
3195+
"OM_TYPE": "DigitalSupport",
3196+
"bundle": "Digital Support Base",
3197+
"custom_attributes": [],
3198+
"Journal Entry": ""
3199+
},
3200+
"Detach Digital Support": {
3201+
"display_name": "Digital Support",
3202+
"qn_prefix": "",
3203+
"alternate_names": [],
3204+
"family": "Collections",
3205+
"description": "Remove the DigitalSupport relationship between a business capability and a supporting element.",
3206+
"verb": "Detach",
3207+
"upsert": false,
3208+
"attach": false,
3209+
"level": "Basic",
3210+
"find_method": "",
3211+
"find_constraints": "",
3212+
"extra_find": "",
3213+
"extra_constraints": "",
3214+
"OM_TYPE": "DigitalSupport",
3215+
"bundle": "Digital Support Base",
3216+
"custom_attributes": [],
3217+
"Journal Entry": ""
29783218
}
29793219
}
29803220
}

0 commit comments

Comments
 (0)