@documentation-robotics/cli 0.1.13 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. package/README.md +74 -2
  2. package/dist/analysis/relationship-classifier.js +2 -9
  3. package/dist/analysis/relationship-classifier.js.map +2 -2
  4. package/dist/analyzers/call-graph-utils.js +2 -2
  5. package/dist/analyzers/call-graph-utils.js.map +2 -2
  6. package/dist/analyzers/cards/build.js +171 -0
  7. package/dist/analyzers/cards/build.js.map +7 -0
  8. package/dist/analyzers/cards/classify.js +42 -0
  9. package/dist/analyzers/cards/classify.js.map +7 -0
  10. package/dist/analyzers/cards/edge-index.js +44 -0
  11. package/dist/analyzers/cards/edge-index.js.map +7 -0
  12. package/dist/analyzers/cards/facts.js +46 -0
  13. package/dist/analyzers/cards/facts.js.map +7 -0
  14. package/dist/analyzers/cards/graph.js +42 -0
  15. package/dist/analyzers/cards/graph.js.map +7 -0
  16. package/dist/analyzers/cards/index.js +8 -0
  17. package/dist/analyzers/cards/index.js.map +7 -0
  18. package/dist/analyzers/cards/tier0.js +18 -0
  19. package/dist/analyzers/cards/tier0.js.map +7 -0
  20. package/dist/analyzers/cards/types.js +1 -0
  21. package/dist/analyzers/cards/types.js.map +7 -0
  22. package/dist/analyzers/cbm-analyzer.js +195 -171
  23. package/dist/analyzers/cbm-analyzer.js.map +2 -2
  24. package/dist/analyzers/cbm-responses.js +336 -0
  25. package/dist/analyzers/cbm-responses.js.map +7 -0
  26. package/dist/analyzers/edge-relationships.js +45 -0
  27. package/dist/analyzers/edge-relationships.js.map +7 -0
  28. package/dist/analyzers/mapping-loader.js +9 -0
  29. package/dist/analyzers/mapping-loader.js.map +2 -2
  30. package/dist/analyzers/tier0-rules.js +153 -0
  31. package/dist/analyzers/tier0-rules.js.map +7 -0
  32. package/dist/analyzers/types.js.map +1 -1
  33. package/dist/analyzers/verify-engine.js +22 -19
  34. package/dist/analyzers/verify-engine.js.map +2 -2
  35. package/dist/audit/relationships/ai/prompts.js +10 -10
  36. package/dist/audit/relationships/ai/prompts.js.map +2 -2
  37. package/dist/audit/relationships/analysis/layer-templates.js +52 -52
  38. package/dist/audit/relationships/analysis/layer-templates.js.map +1 -1
  39. package/dist/cli.js +112 -28
  40. package/dist/cli.js.map +3 -3
  41. package/dist/coding-agents/agents/claude-code.js +3 -1
  42. package/dist/coding-agents/agents/claude-code.js.map +2 -2
  43. package/dist/coding-agents/claude-code-client.js +2 -1
  44. package/dist/coding-agents/claude-code-client.js.map +2 -2
  45. package/dist/coding-agents/copilot-client.js +17 -12
  46. package/dist/coding-agents/copilot-client.js.map +2 -2
  47. package/dist/coding-agents/default-permissions.js +152 -0
  48. package/dist/coding-agents/default-permissions.js.map +7 -0
  49. package/dist/coding-agents/drbot-mcp.js +167 -0
  50. package/dist/coding-agents/drbot-mcp.js.map +7 -0
  51. package/dist/commands/add.js +12 -7
  52. package/dist/commands/add.js.map +2 -2
  53. package/dist/commands/analyzer.js +134 -23
  54. package/dist/commands/analyzer.js.map +2 -2
  55. package/dist/commands/audit.js +6 -6
  56. package/dist/commands/audit.js.map +2 -2
  57. package/dist/commands/changeset-verify.js +55 -0
  58. package/dist/commands/changeset-verify.js.map +7 -0
  59. package/dist/commands/changeset.js +261 -147
  60. package/dist/commands/changeset.js.map +2 -2
  61. package/dist/commands/delete.js +52 -19
  62. package/dist/commands/delete.js.map +3 -3
  63. package/dist/commands/element.js +3 -2
  64. package/dist/commands/element.js.map +2 -2
  65. package/dist/commands/farm.js +773 -0
  66. package/dist/commands/farm.js.map +7 -0
  67. package/dist/commands/init.js +11 -1
  68. package/dist/commands/init.js.map +2 -2
  69. package/dist/commands/mcp.js +122 -0
  70. package/dist/commands/mcp.js.map +7 -0
  71. package/dist/commands/relationship.js +251 -47
  72. package/dist/commands/relationship.js.map +2 -2
  73. package/dist/commands/reports.js +1 -1
  74. package/dist/commands/reports.js.map +2 -2
  75. package/dist/commands/update.js +56 -24
  76. package/dist/commands/update.js.map +2 -2
  77. package/dist/commands/upgrade.js +99 -11
  78. package/dist/commands/upgrade.js.map +3 -3
  79. package/dist/commands/validate.js +41 -3
  80. package/dist/commands/validate.js.map +2 -2
  81. package/dist/commands/version.js +2 -2
  82. package/dist/commands/version.js.map +2 -2
  83. package/dist/commands/visualize.js +4 -3
  84. package/dist/commands/visualize.js.map +2 -2
  85. package/dist/config.js +83 -0
  86. package/dist/config.js.map +7 -0
  87. package/dist/core/annotation-store.js +138 -0
  88. package/dist/core/annotation-store.js.map +7 -0
  89. package/dist/core/catalog-migration.js +33 -0
  90. package/dist/core/catalog-migration.js.map +7 -0
  91. package/dist/core/changeset-analysis.js +421 -0
  92. package/dist/core/changeset-analysis.js.map +7 -0
  93. package/dist/core/changeset-base-index.js +153 -0
  94. package/dist/core/changeset-base-index.js.map +7 -0
  95. package/dist/core/changeset-brief-delta.js +102 -0
  96. package/dist/core/changeset-brief-delta.js.map +7 -0
  97. package/dist/core/changeset-graph.js +281 -0
  98. package/dist/core/changeset-graph.js.map +7 -0
  99. package/dist/core/changeset-only-guard.js +32 -0
  100. package/dist/core/changeset-only-guard.js.map +7 -0
  101. package/dist/core/changeset-summary.js +68 -0
  102. package/dist/core/changeset-summary.js.map +7 -0
  103. package/dist/core/changeset-validator.js +66 -20
  104. package/dist/core/changeset-validator.js.map +2 -2
  105. package/dist/core/changeset-verify.js +518 -0
  106. package/dist/core/changeset-verify.js.map +7 -0
  107. package/dist/core/changeset.js +56 -9
  108. package/dist/core/changeset.js.map +2 -2
  109. package/dist/core/element-type-migration.js +145 -0
  110. package/dist/core/element-type-migration.js.map +7 -0
  111. package/dist/core/farm-manifest.js +140 -0
  112. package/dist/core/farm-manifest.js.map +7 -0
  113. package/dist/core/farm-sync-engine.js +346 -0
  114. package/dist/core/farm-sync-engine.js.map +7 -0
  115. package/dist/core/farm-sync-state.js +167 -0
  116. package/dist/core/farm-sync-state.js.map +7 -0
  117. package/dist/core/manifest.js +6 -3
  118. package/dist/core/manifest.js.map +2 -2
  119. package/dist/core/migration-registry.js +84 -1
  120. package/dist/core/migration-registry.js.map +2 -2
  121. package/dist/core/model-upgrade.js +102 -0
  122. package/dist/core/model-upgrade.js.map +7 -0
  123. package/dist/core/model.js +257 -44
  124. package/dist/core/model.js.map +3 -3
  125. package/dist/core/mutation-handler.js +71 -6
  126. package/dist/core/mutation-handler.js.map +2 -2
  127. package/dist/core/relationship-migration-table.js +6639 -0
  128. package/dist/core/relationship-migration-table.js.map +7 -0
  129. package/dist/core/relationship-migration.js +272 -0
  130. package/dist/core/relationship-migration.js.map +7 -0
  131. package/dist/core/relationship-prune.js +49 -0
  132. package/dist/core/relationship-prune.js.map +7 -0
  133. package/dist/core/relationship-staging.js +68 -0
  134. package/dist/core/relationship-staging.js.map +7 -0
  135. package/dist/core/relationships.js +26 -4
  136. package/dist/core/relationships.js.map +2 -2
  137. package/dist/core/report-data-model.js +7 -13
  138. package/dist/core/report-data-model.js.map +2 -2
  139. package/dist/core/staged-changeset-storage.js +64 -17
  140. package/dist/core/staged-changeset-storage.js.map +2 -2
  141. package/dist/core/staged-source-reference.js +28 -0
  142. package/dist/core/staged-source-reference.js.map +7 -0
  143. package/dist/core/staging-area.js +83 -18
  144. package/dist/core/staging-area.js.map +2 -2
  145. package/dist/core/virtual-projection.js +14 -5
  146. package/dist/core/virtual-projection.js.map +2 -2
  147. package/dist/export/archimate-exporter.js +1 -0
  148. package/dist/export/archimate-exporter.js.map +2 -2
  149. package/dist/generated/compiled-validators.js +2 -2
  150. package/dist/generated/compiled-validators.js.map +2 -2
  151. package/dist/generated/layer-registry.js +16 -16
  152. package/dist/generated/layer-registry.js.map +2 -2
  153. package/dist/generated/node-types.js +186 -168
  154. package/dist/generated/node-types.js.map +2 -2
  155. package/dist/generated/relationship-index.js +2209 -7727
  156. package/dist/generated/relationship-index.js.map +2 -2
  157. package/dist/integrations/claude_code/agents/dr-architect.md +16 -3
  158. package/dist/integrations/claude_code/agents/dr-extractor.md +1 -1
  159. package/dist/integrations/claude_code/commands/dr-analyzer.md +565 -0
  160. package/dist/integrations/claude_code/commands/dr-map.md +13 -0
  161. package/dist/integrations/claude_code/commands/dr-plan.md +40 -0
  162. package/dist/integrations/claude_code/commands/dr-relate.md +106 -96
  163. package/dist/integrations/claude_code/commands/dr-verify.md +45 -2
  164. package/dist/integrations/claude_code/docs/END_TO_END_WALKTHROUGH.md +14 -0
  165. package/dist/integrations/claude_code/docs/MCP_SERVER.md +79 -0
  166. package/dist/integrations/claude_code/docs/QUICK_START.md +37 -8
  167. package/dist/integrations/claude_code/docs/README.md +52 -1
  168. package/dist/integrations/claude_code/skills/dr_01_motivation_layer/SKILL.md +93 -72
  169. package/dist/integrations/claude_code/skills/dr_02_business_layer/SKILL.md +163 -126
  170. package/dist/integrations/claude_code/skills/dr_03_product_layer/SKILL.md +161 -126
  171. package/dist/integrations/claude_code/skills/dr_04_security_layer/SKILL.md +153 -133
  172. package/dist/integrations/claude_code/skills/dr_05_application_layer/SKILL.md +129 -100
  173. package/dist/integrations/claude_code/skills/dr_06_technology_layer/SKILL.md +111 -94
  174. package/dist/integrations/claude_code/skills/dr_07_api_layer/SKILL.md +143 -157
  175. package/dist/integrations/claude_code/skills/dr_08_data_model_layer/SKILL.md +117 -33
  176. package/dist/integrations/claude_code/skills/dr_09_dataset_layer/SKILL.md +74 -25
  177. package/dist/integrations/claude_code/skills/dr_10_ux_layer/SKILL.md +88 -12
  178. package/dist/integrations/claude_code/skills/dr_11_navigation_layer/SKILL.md +83 -24
  179. package/dist/integrations/claude_code/skills/dr_12_apm_layer/SKILL.md +57 -12
  180. package/dist/integrations/claude_code/skills/dr_13_testing_layer/SKILL.md +92 -15
  181. package/dist/integrations/claude_code/skills/dr_change_planning/SKILL.md +119 -0
  182. package/dist/integrations/claude_code/skills/dr_changeset_reviewer/SKILL.md +3 -0
  183. package/dist/integrations/claude_code/skills/dr_engineering_guide/SKILL.md +1 -1
  184. package/dist/integrations/github_copilot/agents/dr-architect.md +1 -1
  185. package/dist/integrations/github_copilot/skills/dr_01_motivation_layer/SKILL.md +182 -102
  186. package/dist/integrations/github_copilot/skills/dr_02_business_layer/SKILL.md +266 -148
  187. package/dist/integrations/github_copilot/skills/dr_03_product_layer/SKILL.md +547 -86
  188. package/dist/integrations/github_copilot/skills/dr_04_security_layer/SKILL.md +164 -169
  189. package/dist/integrations/github_copilot/skills/dr_05_application_layer/SKILL.md +420 -150
  190. package/dist/integrations/github_copilot/skills/dr_06_technology_layer/SKILL.md +331 -138
  191. package/dist/integrations/github_copilot/skills/dr_07_api_layer/SKILL.md +265 -201
  192. package/dist/integrations/github_copilot/skills/dr_08_data_model_layer/SKILL.md +181 -58
  193. package/dist/integrations/github_copilot/skills/dr_09_dataset_layer/SKILL.md +209 -57
  194. package/dist/integrations/github_copilot/skills/dr_10_ux_layer/SKILL.md +277 -112
  195. package/dist/integrations/github_copilot/skills/dr_11_navigation_layer/SKILL.md +219 -70
  196. package/dist/integrations/github_copilot/skills/dr_12_apm_layer/SKILL.md +189 -105
  197. package/dist/integrations/github_copilot/skills/dr_13_testing_layer/SKILL.md +222 -102
  198. package/dist/integrations/github_copilot/skills/dr_change_planning/SKILL.md +119 -0
  199. package/dist/integrations/github_copilot/skills/dr_changeset_reviewer/SKILL.md +3 -0
  200. package/dist/integrations/hash-utils.js.map +2 -2
  201. package/dist/mcp/api-key-manager.js +111 -0
  202. package/dist/mcp/api-key-manager.js.map +7 -0
  203. package/dist/mcp/changeset-only.js +34 -0
  204. package/dist/mcp/changeset-only.js.map +7 -0
  205. package/dist/mcp/http-transport.js +176 -0
  206. package/dist/mcp/http-transport.js.map +7 -0
  207. package/dist/mcp/resource-registry.js +97 -0
  208. package/dist/mcp/resource-registry.js.map +7 -0
  209. package/dist/mcp/tool-registry.js +60 -0
  210. package/dist/mcp/tool-registry.js.map +7 -0
  211. package/dist/mcp/tools/annotation-create.js +39 -0
  212. package/dist/mcp/tools/annotation-create.js.map +7 -0
  213. package/dist/mcp/tools/annotation-delete.js +29 -0
  214. package/dist/mcp/tools/annotation-delete.js.map +7 -0
  215. package/dist/mcp/tools/annotation-get.js +29 -0
  216. package/dist/mcp/tools/annotation-get.js.map +7 -0
  217. package/dist/mcp/tools/annotation-list.js +24 -0
  218. package/dist/mcp/tools/annotation-list.js.map +7 -0
  219. package/dist/mcp/tools/annotation-reply.js +34 -0
  220. package/dist/mcp/tools/annotation-reply.js.map +7 -0
  221. package/dist/mcp/tools/annotation-shared.js +10 -0
  222. package/dist/mcp/tools/annotation-shared.js.map +7 -0
  223. package/dist/mcp/tools/annotation-update.js +39 -0
  224. package/dist/mcp/tools/annotation-update.js.map +7 -0
  225. package/dist/mcp/tools/changeset-analysis-tools.js +78 -0
  226. package/dist/mcp/tools/changeset-analysis-tools.js.map +7 -0
  227. package/dist/mcp/tools/changeset-editing.js +184 -0
  228. package/dist/mcp/tools/changeset-editing.js.map +7 -0
  229. package/dist/mcp/tools/changeset-lifecycle.js +83 -0
  230. package/dist/mcp/tools/changeset-lifecycle.js.map +7 -0
  231. package/dist/mcp/tools/changeset-list.js +33 -0
  232. package/dist/mcp/tools/changeset-list.js.map +7 -0
  233. package/dist/mcp/tools/changeset-shared.js +31 -0
  234. package/dist/mcp/tools/changeset-shared.js.map +7 -0
  235. package/dist/mcp/tools/changeset-show.js +55 -0
  236. package/dist/mcp/tools/changeset-show.js.map +7 -0
  237. package/dist/mcp/tools/changeset-verify.js +43 -0
  238. package/dist/mcp/tools/changeset-verify.js.map +7 -0
  239. package/dist/mcp/tools/chat-launch.js +50 -0
  240. package/dist/mcp/tools/chat-launch.js.map +7 -0
  241. package/dist/mcp/tools/chat-status.js +26 -0
  242. package/dist/mcp/tools/chat-status.js.map +7 -0
  243. package/dist/mcp/tools/index.js +65 -0
  244. package/dist/mcp/tools/index.js.map +7 -0
  245. package/dist/mcp/tools/model-add.js +107 -0
  246. package/dist/mcp/tools/model-add.js.map +7 -0
  247. package/dist/mcp/tools/model-delete.js +99 -0
  248. package/dist/mcp/tools/model-delete.js.map +7 -0
  249. package/dist/mcp/tools/model-export.js +72 -0
  250. package/dist/mcp/tools/model-export.js.map +7 -0
  251. package/dist/mcp/tools/model-info.js +51 -0
  252. package/dist/mcp/tools/model-info.js.map +7 -0
  253. package/dist/mcp/tools/model-list.js +53 -0
  254. package/dist/mcp/tools/model-list.js.map +7 -0
  255. package/dist/mcp/tools/model-reload.js +34 -0
  256. package/dist/mcp/tools/model-reload.js.map +7 -0
  257. package/dist/mcp/tools/model-search.js +102 -0
  258. package/dist/mcp/tools/model-search.js.map +7 -0
  259. package/dist/mcp/tools/model-show.js +68 -0
  260. package/dist/mcp/tools/model-show.js.map +7 -0
  261. package/dist/mcp/tools/model-stats.js +22 -0
  262. package/dist/mcp/tools/model-stats.js.map +7 -0
  263. package/dist/mcp/tools/model-trace.js +118 -0
  264. package/dist/mcp/tools/model-trace.js.map +7 -0
  265. package/dist/mcp/tools/model-update.js +121 -0
  266. package/dist/mcp/tools/model-update.js.map +7 -0
  267. package/dist/mcp/tools/model-validate.js +78 -0
  268. package/dist/mcp/tools/model-validate.js.map +7 -0
  269. package/dist/mcp/tools/relationship-tools.js +98 -0
  270. package/dist/mcp/tools/relationship-tools.js.map +7 -0
  271. package/dist/mcp/tools/shared.js +126 -0
  272. package/dist/mcp/tools/shared.js.map +7 -0
  273. package/dist/mcp/tools/spec-type.js +90 -0
  274. package/dist/mcp/tools/spec-type.js.map +7 -0
  275. package/dist/reports/model-layer-report-generator.js +5 -3
  276. package/dist/reports/model-layer-report-generator.js.map +2 -2
  277. package/dist/reports/model-readme-generator.js +116 -0
  278. package/dist/reports/model-readme-generator.js.map +7 -0
  279. package/dist/reports/model-report-data.js +37 -1
  280. package/dist/reports/model-report-data.js.map +2 -2
  281. package/dist/reports/model-report-orchestrator.js +29 -6
  282. package/dist/reports/model-report-orchestrator.js.map +2 -2
  283. package/dist/reports/model-report-utils.js +9 -0
  284. package/dist/reports/model-report-utils.js.map +7 -0
  285. package/dist/schemas/bundled/analyzers/cbm.json +1186 -68
  286. package/dist/schemas/bundled/analyzers/manifest.json +2 -2
  287. package/dist/schemas/bundled/api.json +1029 -1658
  288. package/dist/schemas/bundled/apm.json +499 -734
  289. package/dist/schemas/bundled/application.json +745 -370
  290. package/dist/schemas/bundled/base.json +3 -220
  291. package/dist/schemas/bundled/business.json +452 -366
  292. package/dist/schemas/bundled/data-model.json +403 -383
  293. package/dist/schemas/bundled/data-store.json +334 -558
  294. package/dist/schemas/bundled/manifest.json +18 -18
  295. package/dist/schemas/bundled/motivation.json +349 -368
  296. package/dist/schemas/bundled/navigation.json +415 -731
  297. package/dist/schemas/bundled/product.json +325 -159
  298. package/dist/schemas/bundled/security.json +864 -1232
  299. package/dist/schemas/bundled/technology.json +574 -703
  300. package/dist/schemas/bundled/testing.json +718 -1643
  301. package/dist/schemas/bundled/ux.json +739 -1352
  302. package/dist/server/schemas.js +8 -0
  303. package/dist/server/schemas.js.map +2 -2
  304. package/dist/server/server.js +234 -31
  305. package/dist/server/server.js.map +2 -2
  306. package/dist/server-entry.js +2 -1
  307. package/dist/server-entry.js.map +2 -2
  308. package/dist/telemetry/config.js +2 -40
  309. package/dist/telemetry/config.js.map +2 -2
  310. package/dist/telemetry/index.js +1 -1
  311. package/dist/types/index.js.map +2 -2
  312. package/dist/utils/ansi-suppressor.js +23 -0
  313. package/dist/utils/ansi-suppressor.js.map +7 -0
  314. package/dist/utils/attribute-patch.js +41 -0
  315. package/dist/utils/attribute-patch.js.map +7 -0
  316. package/dist/utils/color-utils.js +34 -0
  317. package/dist/utils/color-utils.js.map +7 -0
  318. package/dist/utils/element-reference-shape.js +15 -1
  319. package/dist/utils/element-reference-shape.js.map +3 -3
  320. package/dist/utils/error-hints.js +29 -0
  321. package/dist/utils/error-hints.js.map +7 -0
  322. package/dist/utils/errors.js +75 -10
  323. package/dist/utils/errors.js.map +2 -2
  324. package/dist/utils/globals.js +17 -1
  325. package/dist/utils/globals.js.map +2 -2
  326. package/dist/utils/project-paths.js +50 -3
  327. package/dist/utils/project-paths.js.map +2 -2
  328. package/dist/utils/reference-path-parser.js +49 -0
  329. package/dist/utils/reference-path-parser.js.map +7 -0
  330. package/dist/utils/source-reference.js +17 -10
  331. package/dist/utils/source-reference.js.map +2 -2
  332. package/dist/utils/spec-version.js +10 -2
  333. package/dist/utils/spec-version.js.map +2 -2
  334. package/dist/validators/composed-reference-validator.js +240 -0
  335. package/dist/validators/composed-reference-validator.js.map +7 -0
  336. package/dist/validators/reference-validator.js +57 -13
  337. package/dist/validators/reference-validator.js.map +3 -3
  338. package/dist/validators/relationship-schema-validator.js +33 -5
  339. package/dist/validators/relationship-schema-validator.js.map +3 -3
  340. package/dist/validators/schema-validator.js +27 -9
  341. package/dist/validators/schema-validator.js.map +2 -2
  342. package/dist/validators/types.js.map +1 -1
  343. package/dist/viewer/README.md +6 -6
  344. package/dist/viewer/assets/main-CxzcuU_o.js +84 -0
  345. package/dist/viewer/assets/main-j-7ULYpm.css +1 -0
  346. package/dist/viewer/index.html +2 -2
  347. package/dist/viewer/manifest.json +10 -10
  348. package/dist/viewer/version.json +1 -1
  349. package/package.json +7 -3
  350. package/dist/viewer/assets/main-B7AOQXXX.js +0 -81
  351. package/dist/viewer/assets/main-vdrFrG7q.css +0 -1
@@ -1,10 +1,10 @@
1
1
  {
2
- "specVersion": "0.9.0",
2
+ "specVersion": "0.11.0",
3
3
  "layer": {
4
4
  "id": "business",
5
5
  "number": 2,
6
6
  "name": "Business Layer",
7
- "description": "Layer 2: Business Layer",
7
+ "description": "Describes what the organization does independently of the software that supports it: business actors and roles, collaborations and interfaces, processes, functions, interactions and events, business services and business objects, and the business capabilities the organization has (ArchiMate 3.2 business layer, with the strategy layer's Capability). Elements here are realized by application services and consume no implementation detail. Modelling rules: actors fill roles, and roles and collaborations are assigned to the processes, functions and interactions they perform (assigned-to); behaviour is never assigned to an actor directly. Internal behaviour realizes business services, which interfaces offer (assigned-to) and which serve actors, roles and processes. Only behaviour accesses business objects and contracts; actors, roles and interfaces reach information through the behaviour assigned to them. Events trigger processes and interactions, and behaviour raises events (triggers); a hand-off between behaviours is flows-to, and a function, having no start, is reached by flows rather than triggered. A business capability is an ability the organization has: business functions and processes realize it, capabilities aggregate narrower capabilities, and software capabilities (product layer) contribute by realizing the business functions behind it. Business services and business capabilities carry the main link to motivation: services realize goals and outcomes, satisfy requirements and deliver value; capabilities support goals and realize outcomes; processes may also realize outcomes and satisfy requirements.",
8
8
  "inspired_by": {
9
9
  "standard": "ArchiMate 3.2",
10
10
  "version": "3.2",
@@ -12,6 +12,7 @@
12
12
  },
13
13
  "node_types": [
14
14
  "business.businessactor",
15
+ "business.businesscapability",
15
16
  "business.businesscollaboration",
16
17
  "business.businessevent",
17
18
  "business.businessfunction",
@@ -30,7 +31,7 @@
30
31
  "businessactor": {
31
32
  "$schema": "http://json-schema.org/draft-07/schema#",
32
33
  "title": "BusinessActor",
33
- "description": "An active structure element representing an organizational entity (person, department, or external organization) capable of performing behavior. BusinessActors are assigned to BusinessRoles and may be associated with BusinessServices they use or provide.",
34
+ "description": "An active structure element denoting a specific, nameable organizational entity (an individual person, a team or department, or an external organization such as a customer or supplier) that exists independently of any responsibility it holds and can be assigned to BusinessRoles to perform behavior. It denotes who the entity is, not what responsibility it carries. Use BusinessRole instead when the element names a set of responsibilities or authorizations, such as 'Approver' or 'Account Holder', that different people or organizations could fill, rather than a concrete entity. Use BusinessCollaboration instead when the element is a temporary or contextual grouping of roles that act jointly, such as a review board formed per case, rather than a standing organizational entity with its own identity. Use BusinessInterface instead when the element is a channel or access point, such as a call center, web portal or front desk, through which services are offered, rather than the entity offering or using them. Use BusinessObject instead when the code symbol is a data record about a party, such as a Customer table row, and the model needs the information itself rather than the organizational entity acting on it.",
34
35
  "allOf": [
35
36
  {
36
37
  "$ref": "urn:dr:spec:base:spec-node"
@@ -50,18 +51,80 @@
50
51
  "type": "object",
51
52
  "properties": {
52
53
  "documentation": {
53
- "type": "string"
54
+ "type": "string",
55
+ "description": "Free-text description of the organizational entity: who it is, whether it is internal or external, and its scope (person, unit or organization). Set it whenever the name alone does not make the entity's identity and boundary clear."
54
56
  }
55
57
  },
56
58
  "additionalProperties": false
57
59
  }
58
60
  },
61
+ "x-dr-standard": "ArchiMate 3.2 §8.2.1 Business Actor",
62
+ "x-dr-evidence": [
63
+ "A domain or party-model class or enum value naming an organizational entity, such as Customer, Supplier, Partner, Department or Organization, that holds identity fields (legal name, org ID, tax number) and is referenced as the initiator or owner of business transactions.",
64
+ "Requirements, use-case or BPMN documentation that lists named participants or pools (e.g., 'Actors: Customer, Finance Department, Payment Provider'), or a swimlane labeled with a department or external company.",
65
+ "Integration or tenant configuration that identifies concrete external organizations or internal units, such as partner IDs, tenant or organization records, or supplier onboarding entries, on whose behalf the system acts."
66
+ ],
67
+ "x-dr-distinguish": {
68
+ "business.businessrole": "the element names a set of responsibilities or authorizations, such as 'Approver' or 'Account Holder', that different people or organizations could fill, rather than a concrete entity.",
69
+ "business.businesscollaboration": "the element is a temporary or contextual grouping of roles that act jointly, such as a review board formed per case, rather than a standing organizational entity with its own identity.",
70
+ "business.businessinterface": "the element is a channel or access point, such as a call center, web portal or front desk, through which services are offered, rather than the entity offering or using them.",
71
+ "business.businessobject": "the code symbol is a data record about a party, such as a Customer table row, and the model needs the information itself rather than the organizational entity acting on it."
72
+ },
59
73
  "$id": "urn:dr:spec:node:business.businessactor"
60
74
  },
75
+ "businesscapability": {
76
+ "$schema": "http://json-schema.org/draft-07/schema#",
77
+ "title": "BusinessCapability",
78
+ "description": "An ability the organization possesses or intends to possess, stated as what the business can do (e.g. 'Share data with partners', 'Settle insurance claims', 'Onboard new customers'), independent of how, by whom or with what software it is done. It is stable while the processes, functions, people and systems behind it change, and capabilities nest into a capability map. The business functions and processes that carry out the ability realize it, and software capabilities contribute through those business functions. Use SoftwareCapability (product layer) instead when the ability belongs to the software platform (e.g. 'Save documents to files'), which realizes a business function, rather than to the organization. Use BusinessFunction instead when the element is a standing area of work grouped by the competency or resources it needs (e.g. 'Claims Handling'), performed by a role, rather than the ability that such work realizes. Use BusinessService instead when the element is externally visible behaviour offered to a consumer, rather than an internal ability of the organization. Use Goal (motivation layer) instead when the element states an end the organization wants to reach rather than an ability it has.",
79
+ "allOf": [
80
+ {
81
+ "$ref": "urn:dr:spec:base:spec-node"
82
+ }
83
+ ],
84
+ "properties": {
85
+ "spec_node_id": {
86
+ "const": "business.businesscapability"
87
+ },
88
+ "layer_id": {
89
+ "const": "business"
90
+ },
91
+ "type": {
92
+ "const": "businesscapability"
93
+ },
94
+ "attributes": {
95
+ "type": "object",
96
+ "properties": {
97
+ "documentation": {
98
+ "type": "string",
99
+ "description": "Free-text description of the ability, its scope and the outcomes it enables; set whenever the name alone does not make the ability unambiguous."
100
+ },
101
+ "level": {
102
+ "type": "integer",
103
+ "minimum": 1,
104
+ "description": "Depth of the capability in the organization's capability map, 1 for a top-level capability."
105
+ }
106
+ },
107
+ "additionalProperties": false
108
+ }
109
+ },
110
+ "x-dr-standard": "ArchiMate 3.2 §7.3.1 Capability (Strategy Layer), placed in the business layer because DR has no strategy layer",
111
+ "x-dr-evidence": [
112
+ "a business capability map, enterprise architecture document or strategy deck listing what the organization is able to do (e.g. a level-1/level-2 capability decomposition)",
113
+ "architecture decision records, roadmaps or OKRs that name an organizational ability to build or improve (e.g. 'become able to settle claims in one day') independent of any system",
114
+ "README or docs sections that map the software's modules to the business abilities they support"
115
+ ],
116
+ "x-dr-distinguish": {
117
+ "product.softwarecapability": "the ability belongs to the software platform (e.g. 'Save documents to files') rather than to the organization",
118
+ "business.businessfunction": "the element is a standing area of work performed by a role and grouped by competency, rather than the ability that work realizes",
119
+ "business.businessservice": "the element is externally visible behaviour offered to a consumer rather than an internal ability",
120
+ "motivation.goal": "the element states an end to reach rather than an ability the organization has"
121
+ },
122
+ "$id": "urn:dr:spec:node:business.businesscapability"
123
+ },
61
124
  "businesscollaboration": {
62
125
  "$schema": "http://json-schema.org/draft-07/schema#",
63
126
  "title": "BusinessCollaboration",
64
- "description": "An active structure element representing an aggregate of two or more BusinessRoles that work together to perform collective behavior (BusinessInteraction). The collaboration is meaningful only in the context of its participating roles.",
127
+ "description": "An active structure element that is a temporary or permanent grouping of two or more BusinessRoles (which BusinessActors fill) jointly assigned to collective behavior that none of them performs alone. It has no identity apart from its participants: removing participants below two dissolves it. Use BusinessRole instead when the element is a single set of responsibilities assignable to one actor, even if many actors may fill it. Use BusinessActor instead when the grouping is a standing organizational unit (department, team, partner company) with its own identity, independent of which roles it combines. Use BusinessInteraction instead when you are modelling the joint behavior itself (e.g. 'negotiate terms') rather than the group of participants that performs it. Use Contract instead when you are modelling the recorded agreement binding the parties rather than the parties acting together.",
65
128
  "allOf": [
66
129
  {
67
130
  "$ref": "urn:dr:spec:base:spec-node"
@@ -81,7 +144,8 @@
81
144
  "type": "object",
82
145
  "properties": {
83
146
  "documentation": {
84
- "type": "string"
147
+ "type": "string",
148
+ "description": "Free-text prose describing the collaboration's purpose, its participating roles and the collective behavior it exists to perform; set whenever the element name alone does not make the participants and scope clear."
85
149
  },
86
150
  "properties": {
87
151
  "type": "object",
@@ -91,12 +155,24 @@
91
155
  "additionalProperties": false
92
156
  }
93
157
  },
158
+ "x-dr-standard": "ArchiMate 3.2 §8.2.3 Business Collaboration",
159
+ "x-dr-evidence": [
160
+ "a BPMN collaboration diagram or workflow definition declaring two or more participant pools/lanes (e.g. Buyer and Seller) that exchange messages within one flow",
161
+ "a domain class or config entity such as ReviewBoard, Partnership or JointVenture whose fields reference multiple distinct participant role types and which is used to gate a multi-party step (e.g. requires approvals from each role)",
162
+ "approval or sign-off rules (e.g. a four-eyes or dual-control policy) listing several named roles that must act together before a business step completes"
163
+ ],
164
+ "x-dr-distinguish": {
165
+ "business.businessrole": "the element is a single set of responsibilities assignable to one actor, even if many actors may fill it",
166
+ "business.businessactor": "the grouping is a standing organizational unit (department, team, partner company) with its own identity, independent of which roles it combines",
167
+ "business.businessinteraction": "you are modelling the joint behavior itself (e.g. 'negotiate terms') rather than the group of participants that performs it",
168
+ "business.contract": "you are modelling the recorded agreement binding the parties rather than the parties acting together"
169
+ },
94
170
  "$id": "urn:dr:spec:node:business.businesscollaboration"
95
171
  },
96
172
  "businessevent": {
97
173
  "$schema": "http://json-schema.org/draft-07/schema#",
98
174
  "title": "BusinessEvent",
99
- "description": "A behavior element that represents an organizational state change, such as a customer order placed or a contract signed, that can trigger or result from a BusinessProcess or BusinessFunction.",
175
+ "description": "A behavior element that denotes an instantaneous, named occurrence of a business state change (e.g., order placed, contract signed, month-end reached) with no duration and no performer of its own. It exists only to trigger a BusinessProcess or BusinessInteraction, or to be raised by a BusinessProcess, BusinessFunction or BusinessInteraction; it is never accessed like information, and a hand-off between behaviours that involves no named occurrence is a flow, not an event. Use BusinessProcess instead when the element has duration, ordered steps, or a performing actor or role, rather than marking a single point in time. Use BusinessObject instead when the thing being modelled is the information record or message payload that carries the facts (e.g., the Order document), not the occurrence itself (OrderPlaced). Use BusinessInteraction instead when the element is collective behavior jointly carried out by several roles in a collaboration, not the moment that starts or ends that behavior.",
100
176
  "allOf": [
101
177
  {
102
178
  "$ref": "urn:dr:spec:base:spec-node"
@@ -116,7 +192,8 @@
116
192
  "type": "object",
117
193
  "properties": {
118
194
  "documentation": {
119
- "type": "string"
195
+ "type": "string",
196
+ "description": "Free-text explanation of the business occurrence, giving the state change it marks, its source, and the condition under which it is raised; set it whenever the event name alone does not make the trigger condition unambiguous."
120
197
  },
121
198
  "type": {
122
199
  "type": "string",
@@ -132,12 +209,23 @@
132
209
  "additionalProperties": false
133
210
  }
134
211
  },
212
+ "x-dr-standard": "ArchiMate 3.2 §8.3.4 Business Event",
213
+ "x-dr-evidence": [
214
+ "Past-tense domain-event classes or records such as OrderPlaced or ContractSigned that are published to an event bus, outbox or message broker topic named after a business occurrence.",
215
+ "Cron or scheduler entries (e.g., a month-end or renewal-due job) whose firing starts a business workflow, indicating a timer-type event.",
216
+ "Start, intermediate or end events in BPMN or workflow-engine definitions, or business-named channels in an AsyncAPI or event-catalog document."
217
+ ],
218
+ "x-dr-distinguish": {
219
+ "business.businessprocess": "the element has duration, ordered steps, or a performing actor or role, rather than marking a single point in time.",
220
+ "business.businessobject": "the thing being modelled is the information record or message payload that carries the facts (e.g., the Order document), not the occurrence itself (OrderPlaced).",
221
+ "business.businessinteraction": "the element is collective behavior jointly carried out by several roles in a collaboration, not the moment that starts or ends that behavior."
222
+ },
135
223
  "$id": "urn:dr:spec:node:business.businessevent"
136
224
  },
137
225
  "businessfunction": {
138
226
  "$schema": "http://json-schema.org/draft-07/schema#",
139
227
  "title": "BusinessFunction",
140
- "description": "A behavior element that groups behavior based on required capabilities, skills, or resources (e.g., HR management, financial reporting). Unlike BusinessProcess, it is not goal-oriented but competency-oriented.",
228
+ "description": "A business behavior element that groups ongoing internal behavior by the competency, skill, knowledge or resource it requires (e.g. Accounting, Claims Handling, Procurement), performed by the BusinessRole assigned to it, with no defined start, end or ordered sequence of steps, so it is not triggered by an event; work reaches it through flows from processes and other functions. Use BusinessProcess instead when the behavior is an ordered sequence of steps with a trigger and a defined end result (e.g. 'Handle Insurance Claim from submission to payout') rather than a standing area of competence. Use BusinessService instead when the element describes externally visible behavior from the consumer's perspective (what is offered), rather than the internal grouping of work that realizes it. Use BusinessInteraction instead when the behavior can only be performed jointly by two or more roles in a BusinessCollaboration rather than by a single role or actor. Use BusinessRole instead when the element names who holds responsibility (e.g. 'Claims Handler', 'Finance Department') rather than the behavior they perform (e.g. 'Claims Handling', 'Financial Accounting'). Use BusinessCapability instead when the element names an ability the organization has (e.g. 'Share data with partners'), independent of the competency area or roles whose work realizes it.",
141
229
  "allOf": [
142
230
  {
143
231
  "$ref": "urn:dr:spec:base:spec-node"
@@ -157,18 +245,32 @@
157
245
  "type": "object",
158
246
  "properties": {
159
247
  "documentation": {
160
- "type": "string"
248
+ "type": "string",
249
+ "description": "Free-text description of the competency area this function covers, its scope boundaries and the roles that perform it; set whenever the name alone does not make the grouped behavior unambiguous."
161
250
  }
162
251
  },
163
252
  "additionalProperties": false
164
253
  }
165
254
  },
255
+ "x-dr-standard": "ArchiMate 3.2 §8.3.2 Business Function",
256
+ "x-dr-evidence": [
257
+ "top-level packages, modules or bounded contexts named after organizational competency areas (e.g. billing/, hr/, accounting/, procurement/) that own many related workflows rather than a single one",
258
+ "CODEOWNERS, team-ownership or service-catalog entries mapping a department or functional team to a group of modules, or permission scopes/menu sections grouped by functional area (e.g. 'finance:*', a 'Human Resources' navigation section)",
259
+ "architecture docs, capability or function maps, or ADRs listing functional areas of the business (e.g. a 'Business Functions' table or level-1 functional decomposition) referenced by code comments or module READMEs"
260
+ ],
261
+ "x-dr-distinguish": {
262
+ "business.businessprocess": "the behavior is an ordered sequence of steps with a trigger and a defined end result (e.g. 'Handle Insurance Claim from submission to payout') rather than a standing area of competence.",
263
+ "business.businessservice": "the element describes externally visible behavior from the consumer's perspective (what is offered), rather than the internal grouping of work that realizes it.",
264
+ "business.businessinteraction": "the behavior can only be performed jointly by two or more roles in a BusinessCollaboration rather than by a single role or actor.",
265
+ "business.businessrole": "the element names who holds responsibility (e.g. 'Claims Handler', 'Finance Department') rather than the behavior they perform (e.g. 'Claims Handling', 'Financial Accounting').",
266
+ "business.businesscapability": "the element names an ability the organization has, independent of the work and roles that realize it, rather than a standing area of work."
267
+ },
166
268
  "$id": "urn:dr:spec:node:business.businessfunction"
167
269
  },
168
270
  "businessinteraction": {
169
271
  "$schema": "http://json-schema.org/draft-07/schema#",
170
272
  "title": "BusinessInteraction",
171
- "description": "A behavior element representing collective behavior performed by a BusinessCollaboration. It is the interaction counterpart to BusinessProcess (performed by a role) and BusinessFunction (performed by an actor).",
273
+ "description": "A behavior element describing a unit of collective business behavior that two or more business roles carry out jointly within a BusinessCollaboration, such as negotiating terms or jointly approving a deal. It cannot be completed by any single participant acting alone. Use BusinessProcess instead when a single role or actor can carry the behavior through to its result, even if other parties are consulted or notified along the way. Use BusinessCollaboration instead when the element names the grouping of participating roles (who works together) rather than the joint behavior they perform (what they do together). Use BusinessFunction instead when the behavior is a stable, competency-based grouping (e.g., 'Partner Management') rather than a specific joint activity with a result. Use BusinessService instead when the element describes externally visible value offered to a consumer, with the joint internal behavior that delivers it hidden.",
172
274
  "allOf": [
173
275
  {
174
276
  "$ref": "urn:dr:spec:base:spec-node"
@@ -188,18 +290,31 @@
188
290
  "type": "object",
189
291
  "properties": {
190
292
  "documentation": {
191
- "type": "string"
293
+ "type": "string",
294
+ "description": "Free-text prose that names the participating roles, the joint result the interaction produces and its triggering events; set it whenever the participants or outcome are not obvious from the element name."
192
295
  }
193
296
  },
194
297
  "additionalProperties": false
195
298
  }
196
299
  },
300
+ "x-dr-standard": "ArchiMate 3.2 §8.3.3 Business Interaction",
301
+ "x-dr-evidence": [
302
+ "A workflow, saga or state machine for one business transaction (e.g., Negotiation, JointApproval) whose transitions are guarded by different roles, and which reaches its terminal state only after actions from each party, such as buyer accepts and seller countersigns.",
303
+ "A BPMN collaboration or choreography diagram, or a use-case document listing two or more primary actors, that describes one shared activity spanning both parties' lanes.",
304
+ "API endpoints on a shared resource (e.g., /negotiations/{id}/offer and /negotiations/{id}/counter-offer) protected by distinct role authorizations, where completion requires calls from users holding each role."
305
+ ],
306
+ "x-dr-distinguish": {
307
+ "business.businessprocess": "a single role or actor can carry the behavior through to its result, even if other parties are consulted or notified along the way",
308
+ "business.businesscollaboration": "the element names the grouping of participating roles (who works together) rather than the joint behavior they perform (what they do together)",
309
+ "business.businessfunction": "the behavior is a stable, competency-based grouping (e.g., 'Partner Management') rather than a specific joint activity with a result",
310
+ "business.businessservice": "the element describes externally visible value offered to a consumer, with the joint internal behavior that delivers it hidden"
311
+ },
197
312
  "$id": "urn:dr:spec:node:business.businessinteraction"
198
313
  },
199
314
  "businessinterface": {
200
315
  "$schema": "http://json-schema.org/draft-07/schema#",
201
316
  "title": "BusinessInterface",
202
- "description": "An active structure element representing a point of access at which a BusinessService is made available to the environment, used by BusinessActors or external parties.",
317
+ "description": "An active structure element representing a channel or point of access, such as a branch counter, call centre, customer portal or mailroom, through which a BusinessService is offered to and used by actors in the environment. It identifies where and how the service is reached, not the service itself or the person or role who staffs it. Use BusinessService instead when the element describes what value or behavior is offered to the consumer, independent of the channel through which it is reached. Use BusinessRole instead when the element is a set of responsibilities performed behind the access point, such as a call-centre agent, rather than the access point itself. Use Representation instead when the element is the perceptible form of information exchanged, such as an on-screen form or a printed letter, rather than the channel through which the service is accessed. Use BusinessActor instead when the element is the concrete organizational unit or person, such as a customer-service department, rather than the channel it operates.",
203
318
  "allOf": [
204
319
  {
205
320
  "$ref": "urn:dr:spec:base:spec-node"
@@ -219,7 +334,8 @@
219
334
  "type": "object",
220
335
  "properties": {
221
336
  "documentation": {
222
- "type": "string"
337
+ "type": "string",
338
+ "description": "Free-text description of the access channel, stating which BusinessServices it exposes, who uses it, and its medium (e.g. phone, web, in person); set it for every instance so the channel's scope is unambiguous."
223
339
  },
224
340
  "properties": {
225
341
  "type": "object",
@@ -229,12 +345,24 @@
229
345
  "additionalProperties": false
230
346
  }
231
347
  },
348
+ "x-dr-standard": "ArchiMate 3.2 §8.2.4 Business Interface",
349
+ "x-dr-evidence": [
350
+ "an enum or lookup table of customer contact channels (e.g. Channel { WEB, PHONE, BRANCH, EMAIL, PARTNER_PORTAL }) used to tag incoming requests or orders",
351
+ "channel-specific intake configuration, such as IVR or call-routing menus, a contact-centre queue definition, or a branch/portal entry module that routes customers to a named service",
352
+ "product or support documentation stating how customers reach a service (e.g. 'claims can be filed via the self-service portal, by phone, or at a branch')"
353
+ ],
354
+ "x-dr-distinguish": {
355
+ "business.businessservice": "the element describes what value or behavior is offered to the consumer, independent of the channel through which it is reached",
356
+ "business.businessrole": "the element is a set of responsibilities performed behind the access point, such as a call-centre agent, rather than the access point itself",
357
+ "business.representation": "the element is the perceptible form of information exchanged, such as an on-screen form or a printed letter, rather than the channel through which the service is accessed",
358
+ "business.businessactor": "the element is the concrete organizational unit or person, such as a customer-service department, rather than the channel it operates"
359
+ },
232
360
  "$id": "urn:dr:spec:node:business.businessinterface"
233
361
  },
234
362
  "businessobject": {
235
363
  "$schema": "http://json-schema.org/draft-07/schema#",
236
364
  "title": "BusinessObject",
237
- "description": "A passive structure element that has relevance from a business perspective, representing information or data that active elements (actors, roles) act upon. Examples include documents, messages, contracts, and reports.",
365
+ "description": "A passive structure element representing a business concept or unit of information (e.g., Order, Invoice, Claim, Customer record) that business behavior creates, reads, updates or deletes. It is identified by its business meaning and lifecycle, independent of storage format, schema or presentation. Use Contract instead when the information is specifically an agreement that sets out obligations, rights or terms between a provider and a consumer (e.g., SLA, policy terms, subscription agreement). Use Representation instead when the element is the perceptible form or media format in which the information is shown or exchanged (a PDF invoice, an HTML order form), not the information concept itself. Use BusinessEvent instead when the thing being modelled is a state change or occurrence (an order was placed) rather than the information entity that the occurrence concerns (the order). Use Product instead when the element is a bundle of services and contracts offered to customers as a value proposition, rather than a piece of information acted upon.",
238
366
  "allOf": [
239
367
  {
240
368
  "$ref": "urn:dr:spec:base:spec-node"
@@ -254,7 +382,8 @@
254
382
  "type": "object",
255
383
  "properties": {
256
384
  "documentation": {
257
- "type": "string"
385
+ "type": "string",
386
+ "description": "Free-text business definition of the object: what it means to the organization, its key information content and its lifecycle. Write it in domain vocabulary without storage or schema detail, and set it whenever the name alone is ambiguous."
258
387
  },
259
388
  "properties": {
260
389
  "type": "object",
@@ -264,12 +393,24 @@
264
393
  "additionalProperties": false
265
394
  }
266
395
  },
396
+ "x-dr-standard": "ArchiMate 3.2 §8.4.1 Business Object",
397
+ "x-dr-evidence": [
398
+ "a domain-model class or aggregate root named with a business noun (Order, Invoice, Claim) in a domain/model package, referenced by several workflow or use-case handlers",
399
+ "a lifecycle status enum or state machine on that entity (e.g., DRAFT, SUBMITTED, APPROVED, CANCELLED) whose transitions are driven by business process steps",
400
+ "an entry in a business glossary, ubiquitous-language document or requirements spec that defines the term, with matching names in database tables, API schemas or JSON Schema titles"
401
+ ],
402
+ "x-dr-distinguish": {
403
+ "business.contract": "the information is specifically an agreement that sets out obligations, rights or terms between a provider and a consumer (e.g., SLA, policy terms, subscription agreement)",
404
+ "business.representation": "the element is the perceptible form or media format in which the information is shown or exchanged (a PDF invoice, an HTML order form), not the information concept itself",
405
+ "business.businessevent": "the thing being modelled is a state change or occurrence (an order was placed) rather than the information entity that the occurrence concerns (the order)",
406
+ "business.product": "the element is a bundle of services and contracts offered to customers as a value proposition, rather than a piece of information acted upon"
407
+ },
267
408
  "$id": "urn:dr:spec:node:business.businessobject"
268
409
  },
269
410
  "businessprocess": {
270
411
  "$schema": "http://json-schema.org/draft-07/schema#",
271
412
  "title": "BusinessProcess",
272
- "description": "A behavior element representing a sequence or set of behaviors that achieves a specific business result for a customer or stakeholder. Driven by external triggers (BusinessEvents) or internal initiations, and performed by BusinessActors or BusinessRoles.",
413
+ "description": "A business behavior element, performed by the BusinessRole assigned to it (BusinessActors take part by filling that role), that consists of an ordered sequence of business activities with a defined start (a BusinessEvent or internal initiation) and a defined end state yielding a specific result, such as a delivered BusinessObject or a fulfilled request, for a customer or stakeholder. Use BusinessFunction instead when the behavior is a stable grouping of work by competency, skill or resource (e.g. 'Accounts Payable') with no inherent start trigger, step order or end result. Use BusinessInteraction instead when the behavior can only be performed jointly by two or more roles acting as a BusinessCollaboration rather than by a single role or actor. Use BusinessService instead when you are describing the externally visible value offered to a consumer (what is provided), not the internal sequence of steps that delivers it (how it is done). Use BusinessEvent instead when the element is an instantaneous state change (e.g. 'Order Placed') that starts or ends a process, not the activity that runs between such changes.",
273
414
  "allOf": [
274
415
  {
275
416
  "$ref": "urn:dr:spec:base:spec-node"
@@ -289,7 +430,8 @@
289
430
  "type": "object",
290
431
  "properties": {
291
432
  "documentation": {
292
- "type": "string"
433
+ "type": "string",
434
+ "description": "Free-text prose describing the process's trigger, main steps, performing role, and end result, written in business terms; set whenever the name alone does not make the start and end conditions clear."
293
435
  },
294
436
  "properties": {
295
437
  "type": "object",
@@ -299,12 +441,24 @@
299
441
  "additionalProperties": false
300
442
  }
301
443
  },
444
+ "x-dr-standard": "ArchiMate 3.2 §8.3.1 Business Process",
445
+ "x-dr-evidence": [
446
+ "A workflow or orchestration definition (BPMN file, Camunda/Temporal/Step Functions workflow, saga class) named after a business outcome, e.g. OrderFulfillmentWorkflow, whose steps run in a declared order.",
447
+ "A state machine or status enum on a business entity whose transitions follow a business lifecycle (e.g. SUBMITTED → APPROVED → SHIPPED) and are driven by a single orchestrating service method.",
448
+ "Documentation, runbooks or user stories that describe a numbered sequence of business steps from a trigger to a completion criterion, owned by a named role (e.g. 'claims handler')."
449
+ ],
450
+ "x-dr-distinguish": {
451
+ "business.businessfunction": "the behavior is a stable grouping of work by competency, skill or resource (e.g. 'Accounts Payable') with no inherent start trigger, step order or end result.",
452
+ "business.businessinteraction": "the behavior can only be performed jointly by two or more roles acting as a BusinessCollaboration rather than by a single role or actor.",
453
+ "business.businessservice": "you are describing the externally visible value offered to a consumer (what is provided), not the internal sequence of steps that delivers it (how it is done).",
454
+ "business.businessevent": "the element is an instantaneous state change (e.g. 'Order Placed') that starts or ends a process, not the activity that runs between such changes."
455
+ },
302
456
  "$id": "urn:dr:spec:node:business.businessprocess"
303
457
  },
304
458
  "businessrole": {
305
459
  "$schema": "http://json-schema.org/draft-07/schema#",
306
460
  "title": "BusinessRole",
307
- "description": "An active structure element representing a named set of responsibilities, skills, or authorizations that can be assigned to a BusinessActor. Roles abstract away the concrete actor, enabling flexible actor-to-behavior assignment.",
461
+ "description": "An active structure element naming a responsibility position in the organization (e.g., Claims Adjuster, Approver, Customer) that business behavior is assigned to and that one or more BusinessActors can fill. It is defined by what is expected of whoever occupies it, not by the identity of a particular person, department or organization. Use BusinessActor instead when the element is a specific, identifiable person, department, team or external organization, such as 'Finance Department' or 'Acme Ltd', rather than a position that different actors could fill. Use BusinessCollaboration instead when the element is a temporary or permanent grouping of two or more roles acting jointly, such as 'Buyer–Seller Negotiation', rather than a single responsibility position. Use BusinessFunction instead when the name denotes a capability-based grouping of behavior, such as 'Claims Handling', rather than the position responsible for performing it, such as 'Claims Handler'. Use BusinessInterface instead when the element is a channel or access point through which a service is offered, such as a call center, portal or front desk, rather than the responsibility held by whoever staffs it.",
308
462
  "allOf": [
309
463
  {
310
464
  "$ref": "urn:dr:spec:base:spec-node"
@@ -324,18 +478,31 @@
324
478
  "type": "object",
325
479
  "properties": {
326
480
  "documentation": {
327
- "type": "string"
481
+ "type": "string",
482
+ "description": "Free-text description of the role's responsibilities, required skills or authorizations, and typical occupying actors; set it whenever the role name alone does not make the scope of responsibility clear."
328
483
  }
329
484
  },
330
485
  "additionalProperties": false
331
486
  }
332
487
  },
488
+ "x-dr-standard": "ArchiMate 3.2 §8.2.2 Business Role",
489
+ "x-dr-evidence": [
490
+ "An enum, constant set or lookup table of job-like user categories (e.g., APPROVER, UNDERWRITER, CASE_WORKER, CUSTOMER) that workflow or task-assignment logic uses to route work, rather than to name individual users.",
491
+ "Workflow or BPMN definitions that name a responsibility as a swimlane, candidateGroup or task assignee (e.g., camunda:candidateGroups=\"claims-adjuster\"), or approval-chain configuration such as 'requires sign-off by Finance Approver'.",
492
+ "Requirements artifacts or user stories phrased 'As a <role>, I want…', or RACI and responsibility matrices listing positions against processes or tasks."
493
+ ],
494
+ "x-dr-distinguish": {
495
+ "business.businessactor": "the element is a specific, identifiable person, department, team or external organization, such as 'Finance Department' or 'Acme Ltd', rather than a position that different actors could fill.",
496
+ "business.businesscollaboration": "the element is a temporary or permanent grouping of two or more roles acting jointly, such as 'Buyer–Seller Negotiation', rather than a single responsibility position.",
497
+ "business.businessfunction": "the name denotes a capability-based grouping of behavior, such as 'Claims Handling', rather than the position responsible for performing it, such as 'Claims Handler'.",
498
+ "business.businessinterface": "the element is a channel or access point through which a service is offered, such as a call center, portal or front desk, rather than the responsibility held by whoever staffs it."
499
+ },
333
500
  "$id": "urn:dr:spec:node:business.businessrole"
334
501
  },
335
502
  "businessservice": {
336
503
  "$schema": "http://json-schema.org/draft-07/schema#",
337
504
  "title": "BusinessService",
338
- "description": "An externally visible behavior element that fulfills a business need for a customer or stakeholder. Defined from the consumer perspective; the internal realization (via BusinessProcess or BusinessFunction) is encapsulated and not exposed.",
505
+ "description": "A behavior element that names an explicitly defined, externally visible unit of business behavior offered to customers or other stakeholders, such as 'Claims Handling' or 'Order Delivery'. It is described by the value and outcome the consumer receives, independent of the processes, functions, or software that realize it. Use BusinessProcess instead when the element describes the internal ordered steps, triggers, and hand-offs that produce a result, rather than the offering as the consumer sees it. Use BusinessFunction instead when the element is an internal grouping of behavior by competency or organizational capability, such as Finance or HR, that is not offered to a consumer as a named service. Use BusinessInterface instead when the element is the access point or channel through which the service is obtained, such as a call center, web portal, or branch counter, rather than the behavior itself. Use Product instead when the element is a marketed bundle of one or more services together with contracts or terms, sold or offered as a single package.",
339
506
  "allOf": [
340
507
  {
341
508
  "$ref": "urn:dr:spec:base:spec-node"
@@ -355,7 +522,8 @@
355
522
  "type": "object",
356
523
  "properties": {
357
524
  "documentation": {
358
- "type": "string"
525
+ "type": "string",
526
+ "description": "Free-text description of the service from the consumer's perspective: the need it fulfills, its intended consumers, and any service levels. Set it whenever the name alone does not make the offered outcome clear."
359
527
  },
360
528
  "properties": {
361
529
  "type": "object",
@@ -365,12 +533,24 @@
365
533
  "additionalProperties": false
366
534
  }
367
535
  },
536
+ "x-dr-standard": "ArchiMate 3.2 §8.3.5 Business Service",
537
+ "x-dr-evidence": [
538
+ "A service catalog, SLA, or operating-level document entry that names a customer-facing offering (e.g. 'Claims Handling') with its consumers, availability hours, and service levels.",
539
+ "An OpenAPI tag, bounded-context module, or top-level domain package whose description states a business outcome for external consumers and groups several operations that support it.",
540
+ "A pricing page, terms-of-service text, or plan/entitlement configuration listing named services a customer is entitled to receive (e.g. 'Premium Support', 'Same-day Shipping')."
541
+ ],
542
+ "x-dr-distinguish": {
543
+ "business.businessprocess": "the element describes the internal ordered steps, triggers, and hand-offs that produce a result, rather than the offering as the consumer sees it.",
544
+ "business.businessfunction": "the element is an internal grouping of behavior by competency or organizational capability, such as Finance or HR, that is not offered to a consumer as a named service.",
545
+ "business.businessinterface": "the element is the access point or channel through which the service is obtained, such as a call center, web portal, or branch counter, rather than the behavior itself.",
546
+ "business.product": "the element is a marketed bundle of one or more services together with contracts or terms, sold or offered as a single package."
547
+ },
368
548
  "$id": "urn:dr:spec:node:business.businessservice"
369
549
  },
370
550
  "contract": {
371
551
  "$schema": "http://json-schema.org/draft-07/schema#",
372
552
  "title": "Contract",
373
- "description": "A passive structure element representing a formal or informal specification of an agreement between a service provider and consumer, defining obligations, rights, and terms. Often associated with a Product or BusinessService.",
553
+ "description": "A business object that records an agreement between two or more parties, typically a service provider and a consumer, stating the obligations, rights, and terms (e.g., SLA levels, pricing, durations, penalties) that govern how a business service or product is delivered and used. It is information acted upon, not behavior or an actor. Use BusinessObject instead when the information has business relevance but does not bind identified parties to obligations, rights, or terms (e.g., an invoice, order, or customer record). Use Representation instead when the element is the perceptible form of the agreement, such as the signed PDF, HTML terms page, or on-screen acceptance form, rather than the agreement's content. Use Product instead when the element is the offered bundle of services and contracts sold to a market, rather than the terms attached to it. Use BusinessEvent instead when the element is the state change of the agreement, such as a contract being signed, renewed, or terminated, rather than the agreement itself.",
374
554
  "allOf": [
375
555
  {
376
556
  "$ref": "urn:dr:spec:base:spec-node"
@@ -390,7 +570,8 @@
390
570
  "type": "object",
391
571
  "properties": {
392
572
  "documentation": {
393
- "type": "string"
573
+ "type": "string",
574
+ "description": "Free-text explanation of the agreement: the parties, the services or product it covers, and its key obligations and terms. Set it whenever the element name alone does not identify which agreement is meant."
394
575
  },
395
576
  "properties": {
396
577
  "type": "object",
@@ -400,12 +581,24 @@
400
581
  "additionalProperties": false
401
582
  }
402
583
  },
584
+ "x-dr-standard": "ArchiMate 3.2 §8.4.2 Contract (specialization of Business Object)",
585
+ "x-dr-evidence": [
586
+ "A domain class or schema named Agreement, Contract, Subscription, or ServiceLevelAgreement with fields such as parties, effectiveDate, expiryDate, termsVersion, and obligations or penalties",
587
+ "SLA or SLO configuration files that declare uptime, response-time, or support-tier commitments bound to a named customer plan or tier",
588
+ "Versioned terms-of-service, license, or data-processing-agreement documents in the repository, with code that records a user's acceptance of a specific terms version"
589
+ ],
590
+ "x-dr-distinguish": {
591
+ "business.businessobject": "the information has business relevance but does not bind identified parties to obligations, rights, or terms (e.g., an invoice, order, or customer record)",
592
+ "business.representation": "the element is the perceptible form of the agreement, such as the signed PDF, HTML terms page, or on-screen acceptance form, rather than the agreement's content",
593
+ "business.product": "the element is the offered bundle of services and contracts sold to a market, rather than the terms attached to it",
594
+ "business.businessevent": "the element is the state change of the agreement, such as a contract being signed, renewed, or terminated, rather than the agreement itself"
595
+ },
403
596
  "$id": "urn:dr:spec:node:business.contract"
404
597
  },
405
598
  "product": {
406
599
  "$schema": "http://json-schema.org/draft-07/schema#",
407
600
  "title": "Product",
408
- "description": "A passive structure element representing a coherent collection of BusinessServices and Contracts offered to customers or markets. The product encapsulates the value proposition delivered to end users or business partners.",
601
+ "description": "A composite element that bundles a named offering of one or more BusinessServices, optionally with application or technology services and business objects, together with the Contract that governs it, and that is offered as a whole to customers or markets. It is identified by what is sold or subscribed to, not by any single behavior or document within it. Use BusinessService instead when the element is a single externally visible unit of business behavior rather than a named, packaged offering combining several services with terms. Use Contract instead when the element is the agreement itself (terms, obligations, SLA, rights) rather than the offering those terms are attached to. Use BusinessObject instead when the element is information the business manipulates, such as a catalog entity or a 'Product' record or class in an e-commerce domain model describing goods for sale, rather than the offering bundle itself.",
409
602
  "allOf": [
410
603
  {
411
604
  "$ref": "urn:dr:spec:base:spec-node"
@@ -425,18 +618,30 @@
425
618
  "type": "object",
426
619
  "properties": {
427
620
  "documentation": {
428
- "type": "string"
621
+ "type": "string",
622
+ "description": "Free-text description of the offering: its name as marketed, target customers or market, included services, and governing terms. Set it whenever the element is created so reviewers can tell this bundle apart from others."
429
623
  }
430
624
  },
431
625
  "additionalProperties": false
432
626
  }
433
627
  },
628
+ "x-dr-standard": "ArchiMate 3.2 §8.5.1 Product",
629
+ "x-dr-evidence": [
630
+ "A plan, tier or SKU definition (e.g. a PLANS constant, Stripe product/price IDs, a billing config listing 'Basic/Pro/Enterprise') that enumerates which capabilities or services each offering includes.",
631
+ "An entitlements or feature-gating map keyed by subscription plan or edition, deciding which services a customer may use based on what they purchased.",
632
+ "Pricing-page content, product sheets or onboarding docs that present a named offering together with links to its terms of service, SLA or license agreement."
633
+ ],
634
+ "x-dr-distinguish": {
635
+ "business.businessservice": "the element is a single externally visible unit of business behavior rather than a named, packaged offering combining several services with terms.",
636
+ "business.contract": "the element is the agreement itself (terms, obligations, SLA, rights) rather than the offering those terms are attached to.",
637
+ "business.businessobject": "the element is information the business manipulates, such as a catalog entity or a 'Product' record or class in an e-commerce domain model describing goods for sale, rather than the offering bundle itself."
638
+ },
434
639
  "$id": "urn:dr:spec:node:business.product"
435
640
  },
436
641
  "representation": {
437
642
  "$schema": "http://json-schema.org/draft-07/schema#",
438
643
  "title": "Representation",
439
- "description": "A passive structure element representing the perceptible form in which a BusinessObject is manifested (e.g., a printed report, a digital document, or an on-screen form). Multiple representations can carry the same BusinessObject.",
644
+ "description": "A passive structure element that is a concrete, perceptible form (document layout, file format, printed or on-screen rendering) in which the information of a BusinessObject or Contract is conveyed to people. It captures how the information looks or is encoded, not what the information means. Use BusinessObject instead when the element is the business information concept itself (e.g., Invoice, Order) independent of any rendering or file format. Use Contract instead when the element is the agreement with its obligations and terms, rather than the signed PDF or printed form carrying it. Use BusinessInterface instead when the element is an access point (portal, counter, call centre) through which a service is offered, rather than the form of information delivered through it.",
440
645
  "allOf": [
441
646
  {
442
647
  "$ref": "urn:dr:spec:base:spec-node"
@@ -456,7 +661,8 @@
456
661
  "type": "object",
457
662
  "properties": {
458
663
  "documentation": {
459
- "type": "string"
664
+ "type": "string",
665
+ "description": "Free-text description of the representation, such as its audience, layout, channel (printed, emailed, on-screen), and which business object it carries. Set it whenever the name alone does not identify the rendering."
460
666
  },
461
667
  "format": {
462
668
  "type": "string",
@@ -468,97 +674,104 @@
468
674
  "additionalProperties": false
469
675
  }
470
676
  },
677
+ "x-dr-standard": "ArchiMate 3.2 §8.4.3 Representation",
678
+ "x-dr-evidence": [
679
+ "a document or report template (e.g., Jasper/Thymeleaf/Handlebars/LaTeX template, .docx template) that renders a business entity such as an invoice or statement",
680
+ "a PDF/CSV/XML export generator, such as a class named InvoicePdfRenderer or StatementExporter, that produces a file with a fixed layout for end users",
681
+ "a printable or on-screen form definition (HTML form template, print stylesheet, email template) that presents a business document to customers or staff"
682
+ ],
683
+ "x-dr-distinguish": {
684
+ "business.businessobject": "the element is the business information concept itself (e.g., Invoice, Order) independent of any rendering or file format.",
685
+ "business.contract": "the element is the agreement with its obligations and terms, rather than the signed PDF or printed form carrying it.",
686
+ "business.businessinterface": "the element is an access point (portal, counter, call centre) through which a service is offered, rather than the form of information delivered through it."
687
+ },
471
688
  "$id": "urn:dr:spec:node:business.representation"
472
689
  }
473
690
  },
474
691
  "relationshipSchemas": {
475
- "business.businessactor.accesses.business.businessobject": {
476
- "id": "business.businessactor.accesses.business.businessobject",
692
+ "business.businessactor.assigned-to.business.businessrole": {
693
+ "id": "business.businessactor.assigned-to.business.businessrole",
477
694
  "source_spec_node_id": "business.businessactor",
478
695
  "source_layer": "business",
479
- "destination_spec_node_id": "business.businessobject",
696
+ "destination_spec_node_id": "business.businessrole",
480
697
  "destination_layer": "business",
481
- "predicate": "accesses",
698
+ "predicate": "assigned-to",
482
699
  "cardinality": "many-to-many",
483
700
  "strength": "medium",
484
- "required": false
701
+ "required": false,
702
+ "description": "The actor fills the role and takes on its responsibilities; this is how a person, team or organization comes to perform business behaviour, since behaviour is assigned to roles rather than to actors directly."
485
703
  },
486
- "business.businessactor.accesses.business.contract": {
487
- "id": "business.businessactor.accesses.business.contract",
704
+ "business.businessactor.references.motivation.stakeholder": {
705
+ "id": "business.businessactor.references.motivation.stakeholder",
488
706
  "source_spec_node_id": "business.businessactor",
489
707
  "source_layer": "business",
490
- "destination_spec_node_id": "business.contract",
491
- "destination_layer": "business",
492
- "predicate": "accesses",
708
+ "destination_spec_node_id": "motivation.stakeholder",
709
+ "destination_layer": "motivation",
710
+ "predicate": "references",
493
711
  "cardinality": "many-to-many",
494
712
  "strength": "medium",
495
- "required": false
713
+ "required": false,
714
+ "description": "The actor acts on behalf of the stakeholder, so the stakeholder's concerns and drivers apply to what the actor does in the organization."
496
715
  },
497
- "business.businessactor.assigned-to.business.businessrole": {
498
- "id": "business.businessactor.assigned-to.business.businessrole",
499
- "source_spec_node_id": "business.businessactor",
716
+ "business.businesscapability.aggregates.business.businesscapability": {
717
+ "id": "business.businesscapability.aggregates.business.businesscapability",
718
+ "source_spec_node_id": "business.businesscapability",
500
719
  "source_layer": "business",
501
- "destination_spec_node_id": "business.businessrole",
720
+ "destination_spec_node_id": "business.businesscapability",
502
721
  "destination_layer": "business",
503
- "predicate": "assigned-to",
722
+ "predicate": "aggregates",
504
723
  "cardinality": "many-to-many",
505
724
  "strength": "medium",
506
- "required": false
725
+ "required": false,
726
+ "description": "The narrower capability is part of the wider one in the organization's capability map; it keeps its own identity and may be grouped under more than one parent."
507
727
  },
508
- "business.businessactor.serves.motivation.stakeholder": {
509
- "id": "business.businessactor.serves.motivation.stakeholder",
510
- "source_spec_node_id": "business.businessactor",
728
+ "business.businesscapability.realizes.motivation.outcome": {
729
+ "id": "business.businesscapability.realizes.motivation.outcome",
730
+ "source_spec_node_id": "business.businesscapability",
511
731
  "source_layer": "business",
512
- "destination_spec_node_id": "motivation.stakeholder",
732
+ "destination_spec_node_id": "motivation.outcome",
513
733
  "destination_layer": "motivation",
514
- "predicate": "serves",
734
+ "predicate": "realizes",
515
735
  "cardinality": "many-to-many",
516
736
  "strength": "medium",
517
- "required": false
737
+ "required": false,
738
+ "description": "Exercising the capability produces the outcome, the end result the organization wants."
518
739
  },
519
- "business.businesscollaboration.accesses.business.businessobject": {
520
- "id": "business.businesscollaboration.accesses.business.businessobject",
521
- "source_spec_node_id": "business.businesscollaboration",
740
+ "business.businesscapability.supports.motivation.goal": {
741
+ "id": "business.businesscapability.supports.motivation.goal",
742
+ "source_spec_node_id": "business.businesscapability",
522
743
  "source_layer": "business",
523
- "destination_spec_node_id": "business.businessobject",
524
- "destination_layer": "business",
525
- "predicate": "accesses",
744
+ "destination_spec_node_id": "motivation.goal",
745
+ "destination_layer": "motivation",
746
+ "predicate": "supports",
526
747
  "cardinality": "many-to-many",
527
748
  "strength": "medium",
528
- "required": false
749
+ "required": false,
750
+ "description": "Having the capability helps the organization reach the goal, which is why the capability is worth building or keeping."
529
751
  },
530
- "business.businesscollaboration.composes.business.businessrole": {
531
- "id": "business.businesscollaboration.composes.business.businessrole",
752
+ "business.businesscollaboration.aggregates.business.businessrole": {
753
+ "id": "business.businesscollaboration.aggregates.business.businessrole",
532
754
  "source_spec_node_id": "business.businesscollaboration",
533
755
  "source_layer": "business",
534
756
  "destination_spec_node_id": "business.businessrole",
535
757
  "destination_layer": "business",
536
- "predicate": "composes",
758
+ "predicate": "aggregates",
537
759
  "cardinality": "many-to-many",
538
760
  "strength": "medium",
539
- "required": false
761
+ "required": false,
762
+ "description": "The role is a participant in the collaboration; the role exists on its own and can take part in several collaborations, and the collaboration has no identity apart from the roles it groups."
540
763
  },
541
- "business.businesscollaboration.performs.business.businessinteraction": {
542
- "id": "business.businesscollaboration.performs.business.businessinteraction",
764
+ "business.businesscollaboration.assigned-to.business.businessinteraction": {
765
+ "id": "business.businesscollaboration.assigned-to.business.businessinteraction",
543
766
  "source_spec_node_id": "business.businesscollaboration",
544
767
  "source_layer": "business",
545
768
  "destination_spec_node_id": "business.businessinteraction",
546
769
  "destination_layer": "business",
547
- "predicate": "performs",
548
- "cardinality": "many-to-many",
549
- "strength": "medium",
550
- "required": false
551
- },
552
- "business.businessevent.triggers.business.businessfunction": {
553
- "id": "business.businessevent.triggers.business.businessfunction",
554
- "source_spec_node_id": "business.businessevent",
555
- "source_layer": "business",
556
- "destination_spec_node_id": "business.businessfunction",
557
- "destination_layer": "business",
558
- "predicate": "triggers",
770
+ "predicate": "assigned-to",
559
771
  "cardinality": "many-to-many",
560
772
  "strength": "medium",
561
- "required": false
773
+ "required": false,
774
+ "description": "The collaboration carries out the interaction jointly; no single participating role can complete it alone."
562
775
  },
563
776
  "business.businessevent.triggers.business.businessinteraction": {
564
777
  "id": "business.businessevent.triggers.business.businessinteraction",
@@ -569,7 +782,8 @@
569
782
  "predicate": "triggers",
570
783
  "cardinality": "many-to-many",
571
784
  "strength": "medium",
572
- "required": false
785
+ "required": false,
786
+ "description": "The occurrence of the event starts a run of the interaction among the collaboration's participants."
573
787
  },
574
788
  "business.businessevent.triggers.business.businessprocess": {
575
789
  "id": "business.businessevent.triggers.business.businessprocess",
@@ -580,7 +794,8 @@
580
794
  "predicate": "triggers",
581
795
  "cardinality": "many-to-many",
582
796
  "strength": "medium",
583
- "required": false
797
+ "required": false,
798
+ "description": "The occurrence of the event is the start trigger that launches a run of the process's ordered steps; use it for the event a process waits for, not for a hand-off between processes, which is flows-to."
584
799
  },
585
800
  "business.businessfunction.accesses.business.businessobject": {
586
801
  "id": "business.businessfunction.accesses.business.businessobject",
@@ -591,7 +806,20 @@
591
806
  "predicate": "accesses",
592
807
  "cardinality": "many-to-many",
593
808
  "strength": "medium",
594
- "required": false
809
+ "required": false,
810
+ "description": "The function creates, reads, updates or deletes the business object while carrying out its ongoing behaviour."
811
+ },
812
+ "business.businessfunction.accesses.business.contract": {
813
+ "id": "business.businessfunction.accesses.business.contract",
814
+ "source_spec_node_id": "business.businessfunction",
815
+ "source_layer": "business",
816
+ "destination_spec_node_id": "business.contract",
817
+ "destination_layer": "business",
818
+ "predicate": "accesses",
819
+ "cardinality": "many-to-many",
820
+ "strength": "medium",
821
+ "required": false,
822
+ "description": "The function reads or maintains the terms of the contract as part of its ongoing behaviour, for example when contract management records or renews agreements."
595
823
  },
596
824
  "business.businessfunction.composes.business.businessfunction": {
597
825
  "id": "business.businessfunction.composes.business.businessfunction",
@@ -602,7 +830,8 @@
602
830
  "predicate": "composes",
603
831
  "cardinality": "many-to-many",
604
832
  "strength": "medium",
605
- "required": false
833
+ "required": false,
834
+ "description": "The narrower function is part of the wider one and exists only within it, so the function decomposes into the competencies that make it up."
606
835
  },
607
836
  "business.businessfunction.flows-to.business.businessfunction": {
608
837
  "id": "business.businessfunction.flows-to.business.businessfunction",
@@ -613,7 +842,8 @@
613
842
  "predicate": "flows-to",
614
843
  "cardinality": "many-to-many",
615
844
  "strength": "medium",
616
- "required": false
845
+ "required": false,
846
+ "description": "Work or information produced by the upstream function passes to the downstream function, which continues with it."
617
847
  },
618
848
  "business.businessfunction.flows-to.business.businessprocess": {
619
849
  "id": "business.businessfunction.flows-to.business.businessprocess",
@@ -624,40 +854,32 @@
624
854
  "predicate": "flows-to",
625
855
  "cardinality": "many-to-many",
626
856
  "strength": "medium",
627
- "required": false
857
+ "required": false,
858
+ "description": "Work or information produced by the function is handed to the process, which uses it in its ordered steps."
628
859
  },
629
- "business.businessfunction.realizes.business.businessservice": {
630
- "id": "business.businessfunction.realizes.business.businessservice",
860
+ "business.businessfunction.realizes.business.businesscapability": {
861
+ "id": "business.businessfunction.realizes.business.businesscapability",
631
862
  "source_spec_node_id": "business.businessfunction",
632
863
  "source_layer": "business",
633
- "destination_spec_node_id": "business.businessservice",
864
+ "destination_spec_node_id": "business.businesscapability",
634
865
  "destination_layer": "business",
635
866
  "predicate": "realizes",
636
867
  "cardinality": "many-to-many",
637
868
  "strength": "medium",
638
- "required": false
639
- },
640
- "business.businessfunction.realizes.motivation.goal": {
641
- "id": "business.businessfunction.realizes.motivation.goal",
642
- "source_spec_node_id": "business.businessfunction",
643
- "source_layer": "business",
644
- "destination_spec_node_id": "motivation.goal",
645
- "destination_layer": "motivation",
646
- "predicate": "realizes",
647
- "cardinality": "many-to-many",
648
- "strength": "medium",
649
- "required": false
869
+ "required": false,
870
+ "description": "The business function's standing work is what gives the organization the capability; as the work and the people doing it change, the capability stays."
650
871
  },
651
- "business.businessfunction.serves.business.businessrole": {
652
- "id": "business.businessfunction.serves.business.businessrole",
872
+ "business.businessfunction.realizes.business.businessservice": {
873
+ "id": "business.businessfunction.realizes.business.businessservice",
653
874
  "source_spec_node_id": "business.businessfunction",
654
875
  "source_layer": "business",
655
- "destination_spec_node_id": "business.businessrole",
876
+ "destination_spec_node_id": "business.businessservice",
656
877
  "destination_layer": "business",
657
- "predicate": "serves",
878
+ "predicate": "realizes",
658
879
  "cardinality": "many-to-many",
659
880
  "strength": "medium",
660
- "required": false
881
+ "required": false,
882
+ "description": "The function's ongoing behaviour is what makes the service available to its consumers."
661
883
  },
662
884
  "business.businessfunction.triggers.business.businessevent": {
663
885
  "id": "business.businessfunction.triggers.business.businessevent",
@@ -668,7 +890,8 @@
668
890
  "predicate": "triggers",
669
891
  "cardinality": "many-to-many",
670
892
  "strength": "medium",
671
- "required": false
893
+ "required": false,
894
+ "description": "The function raises the event when it reaches a business state change worth naming, such as a monthly close being completed."
672
895
  },
673
896
  "business.businessinteraction.accesses.business.businessobject": {
674
897
  "id": "business.businessinteraction.accesses.business.businessobject",
@@ -679,7 +902,8 @@
679
902
  "predicate": "accesses",
680
903
  "cardinality": "many-to-many",
681
904
  "strength": "medium",
682
- "required": false
905
+ "required": false,
906
+ "description": "The interaction's participants jointly create, read, update or delete the business object, as when a negotiation produces agreed terms."
683
907
  },
684
908
  "business.businessinteraction.flows-to.business.businessinteraction": {
685
909
  "id": "business.businessinteraction.flows-to.business.businessinteraction",
@@ -690,7 +914,8 @@
690
914
  "predicate": "flows-to",
691
915
  "cardinality": "many-to-many",
692
916
  "strength": "medium",
693
- "required": false
917
+ "required": false,
918
+ "description": "The result of the upstream interaction passes to the downstream interaction, which continues the joint work."
694
919
  },
695
920
  "business.businessinteraction.flows-to.business.businessprocess": {
696
921
  "id": "business.businessinteraction.flows-to.business.businessprocess",
@@ -701,18 +926,20 @@
701
926
  "predicate": "flows-to",
702
927
  "cardinality": "many-to-many",
703
928
  "strength": "medium",
704
- "required": false
929
+ "required": false,
930
+ "description": "The result of the interaction is handed to the process, which carries it forward with a single performing role."
705
931
  },
706
- "business.businessinteraction.serves.business.businessservice": {
707
- "id": "business.businessinteraction.serves.business.businessservice",
932
+ "business.businessinteraction.realizes.business.businessservice": {
933
+ "id": "business.businessinteraction.realizes.business.businessservice",
708
934
  "source_spec_node_id": "business.businessinteraction",
709
935
  "source_layer": "business",
710
936
  "destination_spec_node_id": "business.businessservice",
711
937
  "destination_layer": "business",
712
- "predicate": "serves",
938
+ "predicate": "realizes",
713
939
  "cardinality": "many-to-many",
714
940
  "strength": "medium",
715
- "required": false
941
+ "required": false,
942
+ "description": "The interaction's joint behaviour is what makes the service available, so the service exists only because the participants work together."
716
943
  },
717
944
  "business.businessinteraction.triggers.business.businessevent": {
718
945
  "id": "business.businessinteraction.triggers.business.businessevent",
@@ -723,40 +950,20 @@
723
950
  "predicate": "triggers",
724
951
  "cardinality": "many-to-many",
725
952
  "strength": "medium",
726
- "required": false
727
- },
728
- "business.businessinterface.accesses.business.businessobject": {
729
- "id": "business.businessinterface.accesses.business.businessobject",
730
- "source_spec_node_id": "business.businessinterface",
731
- "source_layer": "business",
732
- "destination_spec_node_id": "business.businessobject",
733
- "destination_layer": "business",
734
- "predicate": "accesses",
735
- "cardinality": "many-to-many",
736
- "strength": "medium",
737
- "required": false
953
+ "required": false,
954
+ "description": "The interaction raises the event when its joint behaviour reaches a named state change, such as a deal being agreed."
738
955
  },
739
- "business.businessinterface.flows-to.business.businessobject": {
740
- "id": "business.businessinterface.flows-to.business.businessobject",
741
- "source_spec_node_id": "business.businessinterface",
742
- "source_layer": "business",
743
- "destination_spec_node_id": "business.businessobject",
744
- "destination_layer": "business",
745
- "predicate": "flows-to",
746
- "cardinality": "many-to-many",
747
- "strength": "medium",
748
- "required": false
749
- },
750
- "business.businessinterface.provides.business.businessservice": {
751
- "id": "business.businessinterface.provides.business.businessservice",
956
+ "business.businessinterface.assigned-to.business.businessservice": {
957
+ "id": "business.businessinterface.assigned-to.business.businessservice",
752
958
  "source_spec_node_id": "business.businessinterface",
753
959
  "source_layer": "business",
754
960
  "destination_spec_node_id": "business.businessservice",
755
961
  "destination_layer": "business",
756
- "predicate": "provides",
962
+ "predicate": "assigned-to",
757
963
  "cardinality": "many-to-many",
758
964
  "strength": "medium",
759
- "required": false
965
+ "required": false,
966
+ "description": "The interface is the channel through which the service is offered, so the service is reached at that point of access, such as a portal, counter or call centre."
760
967
  },
761
968
  "business.businessinterface.serves.business.businessactor": {
762
969
  "id": "business.businessinterface.serves.business.businessactor",
@@ -767,7 +974,8 @@
767
974
  "predicate": "serves",
768
975
  "cardinality": "many-to-many",
769
976
  "strength": "medium",
770
- "required": false
977
+ "required": false,
978
+ "description": "The actor uses the interface as its point of access to the organization's services."
771
979
  },
772
980
  "business.businessinterface.serves.business.businessrole": {
773
981
  "id": "business.businessinterface.serves.business.businessrole",
@@ -778,29 +986,8 @@
778
986
  "predicate": "serves",
779
987
  "cardinality": "many-to-many",
780
988
  "strength": "medium",
781
- "required": false
782
- },
783
- "business.businessinterface.triggers.business.businessfunction": {
784
- "id": "business.businessinterface.triggers.business.businessfunction",
785
- "source_spec_node_id": "business.businessinterface",
786
- "source_layer": "business",
787
- "destination_spec_node_id": "business.businessfunction",
788
- "destination_layer": "business",
789
- "predicate": "triggers",
790
- "cardinality": "many-to-many",
791
- "strength": "medium",
792
- "required": false
793
- },
794
- "business.businessinterface.triggers.business.businessprocess": {
795
- "id": "business.businessinterface.triggers.business.businessprocess",
796
- "source_spec_node_id": "business.businessinterface",
797
- "source_layer": "business",
798
- "destination_spec_node_id": "business.businessprocess",
799
- "destination_layer": "business",
800
- "predicate": "triggers",
801
- "cardinality": "many-to-many",
802
- "strength": "medium",
803
- "required": false
989
+ "required": false,
990
+ "description": "Whoever fills the role uses the interface as its point of access to the organization's services."
804
991
  },
805
992
  "business.businessobject.composes.business.businessobject": {
806
993
  "id": "business.businessobject.composes.business.businessobject",
@@ -811,7 +998,8 @@
811
998
  "predicate": "composes",
812
999
  "cardinality": "many-to-many",
813
1000
  "strength": "medium",
814
- "required": false
1001
+ "required": false,
1002
+ "description": "The part object exists only within the whole object, as order lines exist only within an order."
815
1003
  },
816
1004
  "business.businessobject.references.application.dataobject": {
817
1005
  "id": "business.businessobject.references.application.dataobject",
@@ -822,7 +1010,8 @@
822
1010
  "predicate": "references",
823
1011
  "cardinality": "many-to-many",
824
1012
  "strength": "medium",
825
- "required": false
1013
+ "required": false,
1014
+ "description": "The data object records the business object's information in an application, so the business concept can be traced to the data that holds it."
826
1015
  },
827
1016
  "business.businessprocess.accesses.business.businessobject": {
828
1017
  "id": "business.businessprocess.accesses.business.businessobject",
@@ -833,7 +1022,8 @@
833
1022
  "predicate": "accesses",
834
1023
  "cardinality": "many-to-many",
835
1024
  "strength": "medium",
836
- "required": false
1025
+ "required": false,
1026
+ "description": "One or more steps of the process create, read, update or delete the business object."
837
1027
  },
838
1028
  "business.businessprocess.accesses.business.contract": {
839
1029
  "id": "business.businessprocess.accesses.business.contract",
@@ -844,29 +1034,8 @@
844
1034
  "predicate": "accesses",
845
1035
  "cardinality": "many-to-many",
846
1036
  "strength": "medium",
847
- "required": false
848
- },
849
- "business.businessprocess.aggregates.application.applicationprocess": {
850
- "id": "business.businessprocess.aggregates.application.applicationprocess",
851
- "source_spec_node_id": "business.businessprocess",
852
- "source_layer": "business",
853
- "destination_spec_node_id": "application.applicationprocess",
854
- "destination_layer": "application",
855
- "predicate": "aggregates",
856
- "cardinality": "many-to-many",
857
- "strength": "medium",
858
- "required": false
859
- },
860
- "business.businessprocess.constrained-by.security.securityconstraints": {
861
- "id": "business.businessprocess.constrained-by.security.securityconstraints",
862
- "source_spec_node_id": "business.businessprocess",
863
- "source_layer": "business",
864
- "destination_spec_node_id": "security.securityconstraints",
865
- "destination_layer": "security",
866
- "predicate": "constrained-by",
867
- "cardinality": "many-to-many",
868
- "strength": "medium",
869
- "required": false
1037
+ "required": false,
1038
+ "description": "One or more steps of the process read or change the contract, for example checking an entitlement or recording a signature."
870
1039
  },
871
1040
  "business.businessprocess.constrained-by.security.separationofduty": {
872
1041
  "id": "business.businessprocess.constrained-by.security.separationofduty",
@@ -877,18 +1046,20 @@
877
1046
  "predicate": "constrained-by",
878
1047
  "cardinality": "many-to-many",
879
1048
  "strength": "medium",
880
- "required": false
1049
+ "required": false,
1050
+ "description": "The separation-of-duty rule limits which roles may perform the process's steps, so that no one role carries a sensitive sequence end to end."
881
1051
  },
882
- "business.businessprocess.delivers.business.businessobject": {
883
- "id": "business.businessprocess.delivers.business.businessobject",
1052
+ "business.businessprocess.flows-to.business.businessfunction": {
1053
+ "id": "business.businessprocess.flows-to.business.businessfunction",
884
1054
  "source_spec_node_id": "business.businessprocess",
885
1055
  "source_layer": "business",
886
- "destination_spec_node_id": "business.businessobject",
1056
+ "destination_spec_node_id": "business.businessfunction",
887
1057
  "destination_layer": "business",
888
- "predicate": "delivers",
1058
+ "predicate": "flows-to",
889
1059
  "cardinality": "many-to-many",
890
1060
  "strength": "medium",
891
- "required": false
1061
+ "required": false,
1062
+ "description": "Work or information produced by the process is handed to the function, which continues with it as part of its ongoing behaviour."
892
1063
  },
893
1064
  "business.businessprocess.flows-to.business.businessprocess": {
894
1065
  "id": "business.businessprocess.flows-to.business.businessprocess",
@@ -899,29 +1070,32 @@
899
1070
  "predicate": "flows-to",
900
1071
  "cardinality": "many-to-many",
901
1072
  "strength": "medium",
902
- "required": false
1073
+ "required": false,
1074
+ "description": "When the upstream process completes or reaches a hand-off point, its work or result passes to the downstream process, which continues the end-to-end sequence; use it for the sequence between processes, and triggers only for an event."
903
1075
  },
904
- "business.businessprocess.realizes.business.businessservice": {
905
- "id": "business.businessprocess.realizes.business.businessservice",
1076
+ "business.businessprocess.realizes.business.businesscapability": {
1077
+ "id": "business.businessprocess.realizes.business.businesscapability",
906
1078
  "source_spec_node_id": "business.businessprocess",
907
1079
  "source_layer": "business",
908
- "destination_spec_node_id": "business.businessservice",
1080
+ "destination_spec_node_id": "business.businesscapability",
909
1081
  "destination_layer": "business",
910
1082
  "predicate": "realizes",
911
1083
  "cardinality": "many-to-many",
912
1084
  "strength": "medium",
913
- "required": false
1085
+ "required": false,
1086
+ "description": "Running the business process is how the organization exercises the capability, so the process is one concrete means by which the capability exists."
914
1087
  },
915
- "business.businessprocess.realizes.motivation.goal": {
916
- "id": "business.businessprocess.realizes.motivation.goal",
1088
+ "business.businessprocess.realizes.business.businessservice": {
1089
+ "id": "business.businessprocess.realizes.business.businessservice",
917
1090
  "source_spec_node_id": "business.businessprocess",
918
1091
  "source_layer": "business",
919
- "destination_spec_node_id": "motivation.goal",
920
- "destination_layer": "motivation",
1092
+ "destination_spec_node_id": "business.businessservice",
1093
+ "destination_layer": "business",
921
1094
  "predicate": "realizes",
922
1095
  "cardinality": "many-to-many",
923
1096
  "strength": "medium",
924
- "required": false
1097
+ "required": false,
1098
+ "description": "The process's ordered steps are what makes the service available to its consumers."
925
1099
  },
926
1100
  "business.businessprocess.realizes.motivation.outcome": {
927
1101
  "id": "business.businessprocess.realizes.motivation.outcome",
@@ -932,7 +1106,8 @@
932
1106
  "predicate": "realizes",
933
1107
  "cardinality": "many-to-many",
934
1108
  "strength": "medium",
935
- "required": false
1109
+ "required": false,
1110
+ "description": "Completing the process produces the outcome, the end result the organization wants."
936
1111
  },
937
1112
  "business.businessprocess.satisfies.motivation.requirement": {
938
1113
  "id": "business.businessprocess.satisfies.motivation.requirement",
@@ -943,7 +1118,8 @@
943
1118
  "predicate": "satisfies",
944
1119
  "cardinality": "many-to-many",
945
1120
  "strength": "medium",
946
- "required": false
1121
+ "required": false,
1122
+ "description": "The process is how the organization meets the requirement."
947
1123
  },
948
1124
  "business.businessprocess.triggers.business.businessevent": {
949
1125
  "id": "business.businessprocess.triggers.business.businessevent",
@@ -954,51 +1130,8 @@
954
1130
  "predicate": "triggers",
955
1131
  "cardinality": "many-to-many",
956
1132
  "strength": "medium",
957
- "required": false
958
- },
959
- "business.businessprocess.triggers.business.businessfunction": {
960
- "id": "business.businessprocess.triggers.business.businessfunction",
961
- "source_spec_node_id": "business.businessprocess",
962
- "source_layer": "business",
963
- "destination_spec_node_id": "business.businessfunction",
964
- "destination_layer": "business",
965
- "predicate": "triggers",
966
- "cardinality": "many-to-many",
967
- "strength": "medium",
968
- "required": false
969
- },
970
- "business.businessprocess.triggers.business.businessprocess": {
971
- "id": "business.businessprocess.triggers.business.businessprocess",
972
- "source_spec_node_id": "business.businessprocess",
973
- "source_layer": "business",
974
- "destination_spec_node_id": "business.businessprocess",
975
- "destination_layer": "business",
976
- "predicate": "triggers",
977
- "cardinality": "many-to-many",
978
- "strength": "medium",
979
- "required": false
980
- },
981
- "business.businessrole.accesses.business.businessobject": {
982
- "id": "business.businessrole.accesses.business.businessobject",
983
- "source_spec_node_id": "business.businessrole",
984
- "source_layer": "business",
985
- "destination_spec_node_id": "business.businessobject",
986
- "destination_layer": "business",
987
- "predicate": "accesses",
988
- "cardinality": "many-to-many",
989
- "strength": "medium",
990
- "required": false
991
- },
992
- "business.businessrole.accesses.business.contract": {
993
- "id": "business.businessrole.accesses.business.contract",
994
- "source_spec_node_id": "business.businessrole",
995
- "source_layer": "business",
996
- "destination_spec_node_id": "business.contract",
997
- "destination_layer": "business",
998
- "predicate": "accesses",
999
- "cardinality": "many-to-many",
1000
- "strength": "medium",
1001
- "required": false
1133
+ "required": false,
1134
+ "description": "The process raises the event, typically when it ends or passes a milestone, such as an order being shipped."
1002
1135
  },
1003
1136
  "business.businessrole.assigned-to.business.businessfunction": {
1004
1137
  "id": "business.businessrole.assigned-to.business.businessfunction",
@@ -1009,7 +1142,8 @@
1009
1142
  "predicate": "assigned-to",
1010
1143
  "cardinality": "many-to-many",
1011
1144
  "strength": "medium",
1012
- "required": false
1145
+ "required": false,
1146
+ "description": "Whoever fills the role carries out the function's ongoing behaviour."
1013
1147
  },
1014
1148
  "business.businessrole.assigned-to.business.businessinteraction": {
1015
1149
  "id": "business.businessrole.assigned-to.business.businessinteraction",
@@ -1020,18 +1154,8 @@
1020
1154
  "predicate": "assigned-to",
1021
1155
  "cardinality": "many-to-many",
1022
1156
  "strength": "medium",
1023
- "required": false
1024
- },
1025
- "business.businessrole.assigned-to.business.businessinterface": {
1026
- "id": "business.businessrole.assigned-to.business.businessinterface",
1027
- "source_spec_node_id": "business.businessrole",
1028
- "source_layer": "business",
1029
- "destination_spec_node_id": "business.businessinterface",
1030
- "destination_layer": "business",
1031
- "predicate": "assigned-to",
1032
- "cardinality": "many-to-many",
1033
- "strength": "medium",
1034
- "required": false
1157
+ "required": false,
1158
+ "description": "The role is one of the participants that carry out the interaction jointly."
1035
1159
  },
1036
1160
  "business.businessrole.assigned-to.business.businessprocess": {
1037
1161
  "id": "business.businessrole.assigned-to.business.businessprocess",
@@ -1042,7 +1166,8 @@
1042
1166
  "predicate": "assigned-to",
1043
1167
  "cardinality": "many-to-many",
1044
1168
  "strength": "medium",
1045
- "required": false
1169
+ "required": false,
1170
+ "description": "Whoever fills the role performs the process and is responsible for its result."
1046
1171
  },
1047
1172
  "business.businessrole.composes.business.businessrole": {
1048
1173
  "id": "business.businessrole.composes.business.businessrole",
@@ -1053,62 +1178,20 @@
1053
1178
  "predicate": "composes",
1054
1179
  "cardinality": "many-to-many",
1055
1180
  "strength": "medium",
1056
- "required": false
1181
+ "required": false,
1182
+ "description": "The narrower role is part of the wider one and exists only within it, so the wider role's responsibilities include the narrower role's."
1057
1183
  },
1058
- "business.businessrole.performs.business.businessfunction": {
1059
- "id": "business.businessrole.performs.business.businessfunction",
1060
- "source_spec_node_id": "business.businessrole",
1061
- "source_layer": "business",
1062
- "destination_spec_node_id": "business.businessfunction",
1063
- "destination_layer": "business",
1064
- "predicate": "performs",
1065
- "cardinality": "many-to-many",
1066
- "strength": "medium",
1067
- "required": false
1068
- },
1069
- "business.businessrole.performs.business.businessprocess": {
1070
- "id": "business.businessrole.performs.business.businessprocess",
1071
- "source_spec_node_id": "business.businessrole",
1072
- "source_layer": "business",
1073
- "destination_spec_node_id": "business.businessprocess",
1074
- "destination_layer": "business",
1075
- "predicate": "performs",
1076
- "cardinality": "many-to-many",
1077
- "strength": "medium",
1078
- "required": false
1079
- },
1080
- "business.businessrole.serves.business.businessactor": {
1081
- "id": "business.businessrole.serves.business.businessactor",
1082
- "source_spec_node_id": "business.businessrole",
1083
- "source_layer": "business",
1084
- "destination_spec_node_id": "business.businessactor",
1085
- "destination_layer": "business",
1086
- "predicate": "serves",
1087
- "cardinality": "many-to-many",
1088
- "strength": "medium",
1089
- "required": false
1090
- },
1091
- "business.businessrole.serves.motivation.stakeholder": {
1092
- "id": "business.businessrole.serves.motivation.stakeholder",
1184
+ "business.businessrole.references.motivation.stakeholder": {
1185
+ "id": "business.businessrole.references.motivation.stakeholder",
1093
1186
  "source_spec_node_id": "business.businessrole",
1094
1187
  "source_layer": "business",
1095
1188
  "destination_spec_node_id": "motivation.stakeholder",
1096
1189
  "destination_layer": "motivation",
1097
- "predicate": "serves",
1098
- "cardinality": "many-to-many",
1099
- "strength": "medium",
1100
- "required": false
1101
- },
1102
- "business.businessrole.triggers.business.businessevent": {
1103
- "id": "business.businessrole.triggers.business.businessevent",
1104
- "source_spec_node_id": "business.businessrole",
1105
- "source_layer": "business",
1106
- "destination_spec_node_id": "business.businessevent",
1107
- "destination_layer": "business",
1108
- "predicate": "triggers",
1190
+ "predicate": "references",
1109
1191
  "cardinality": "many-to-many",
1110
1192
  "strength": "medium",
1111
- "required": false
1193
+ "required": false,
1194
+ "description": "The role acts on behalf of the stakeholder, so the stakeholder's concerns and drivers apply to whoever fills the role."
1112
1195
  },
1113
1196
  "business.businessservice.accesses.business.contract": {
1114
1197
  "id": "business.businessservice.accesses.business.contract",
@@ -1119,18 +1202,8 @@
1119
1202
  "predicate": "accesses",
1120
1203
  "cardinality": "many-to-many",
1121
1204
  "strength": "medium",
1122
- "required": false
1123
- },
1124
- "business.businessservice.delivers-value.motivation.value": {
1125
- "id": "business.businessservice.delivers-value.motivation.value",
1126
- "source_spec_node_id": "business.businessservice",
1127
- "source_layer": "business",
1128
- "destination_spec_node_id": "motivation.value",
1129
- "destination_layer": "motivation",
1130
- "predicate": "delivers-value",
1131
- "cardinality": "many-to-many",
1132
- "strength": "medium",
1133
- "required": false
1205
+ "required": false,
1206
+ "description": "Delivering the service reads the contract's terms, for example checking a consumer's entitlement or service level."
1134
1207
  },
1135
1208
  "business.businessservice.delivers.business.businessobject": {
1136
1209
  "id": "business.businessservice.delivers.business.businessobject",
@@ -1141,18 +1214,20 @@
1141
1214
  "predicate": "delivers",
1142
1215
  "cardinality": "many-to-many",
1143
1216
  "strength": "medium",
1144
- "required": false
1217
+ "required": false,
1218
+ "description": "The service hands the business object to its consumer as its result, as a policy issuance service delivers a policy."
1145
1219
  },
1146
- "business.businessservice.realizes.business.businessprocess": {
1147
- "id": "business.businessservice.realizes.business.businessprocess",
1220
+ "business.businessservice.delivers.motivation.value": {
1221
+ "id": "business.businessservice.delivers.motivation.value",
1148
1222
  "source_spec_node_id": "business.businessservice",
1149
1223
  "source_layer": "business",
1150
- "destination_spec_node_id": "business.businessprocess",
1151
- "destination_layer": "business",
1152
- "predicate": "realizes",
1224
+ "destination_spec_node_id": "motivation.value",
1225
+ "destination_layer": "motivation",
1226
+ "predicate": "delivers",
1153
1227
  "cardinality": "many-to-many",
1154
1228
  "strength": "medium",
1155
- "required": false
1229
+ "required": false,
1230
+ "description": "Consumers of the service gain the value; the value is why the service is offered."
1156
1231
  },
1157
1232
  "business.businessservice.realizes.motivation.goal": {
1158
1233
  "id": "business.businessservice.realizes.motivation.goal",
@@ -1163,7 +1238,20 @@
1163
1238
  "predicate": "realizes",
1164
1239
  "cardinality": "many-to-many",
1165
1240
  "strength": "medium",
1166
- "required": false
1241
+ "required": false,
1242
+ "description": "Offering the service achieves the goal; this is the business layer's main link to the organization's goals."
1243
+ },
1244
+ "business.businessservice.realizes.motivation.outcome": {
1245
+ "id": "business.businessservice.realizes.motivation.outcome",
1246
+ "source_spec_node_id": "business.businessservice",
1247
+ "source_layer": "business",
1248
+ "destination_spec_node_id": "motivation.outcome",
1249
+ "destination_layer": "motivation",
1250
+ "predicate": "realizes",
1251
+ "cardinality": "many-to-many",
1252
+ "strength": "medium",
1253
+ "required": false,
1254
+ "description": "Offering the service produces the outcome its consumers or the organization want."
1167
1255
  },
1168
1256
  "business.businessservice.satisfies.motivation.requirement": {
1169
1257
  "id": "business.businessservice.satisfies.motivation.requirement",
@@ -1174,7 +1262,8 @@
1174
1262
  "predicate": "satisfies",
1175
1263
  "cardinality": "many-to-many",
1176
1264
  "strength": "medium",
1177
- "required": false
1265
+ "required": false,
1266
+ "description": "The service is how the organization meets the requirement."
1178
1267
  },
1179
1268
  "business.businessservice.serves.business.businessactor": {
1180
1269
  "id": "business.businessservice.serves.business.businessactor",
@@ -1185,51 +1274,44 @@
1185
1274
  "predicate": "serves",
1186
1275
  "cardinality": "many-to-many",
1187
1276
  "strength": "medium",
1188
- "required": false
1189
- },
1190
- "business.contract.accesses.business.businessobject": {
1191
- "id": "business.contract.accesses.business.businessobject",
1192
- "source_spec_node_id": "business.contract",
1193
- "source_layer": "business",
1194
- "destination_spec_node_id": "business.businessobject",
1195
- "destination_layer": "business",
1196
- "predicate": "accesses",
1197
- "cardinality": "many-to-many",
1198
- "strength": "medium",
1199
- "required": false
1277
+ "required": false,
1278
+ "description": "The actor uses the service; the actor is a consumer, such as a customer or supplier, of what the service offers."
1200
1279
  },
1201
- "business.contract.governs.business.businessservice": {
1202
- "id": "business.contract.governs.business.businessservice",
1203
- "source_spec_node_id": "business.contract",
1280
+ "business.businessservice.serves.business.businessprocess": {
1281
+ "id": "business.businessservice.serves.business.businessprocess",
1282
+ "source_spec_node_id": "business.businessservice",
1204
1283
  "source_layer": "business",
1205
- "destination_spec_node_id": "business.businessservice",
1284
+ "destination_spec_node_id": "business.businessprocess",
1206
1285
  "destination_layer": "business",
1207
- "predicate": "governs",
1286
+ "predicate": "serves",
1208
1287
  "cardinality": "many-to-many",
1209
1288
  "strength": "medium",
1210
- "required": false
1289
+ "required": false,
1290
+ "description": "One or more steps of the process use the service to get the result the sequence needs."
1211
1291
  },
1212
- "business.contract.serves.business.businessrole": {
1213
- "id": "business.contract.serves.business.businessrole",
1214
- "source_spec_node_id": "business.contract",
1292
+ "business.businessservice.serves.business.businessrole": {
1293
+ "id": "business.businessservice.serves.business.businessrole",
1294
+ "source_spec_node_id": "business.businessservice",
1215
1295
  "source_layer": "business",
1216
1296
  "destination_spec_node_id": "business.businessrole",
1217
1297
  "destination_layer": "business",
1218
1298
  "predicate": "serves",
1219
1299
  "cardinality": "many-to-many",
1220
1300
  "strength": "medium",
1221
- "required": false
1301
+ "required": false,
1302
+ "description": "Whoever fills the role uses the service as a consumer of what it offers."
1222
1303
  },
1223
- "business.contract.triggers.business.businessprocess": {
1224
- "id": "business.contract.triggers.business.businessprocess",
1304
+ "business.contract.governs.business.businessservice": {
1305
+ "id": "business.contract.governs.business.businessservice",
1225
1306
  "source_spec_node_id": "business.contract",
1226
1307
  "source_layer": "business",
1227
- "destination_spec_node_id": "business.businessprocess",
1308
+ "destination_spec_node_id": "business.businessservice",
1228
1309
  "destination_layer": "business",
1229
- "predicate": "triggers",
1310
+ "predicate": "governs",
1230
1311
  "cardinality": "many-to-many",
1231
1312
  "strength": "medium",
1232
- "required": false
1313
+ "required": false,
1314
+ "description": "The contract sets the obligations, rights and terms, such as service levels, prices and penalties, under which the service is delivered and used."
1233
1315
  },
1234
1316
  "business.product.aggregates.business.businessservice": {
1235
1317
  "id": "business.product.aggregates.business.businessservice",
@@ -1240,7 +1322,8 @@
1240
1322
  "predicate": "aggregates",
1241
1323
  "cardinality": "many-to-many",
1242
1324
  "strength": "medium",
1243
- "required": false
1325
+ "required": false,
1326
+ "description": "The service is one of the offerings bundled into the product; it exists on its own and can be part of several products."
1244
1327
  },
1245
1328
  "business.product.composes.business.contract": {
1246
1329
  "id": "business.product.composes.business.contract",
@@ -1251,7 +1334,8 @@
1251
1334
  "predicate": "composes",
1252
1335
  "cardinality": "many-to-many",
1253
1336
  "strength": "medium",
1254
- "required": false
1337
+ "required": false,
1338
+ "description": "The contract states the terms of the product and exists only as part of it."
1255
1339
  },
1256
1340
  "business.representation.realizes.business.businessobject": {
1257
1341
  "id": "business.representation.realizes.business.businessobject",
@@ -1262,7 +1346,8 @@
1262
1346
  "predicate": "realizes",
1263
1347
  "cardinality": "many-to-many",
1264
1348
  "strength": "medium",
1265
- "required": false
1349
+ "required": false,
1350
+ "description": "The representation is a perceptible form of the business object, such as a printed invoice or an on-screen statement."
1266
1351
  },
1267
1352
  "business.representation.realizes.business.contract": {
1268
1353
  "id": "business.representation.realizes.business.contract",
@@ -1273,7 +1358,8 @@
1273
1358
  "predicate": "realizes",
1274
1359
  "cardinality": "many-to-many",
1275
1360
  "strength": "medium",
1276
- "required": false
1361
+ "required": false,
1362
+ "description": "The representation is a perceptible form of the contract, such as the signed document or its PDF."
1277
1363
  }
1278
1364
  }
1279
1365
  }