bc-code-intelligence-mcp 1.3.3 → 1.3.5

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 (552) hide show
  1. package/dist/config/test-enhanced-layer-service.js +10 -10
  2. package/dist/config/test-enhanced-layer-service.js.map +1 -1
  3. package/dist/dev/hot-reload.d.ts +2 -2
  4. package/dist/dev/hot-reload.d.ts.map +1 -1
  5. package/dist/dev/hot-reload.js.map +1 -1
  6. package/dist/index.d.ts +0 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +34 -38
  9. package/dist/index.js.map +1 -1
  10. package/dist/layers/index.d.ts +1 -1
  11. package/dist/layers/index.d.ts.map +1 -1
  12. package/dist/layers/index.js +1 -1
  13. package/dist/layers/index.js.map +1 -1
  14. package/dist/services/code-analysis-service.d.ts.map +1 -1
  15. package/dist/services/code-analysis-service.js +4 -0
  16. package/dist/services/code-analysis-service.js.map +1 -1
  17. package/dist/services/enhanced-prompt-service.d.ts +1 -12
  18. package/dist/services/enhanced-prompt-service.d.ts.map +1 -1
  19. package/dist/services/enhanced-prompt-service.js +27 -38
  20. package/dist/services/enhanced-prompt-service.js.map +1 -1
  21. package/dist/services/knowledge-service.d.ts +21 -10
  22. package/dist/services/knowledge-service.d.ts.map +1 -1
  23. package/dist/services/knowledge-service.js +71 -54
  24. package/dist/services/knowledge-service.js.map +1 -1
  25. package/dist/services/multi-content-layer-service.d.ts +90 -0
  26. package/dist/services/multi-content-layer-service.d.ts.map +1 -1
  27. package/dist/services/multi-content-layer-service.js +380 -0
  28. package/dist/services/multi-content-layer-service.js.map +1 -1
  29. package/dist/services/workflow-service.d.ts +11 -3
  30. package/dist/services/workflow-service.d.ts.map +1 -1
  31. package/dist/services/workflow-service.js +119 -78
  32. package/dist/services/workflow-service.js.map +1 -1
  33. package/dist/streamlined-handlers.d.ts +31 -2
  34. package/dist/streamlined-handlers.d.ts.map +1 -1
  35. package/dist/streamlined-handlers.js +151 -109
  36. package/dist/streamlined-handlers.js.map +1 -1
  37. package/dist/streamlined-tools.d.ts +12 -0
  38. package/dist/streamlined-tools.d.ts.map +1 -1
  39. package/dist/streamlined-tools.js +11 -6
  40. package/dist/streamlined-tools.js.map +1 -1
  41. package/package.json +13 -4
  42. package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +0 -24
  43. package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +0 -24
  44. package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +0 -30
  45. package/embedded-knowledge/AGENTS.md +0 -178
  46. package/embedded-knowledge/CONTRIBUTING.md +0 -58
  47. package/embedded-knowledge/LICENSE +0 -21
  48. package/embedded-knowledge/README.md +0 -32
  49. package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +0 -90
  50. package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +0 -113
  51. package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +0 -101
  52. package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +0 -87
  53. package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +0 -155
  54. package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +0 -138
  55. package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +0 -79
  56. package/embedded-knowledge/domains/alex-architect/samples/api-delegate-operation.md +0 -280
  57. package/embedded-knowledge/domains/alex-architect/samples/api-fieldset-registration.md +0 -200
  58. package/embedded-knowledge/domains/alex-architect/samples/api-interface-design.md +0 -565
  59. package/embedded-knowledge/domains/alex-architect/samples/api-page-implementation.md +0 -665
  60. package/embedded-knowledge/domains/alex-architect/samples/complex-facade-patterns.md +0 -325
  61. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern-al.md +0 -696
  62. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern.md +0 -320
  63. package/embedded-knowledge/domains/alex-architect/samples/subscriber-organization.md +0 -102
  64. package/embedded-knowledge/domains/alex-architect/samples/systemid-integration.md +0 -433
  65. package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +0 -66
  66. package/embedded-knowledge/domains/alex-architect/systemid-integration.md +0 -115
  67. package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +0 -360
  68. package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +0 -86
  69. package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +0 -96
  70. package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +0 -70
  71. package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +0 -84
  72. package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +0 -93
  73. package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +0 -73
  74. package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +0 -78
  75. package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +0 -79
  76. package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +0 -87
  77. package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +0 -209
  78. package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +0 -246
  79. package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +0 -107
  80. package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +0 -105
  81. package/embedded-knowledge/domains/dean-debug/samples/bc24-no-series-conversion.md +0 -186
  82. package/embedded-knowledge/domains/dean-debug/samples/case-performance-optimization.md +0 -60
  83. package/embedded-knowledge/domains/dean-debug/samples/compound-statements-debugging.md +0 -139
  84. package/embedded-knowledge/domains/dean-debug/samples/custom-dimensions.md +0 -190
  85. package/embedded-knowledge/domains/dean-debug/samples/custom-telemetry.md +0 -516
  86. package/embedded-knowledge/domains/dean-debug/samples/deleteall-performance.md +0 -298
  87. package/embedded-knowledge/domains/dean-debug/samples/error-correlation.md +0 -324
  88. package/embedded-knowledge/domains/dean-debug/samples/extension-isolation.md +0 -344
  89. package/embedded-knowledge/domains/dean-debug/samples/logmessage-methods.md +0 -137
  90. package/embedded-knowledge/domains/dean-debug/samples/maintainsiftindex-examples.md +0 -340
  91. package/embedded-knowledge/domains/dean-debug/samples/no-series-implementation.md +0 -810
  92. package/embedded-knowledge/domains/dean-debug/samples/no-series-module-bc24.md +0 -86
  93. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation-module-bc24.md +0 -110
  94. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation.md +0 -758
  95. package/embedded-knowledge/domains/dean-debug/samples/odata-query-optimization.md +0 -665
  96. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-case.md +0 -316
  97. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-filters.md +0 -223
  98. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-filter-exclusion.md +0 -149
  99. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-optimization.md +0 -412
  100. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-performance.md +0 -211
  101. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-primary-key.md +0 -155
  102. package/embedded-knowledge/domains/dean-debug/samples/sift-technology-fundamentals.md +0 -475
  103. package/embedded-knowledge/domains/dean-debug/samples/singleinstance-subscribers.md +0 -238
  104. package/embedded-knowledge/domains/dean-debug/samples/table-event-batching.md +0 -97
  105. package/embedded-knowledge/domains/dean-debug/samples/table-key-requirements.md +0 -666
  106. package/embedded-knowledge/domains/dean-debug/samples/telemetry-performance.md +0 -319
  107. package/embedded-knowledge/domains/dean-debug/samples/verbosity-strategy.md +0 -236
  108. package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +0 -59
  109. package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +0 -67
  110. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +0 -70
  111. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +0 -90
  112. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +0 -87
  113. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +0 -70
  114. package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +0 -74
  115. package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +0 -81
  116. package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +0 -56
  117. package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +0 -66
  118. package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +0 -79
  119. package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +0 -78
  120. package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +0 -83
  121. package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +0 -76
  122. package/embedded-knowledge/domains/dean-debug/testfield-performance.md +0 -104
  123. package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +0 -145
  124. package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +0 -104
  125. package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +0 -114
  126. package/embedded-knowledge/domains/eva-errors/samples/fielderror-default-messages.md +0 -356
  127. package/embedded-knowledge/domains/eva-errors/samples/fielderror-syntax.md +0 -256
  128. package/embedded-knowledge/domains/eva-errors/samples/table-safety-validation-patterns.md +0 -101
  129. package/embedded-knowledge/domains/eva-errors/samples/testfield-error-handling.md +0 -108
  130. package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +0 -80
  131. package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +0 -98
  132. package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +0 -123
  133. package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +0 -96
  134. package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +0 -115
  135. package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +0 -115
  136. package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +0 -114
  137. package/embedded-knowledge/domains/jordan-bridge/samples/al-event-subscriber-architecture.md +0 -395
  138. package/embedded-knowledge/domains/jordan-bridge/samples/api-error-responses.md +0 -479
  139. package/embedded-knowledge/domains/jordan-bridge/samples/api-field-control.md +0 -548
  140. package/embedded-knowledge/domains/jordan-bridge/samples/api-url-naming.md +0 -287
  141. package/embedded-knowledge/domains/jordan-bridge/samples/business-process-templates.md +0 -434
  142. package/embedded-knowledge/domains/jordan-bridge/samples/etag-implementation.md +0 -508
  143. package/embedded-knowledge/domains/jordan-bridge/samples/task-scheduler-pattern.md +0 -615
  144. package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +0 -144
  145. package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +0 -96
  146. package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +0 -124
  147. package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +0 -84
  148. package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +0 -75
  149. package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +0 -96
  150. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-multiple-conditions.md +0 -385
  151. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-syntax-structure.md +0 -72
  152. package/embedded-knowledge/domains/maya-mentor/samples/fielderror-syntax-usage.md +0 -48
  153. package/embedded-knowledge/domains/maya-mentor/samples/testfield-basic-syntax.md +0 -49
  154. package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +0 -67
  155. package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +0 -119
  156. package/embedded-knowledge/domains/quinn-tester/rule-execution.md +0 -123
  157. package/embedded-knowledge/domains/quinn-tester/samples/case-error-handling.md +0 -64
  158. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-message-construction.md +0 -60
  159. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-validation-patterns.md +0 -83
  160. package/embedded-knowledge/domains/quinn-tester/samples/rule-execution.md +0 -716
  161. package/embedded-knowledge/domains/quinn-tester/samples/table-safety-validation-patterns.md +0 -101
  162. package/embedded-knowledge/domains/quinn-tester/samples/temporary-table-operation-validation.md +0 -91
  163. package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +0 -79
  164. package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +0 -79
  165. package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +0 -89
  166. package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +0 -76
  167. package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +0 -76
  168. package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +0 -76
  169. package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +0 -81
  170. package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +0 -76
  171. package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +0 -75
  172. package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +0 -76
  173. package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +0 -76
  174. package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +0 -76
  175. package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +0 -96
  176. package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +0 -76
  177. package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +0 -86
  178. package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +0 -90
  179. package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +0 -82
  180. package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +0 -78
  181. package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +0 -76
  182. package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +0 -78
  183. package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +0 -100
  184. package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +0 -115
  185. package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +0 -124
  186. package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +0 -110
  187. package/embedded-knowledge/domains/roger-reviewer/samples/al-begin-end-blocks.md +0 -438
  188. package/embedded-knowledge/domains/roger-reviewer/samples/al-binary-operator-spacing.md +0 -255
  189. package/embedded-knowledge/domains/roger-reviewer/samples/al-comment-spacing-standards.md +0 -209
  190. package/embedded-knowledge/domains/roger-reviewer/samples/al-keyword-indentation-rules.md +0 -218
  191. package/embedded-knowledge/domains/roger-reviewer/samples/al-line-start-keyword-positioning.md +0 -218
  192. package/embedded-knowledge/domains/roger-reviewer/samples/al-separate-if-else-formatting.md +0 -280
  193. package/embedded-knowledge/domains/roger-reviewer/samples/al-statement-per-line-rule.md +0 -188
  194. package/embedded-knowledge/domains/roger-reviewer/samples/al-unnecessary-else-elimination.md +0 -245
  195. package/embedded-knowledge/domains/roger-reviewer/samples/al-variable-declaration-order.md +0 -244
  196. package/embedded-knowledge/domains/roger-reviewer/samples/begin-end-positioning.md +0 -278
  197. package/embedded-knowledge/domains/roger-reviewer/samples/boolean-simplification-examples.md +0 -484
  198. package/embedded-knowledge/domains/roger-reviewer/samples/case-error-handling.md +0 -64
  199. package/embedded-knowledge/domains/roger-reviewer/samples/compound-statement-readability.md +0 -107
  200. package/embedded-knowledge/domains/roger-reviewer/samples/lonely-repeat-examples.md +0 -280
  201. package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +0 -75
  202. package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +0 -67
  203. package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +0 -76
  204. package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +0 -98
  205. package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +0 -128
  206. package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +0 -75
  207. package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +0 -95
  208. package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +0 -141
  209. package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +0 -91
  210. package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +0 -118
  211. package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +0 -111
  212. package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +0 -113
  213. package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +0 -127
  214. package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +0 -141
  215. package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +0 -66
  216. package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +0 -96
  217. package/embedded-knowledge/domains/sam-coder/samples/al-blank-line-organization.md +0 -161
  218. package/embedded-knowledge/domains/sam-coder/samples/al-case-action-formatting.md +0 -177
  219. package/embedded-knowledge/domains/sam-coder/samples/al-lonely-repeat-pattern.md +0 -239
  220. package/embedded-knowledge/domains/sam-coder/samples/al-named-parameter-pattern.md +0 -346
  221. package/embedded-knowledge/domains/sam-coder/samples/al-record-find-early-exit.md +0 -298
  222. package/embedded-knowledge/domains/sam-coder/samples/command-queue-pattern.md +0 -677
  223. package/embedded-knowledge/domains/sam-coder/samples/deleteall-alternative-implementation.md +0 -117
  224. package/embedded-knowledge/domains/sam-coder/samples/deleteall-triggers.md +0 -75
  225. package/embedded-knowledge/domains/sam-coder/samples/deleteall-usage.md +0 -169
  226. package/embedded-knowledge/domains/sam-coder/samples/event-bridge-pattern.md +0 -399
  227. package/embedded-knowledge/domains/sam-coder/samples/event-payload-design.md +0 -356
  228. package/embedded-knowledge/domains/sam-coder/samples/generic-method-patterns.md +0 -889
  229. package/embedded-knowledge/domains/sam-coder/samples/manual-binding.md +0 -84
  230. package/embedded-knowledge/domains/sam-coder/samples/nested-compound-best-practices.md +0 -127
  231. package/embedded-knowledge/domains/sam-coder/samples/single-to-compound-conversion.md +0 -89
  232. package/embedded-knowledge/domains/sam-coder/samples/template-method-pattern.md +0 -516
  233. package/embedded-knowledge/domains/sam-coder/samples/testfield-patterns.md +0 -61
  234. package/embedded-knowledge/domains/sam-coder/samples/type-safe-operations.md +0 -427
  235. package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +0 -122
  236. package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +0 -96
  237. package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +0 -101
  238. package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +0 -149
  239. package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +0 -107
  240. package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +0 -95
  241. package/embedded-knowledge/domains/seth-security/api-permission-model.md +0 -115
  242. package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +0 -78
  243. package/embedded-knowledge/domains/seth-security/samples/al-temporary-table-safety.md +0 -373
  244. package/embedded-knowledge/domains/seth-security/samples/api-permission-model.md +0 -308
  245. package/embedded-knowledge/domains/shared/al-file-naming-conventions.md +0 -146
  246. package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +0 -79
  247. package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +0 -78
  248. package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +0 -81
  249. package/embedded-knowledge/indexes/bc-version-matrix.json +0 -188
  250. package/embedded-knowledge/indexes/domain-catalog.json +0 -106
  251. package/embedded-knowledge/indexes/tags/abbreviations.json +0 -1
  252. package/embedded-knowledge/indexes/tags/abstraction.json +0 -1
  253. package/embedded-knowledge/indexes/tags/access-control.json +0 -1
  254. package/embedded-knowledge/indexes/tags/accessibility.json +0 -1
  255. package/embedded-knowledge/indexes/tags/actions.json +0 -1
  256. package/embedded-knowledge/indexes/tags/advanced-patterns.json +0 -1
  257. package/embedded-knowledge/indexes/tags/advanced.json +0 -1
  258. package/embedded-knowledge/indexes/tags/al-extension.json +0 -1
  259. package/embedded-knowledge/indexes/tags/al-generics.json +0 -1
  260. package/embedded-knowledge/indexes/tags/al-objects.json +0 -1
  261. package/embedded-knowledge/indexes/tags/al-syntax.json +0 -1
  262. package/embedded-knowledge/indexes/tags/algorithm-structure.json +0 -1
  263. package/embedded-knowledge/indexes/tags/alternatives.json +0 -1
  264. package/embedded-knowledge/indexes/tags/analytics.json +0 -1
  265. package/embedded-knowledge/indexes/tags/api-delegates.json +0 -1
  266. package/embedded-knowledge/indexes/tags/api-design.json +0 -1
  267. package/embedded-knowledge/indexes/tags/api-documentation.json +0 -1
  268. package/embedded-knowledge/indexes/tags/api-endpoints.json +0 -1
  269. package/embedded-knowledge/indexes/tags/api-extensibility.json +0 -1
  270. package/embedded-knowledge/indexes/tags/api-fieldsets.json +0 -1
  271. package/embedded-knowledge/indexes/tags/api-integration.json +0 -1
  272. package/embedded-knowledge/indexes/tags/api-interfaces.json +0 -1
  273. package/embedded-knowledge/indexes/tags/api-optimization.json +0 -1
  274. package/embedded-knowledge/indexes/tags/api-pages.json +0 -1
  275. package/embedded-knowledge/indexes/tags/api-patterns.json +0 -1
  276. package/embedded-knowledge/indexes/tags/api-permissions.json +0 -1
  277. package/embedded-knowledge/indexes/tags/api-responses.json +0 -1
  278. package/embedded-knowledge/indexes/tags/api-simplification.json +0 -1
  279. package/embedded-knowledge/indexes/tags/api.json +0 -1
  280. package/embedded-knowledge/indexes/tags/architecture.json +0 -1
  281. package/embedded-knowledge/indexes/tags/async-patterns.json +0 -1
  282. package/embedded-knowledge/indexes/tags/async-processing.json +0 -1
  283. package/embedded-knowledge/indexes/tags/automatic-registration.json +0 -1
  284. package/embedded-knowledge/indexes/tags/batch-operations.json +0 -1
  285. package/embedded-knowledge/indexes/tags/bc24-migration.json +0 -1
  286. package/embedded-knowledge/indexes/tags/begin-blocks.json +0 -1
  287. package/embedded-knowledge/indexes/tags/begin-end.json +0 -1
  288. package/embedded-knowledge/indexes/tags/behavioral-patterns.json +0 -1
  289. package/embedded-knowledge/indexes/tags/best-practices.json +0 -1
  290. package/embedded-knowledge/indexes/tags/binding.json +0 -1
  291. package/embedded-knowledge/indexes/tags/block-structure.json +0 -1
  292. package/embedded-knowledge/indexes/tags/blocks.json +0 -1
  293. package/embedded-knowledge/indexes/tags/boolean-expressions.json +0 -1
  294. package/embedded-knowledge/indexes/tags/branching.json +0 -1
  295. package/embedded-knowledge/indexes/tags/breaking-changes.json +0 -1
  296. package/embedded-knowledge/indexes/tags/breakpoints.json +0 -1
  297. package/embedded-knowledge/indexes/tags/business-foundation.json +0 -1
  298. package/embedded-knowledge/indexes/tags/business-infrastructure.json +0 -1
  299. package/embedded-knowledge/indexes/tags/business-process.json +0 -1
  300. package/embedded-knowledge/indexes/tags/business-rules.json +0 -1
  301. package/embedded-knowledge/indexes/tags/caching.json +0 -1
  302. package/embedded-knowledge/indexes/tags/case-statements.json +0 -1
  303. package/embedded-knowledge/indexes/tags/case.json +0 -1
  304. package/embedded-knowledge/indexes/tags/code-analysis.json +0 -1
  305. package/embedded-knowledge/indexes/tags/code-clarity.json +0 -1
  306. package/embedded-knowledge/indexes/tags/code-comprehension.json +0 -1
  307. package/embedded-knowledge/indexes/tags/code-conversion.json +0 -1
  308. package/embedded-knowledge/indexes/tags/code-formatting.json +0 -1
  309. package/embedded-knowledge/indexes/tags/code-organization.json +0 -1
  310. package/embedded-knowledge/indexes/tags/code-patterns.json +0 -1
  311. package/embedded-knowledge/indexes/tags/code-quality.json +0 -1
  312. package/embedded-knowledge/indexes/tags/code-reuse.json +0 -1
  313. package/embedded-knowledge/indexes/tags/code-simplification.json +0 -1
  314. package/embedded-knowledge/indexes/tags/code-standards.json +0 -1
  315. package/embedded-knowledge/indexes/tags/code-structure.json +0 -1
  316. package/embedded-knowledge/indexes/tags/code-style.json +0 -1
  317. package/embedded-knowledge/indexes/tags/codeunit-design.json +0 -1
  318. package/embedded-knowledge/indexes/tags/command-queue.json +0 -1
  319. package/embedded-knowledge/indexes/tags/comments.json +0 -1
  320. package/embedded-knowledge/indexes/tags/compile-time-validation.json +0 -1
  321. package/embedded-knowledge/indexes/tags/complex-facade.json +0 -1
  322. package/embedded-knowledge/indexes/tags/complexity-hiding.json +0 -1
  323. package/embedded-knowledge/indexes/tags/complexity-management.json +0 -1
  324. package/embedded-knowledge/indexes/tags/compound-statements.json +0 -1
  325. package/embedded-knowledge/indexes/tags/concurrency.json +0 -1
  326. package/embedded-knowledge/indexes/tags/conditional-logic.json +0 -1
  327. package/embedded-knowledge/indexes/tags/conditional.json +0 -1
  328. package/embedded-knowledge/indexes/tags/conflict-resolution.json +0 -1
  329. package/embedded-knowledge/indexes/tags/consistency.json +0 -1
  330. package/embedded-knowledge/indexes/tags/contract-design.json +0 -1
  331. package/embedded-knowledge/indexes/tags/control-flow.json +0 -1
  332. package/embedded-knowledge/indexes/tags/conversion-guide.json +0 -1
  333. package/embedded-knowledge/indexes/tags/correlation.json +0 -1
  334. package/embedded-knowledge/indexes/tags/custom-messages.json +0 -1
  335. package/embedded-knowledge/indexes/tags/data-access.json +0 -1
  336. package/embedded-knowledge/indexes/tags/data-exposure.json +0 -1
  337. package/embedded-knowledge/indexes/tags/data-integrity.json +0 -1
  338. package/embedded-knowledge/indexes/tags/data-loading.json +0 -1
  339. package/embedded-knowledge/indexes/tags/data-manipulation.json +0 -1
  340. package/embedded-knowledge/indexes/tags/data-modeling.json +0 -1
  341. package/embedded-knowledge/indexes/tags/data-patterns.json +0 -1
  342. package/embedded-knowledge/indexes/tags/data-protection.json +0 -1
  343. package/embedded-knowledge/indexes/tags/data-validation.json +0 -1
  344. package/embedded-knowledge/indexes/tags/database.json +0 -1
  345. package/embedded-knowledge/indexes/tags/debugging.json +0 -1
  346. package/embedded-knowledge/indexes/tags/decision-making.json +0 -1
  347. package/embedded-knowledge/indexes/tags/declaration.json +0 -1
  348. package/embedded-knowledge/indexes/tags/default-messages.json +0 -1
  349. package/embedded-knowledge/indexes/tags/defensive-programming.json +0 -1
  350. package/embedded-knowledge/indexes/tags/deleteall.json +0 -1
  351. package/embedded-knowledge/indexes/tags/dependencies.json +0 -1
  352. package/embedded-knowledge/indexes/tags/deployment.json +0 -1
  353. package/embedded-knowledge/indexes/tags/developer-productivity.json +0 -1
  354. package/embedded-knowledge/indexes/tags/development-workflow.json +0 -1
  355. package/embedded-knowledge/indexes/tags/diagnostics.json +0 -1
  356. package/embedded-knowledge/indexes/tags/dimensions.json +0 -1
  357. package/embedded-knowledge/indexes/tags/documentation.json +0 -1
  358. package/embedded-knowledge/indexes/tags/early-exit.json +0 -1
  359. package/embedded-knowledge/indexes/tags/else-clauses.json +0 -1
  360. package/embedded-knowledge/indexes/tags/end-statements.json +0 -1
  361. package/embedded-knowledge/indexes/tags/enterprise-patterns.json +0 -1
  362. package/embedded-knowledge/indexes/tags/entity-relationships.json +0 -1
  363. package/embedded-knowledge/indexes/tags/error-handling.json +0 -1
  364. package/embedded-knowledge/indexes/tags/error-messages.json +0 -1
  365. package/embedded-knowledge/indexes/tags/error-prevention.json +0 -1
  366. package/embedded-knowledge/indexes/tags/error-text.json +0 -1
  367. package/embedded-knowledge/indexes/tags/etag.json +0 -1
  368. package/embedded-knowledge/indexes/tags/event-bridge.json +0 -1
  369. package/embedded-knowledge/indexes/tags/event-payload.json +0 -1
  370. package/embedded-knowledge/indexes/tags/event-routing.json +0 -1
  371. package/embedded-knowledge/indexes/tags/events.json +0 -1
  372. package/embedded-knowledge/indexes/tags/execution-flow.json +0 -1
  373. package/embedded-knowledge/indexes/tags/expressions.json +0 -1
  374. package/embedded-knowledge/indexes/tags/extensibility.json +0 -1
  375. package/embedded-knowledge/indexes/tags/extensions.json +0 -1
  376. package/embedded-knowledge/indexes/tags/facade-composition.json +0 -1
  377. package/embedded-knowledge/indexes/tags/facade-pattern.json +0 -1
  378. package/embedded-knowledge/indexes/tags/field-control.json +0 -1
  379. package/embedded-knowledge/indexes/tags/field-exclusion.json +0 -1
  380. package/embedded-knowledge/indexes/tags/field-registration.json +0 -1
  381. package/embedded-knowledge/indexes/tags/field-state.json +0 -1
  382. package/embedded-knowledge/indexes/tags/field-validation.json +0 -1
  383. package/embedded-knowledge/indexes/tags/fielderror.json +0 -1
  384. package/embedded-knowledge/indexes/tags/fields.json +0 -1
  385. package/embedded-knowledge/indexes/tags/filtering.json +0 -1
  386. package/embedded-knowledge/indexes/tags/filters.json +0 -1
  387. package/embedded-knowledge/indexes/tags/formatting.json +0 -1
  388. package/embedded-knowledge/indexes/tags/generic-methods.json +0 -1
  389. package/embedded-knowledge/indexes/tags/http-status.json +0 -1
  390. package/embedded-knowledge/indexes/tags/if-statements.json +0 -1
  391. package/embedded-knowledge/indexes/tags/implementation.json +0 -1
  392. package/embedded-knowledge/indexes/tags/indentation.json +0 -1
  393. package/embedded-knowledge/indexes/tags/index-summary.json +0 -277
  394. package/embedded-knowledge/indexes/tags/indexing.json +0 -1
  395. package/embedded-knowledge/indexes/tags/inheritance.json +0 -1
  396. package/embedded-knowledge/indexes/tags/integration.json +0 -1
  397. package/embedded-knowledge/indexes/tags/integrity-checking.json +0 -1
  398. package/embedded-knowledge/indexes/tags/intellisense.json +0 -1
  399. package/embedded-knowledge/indexes/tags/interface-design.json +0 -1
  400. package/embedded-knowledge/indexes/tags/interface-segregation.json +0 -1
  401. package/embedded-knowledge/indexes/tags/isolation.json +0 -1
  402. package/embedded-knowledge/indexes/tags/job-processing.json +0 -1
  403. package/embedded-knowledge/indexes/tags/keyboard-navigation.json +0 -1
  404. package/embedded-knowledge/indexes/tags/keywords.json +0 -1
  405. package/embedded-knowledge/indexes/tags/legacy-modernization.json +0 -1
  406. package/embedded-knowledge/indexes/tags/line-breaks.json +0 -1
  407. package/embedded-knowledge/indexes/tags/line-organization.json +0 -1
  408. package/embedded-knowledge/indexes/tags/line-positioning.json +0 -1
  409. package/embedded-knowledge/indexes/tags/localization.json +0 -1
  410. package/embedded-knowledge/indexes/tags/logging.json +0 -1
  411. package/embedded-knowledge/indexes/tags/loose-coupling.json +0 -1
  412. package/embedded-knowledge/indexes/tags/maintainability.json +0 -1
  413. package/embedded-knowledge/indexes/tags/memory-management.json +0 -1
  414. package/embedded-knowledge/indexes/tags/memory-optimization.json +0 -1
  415. package/embedded-knowledge/indexes/tags/memory.json +0 -1
  416. package/embedded-knowledge/indexes/tags/message-design.json +0 -1
  417. package/embedded-knowledge/indexes/tags/message-formatting.json +0 -1
  418. package/embedded-knowledge/indexes/tags/message-patterns.json +0 -1
  419. package/embedded-knowledge/indexes/tags/metadata-driven.json +0 -1
  420. package/embedded-knowledge/indexes/tags/method-comparison.json +0 -1
  421. package/embedded-knowledge/indexes/tags/module-architecture.json +0 -1
  422. package/embedded-knowledge/indexes/tags/module-validation.json +0 -1
  423. package/embedded-knowledge/indexes/tags/monitoring.json +0 -1
  424. package/embedded-knowledge/indexes/tags/multi-layer-facade.json +0 -1
  425. package/embedded-knowledge/indexes/tags/multi-tenancy.json +0 -1
  426. package/embedded-knowledge/indexes/tags/multiple-values.json +0 -1
  427. package/embedded-knowledge/indexes/tags/naming-conventions.json +0 -1
  428. package/embedded-knowledge/indexes/tags/naming.json +0 -1
  429. package/embedded-knowledge/indexes/tags/navigation.json +0 -1
  430. package/embedded-knowledge/indexes/tags/nested-statements.json +0 -1
  431. package/embedded-knowledge/indexes/tags/no-series-conversion.json +0 -1
  432. package/embedded-knowledge/indexes/tags/no-series-validation.json +0 -1
  433. package/embedded-knowledge/indexes/tags/no-series.json +0 -1
  434. package/embedded-knowledge/indexes/tags/number-generation.json +0 -1
  435. package/embedded-knowledge/indexes/tags/object-documentation.json +0 -1
  436. package/embedded-knowledge/indexes/tags/odata.json +0 -1
  437. package/embedded-knowledge/indexes/tags/ondelete.json +0 -1
  438. package/embedded-knowledge/indexes/tags/onvalidate.json +0 -1
  439. package/embedded-knowledge/indexes/tags/operation-delegation.json +0 -1
  440. package/embedded-knowledge/indexes/tags/operation-safety.json +0 -1
  441. package/embedded-knowledge/indexes/tags/operators.json +0 -1
  442. package/embedded-knowledge/indexes/tags/optimization.json +0 -1
  443. package/embedded-knowledge/indexes/tags/order.json +0 -1
  444. package/embedded-knowledge/indexes/tags/organization.json +0 -1
  445. package/embedded-knowledge/indexes/tags/pages.json +0 -1
  446. package/embedded-knowledge/indexes/tags/parameters.json +0 -1
  447. package/embedded-knowledge/indexes/tags/patterns.json +0 -1
  448. package/embedded-knowledge/indexes/tags/performance-optimization.json +0 -1
  449. package/embedded-knowledge/indexes/tags/performance.json +0 -1
  450. package/embedded-knowledge/indexes/tags/placement.json +0 -1
  451. package/embedded-knowledge/indexes/tags/posting-codeunits.json +0 -1
  452. package/embedded-knowledge/indexes/tags/posting.json +0 -1
  453. package/embedded-knowledge/indexes/tags/preconditions.json +0 -1
  454. package/embedded-knowledge/indexes/tags/primary-key.json +0 -1
  455. package/embedded-knowledge/indexes/tags/privacy.json +0 -1
  456. package/embedded-knowledge/indexes/tags/process-automation.json +0 -1
  457. package/embedded-knowledge/indexes/tags/production.json +0 -1
  458. package/embedded-knowledge/indexes/tags/productivity.json +0 -1
  459. package/embedded-knowledge/indexes/tags/query-performance.json +0 -1
  460. package/embedded-knowledge/indexes/tags/queue-management.json +0 -1
  461. package/embedded-knowledge/indexes/tags/ranges.json +0 -1
  462. package/embedded-knowledge/indexes/tags/readability.json +0 -1
  463. package/embedded-knowledge/indexes/tags/record-access.json +0 -1
  464. package/embedded-knowledge/indexes/tags/record-methods.json +0 -1
  465. package/embedded-knowledge/indexes/tags/refactoring.json +0 -1
  466. package/embedded-knowledge/indexes/tags/reference.json +0 -1
  467. package/embedded-knowledge/indexes/tags/repeat-loops.json +0 -1
  468. package/embedded-knowledge/indexes/tags/repeat-statement.json +0 -1
  469. package/embedded-knowledge/indexes/tags/runtime-errors.json +0 -1
  470. package/embedded-knowledge/indexes/tags/runtime.json +0 -1
  471. package/embedded-knowledge/indexes/tags/safeguards.json +0 -1
  472. package/embedded-knowledge/indexes/tags/security.json +0 -1
  473. package/embedded-knowledge/indexes/tags/sequence-management.json +0 -1
  474. package/embedded-knowledge/indexes/tags/serialization.json +0 -1
  475. package/embedded-knowledge/indexes/tags/session-logmessage.json +0 -1
  476. package/embedded-knowledge/indexes/tags/session.json +0 -1
  477. package/embedded-knowledge/indexes/tags/setloadfields.json +0 -1
  478. package/embedded-knowledge/indexes/tags/shortcuts.json +0 -1
  479. package/embedded-knowledge/indexes/tags/sift.json +0 -1
  480. package/embedded-knowledge/indexes/tags/singleinstance.json +0 -1
  481. package/embedded-knowledge/indexes/tags/spacing.json +0 -1
  482. package/embedded-knowledge/indexes/tags/sql-translation.json +0 -1
  483. package/embedded-knowledge/indexes/tags/standards.json +0 -1
  484. package/embedded-knowledge/indexes/tags/statements.json +0 -1
  485. package/embedded-knowledge/indexes/tags/streaming.json +0 -1
  486. package/embedded-knowledge/indexes/tags/strong-typing.json +0 -1
  487. package/embedded-knowledge/indexes/tags/structural-patterns.json +0 -1
  488. package/embedded-knowledge/indexes/tags/structure.json +0 -1
  489. package/embedded-knowledge/indexes/tags/subscribers.json +0 -1
  490. package/embedded-knowledge/indexes/tags/switch.json +0 -1
  491. package/embedded-knowledge/indexes/tags/symbol-search.json +0 -1
  492. package/embedded-knowledge/indexes/tags/syntax.json +0 -1
  493. package/embedded-knowledge/indexes/tags/systemid.json +0 -1
  494. package/embedded-knowledge/indexes/tags/table-configuration.json +0 -1
  495. package/embedded-knowledge/indexes/tags/table-events.json +0 -1
  496. package/embedded-knowledge/indexes/tags/table-keys.json +0 -1
  497. package/embedded-knowledge/indexes/tags/table-safety.json +0 -1
  498. package/embedded-knowledge/indexes/tags/task-scheduler.json +0 -1
  499. package/embedded-knowledge/indexes/tags/telemetry.json +0 -1
  500. package/embedded-knowledge/indexes/tags/template-method.json +0 -1
  501. package/embedded-knowledge/indexes/tags/temporary-tables.json +0 -1
  502. package/embedded-knowledge/indexes/tags/testfield.json +0 -1
  503. package/embedded-knowledge/indexes/tags/tradeoffs.json +0 -1
  504. package/embedded-knowledge/indexes/tags/triggers.json +0 -1
  505. package/embedded-knowledge/indexes/tags/troubleshooting.json +0 -1
  506. package/embedded-knowledge/indexes/tags/type-safety.json +0 -1
  507. package/embedded-knowledge/indexes/tags/url-structure.json +0 -1
  508. package/embedded-knowledge/indexes/tags/user-experience.json +0 -1
  509. package/embedded-knowledge/indexes/tags/user-feedback.json +0 -1
  510. package/embedded-knowledge/indexes/tags/user-interface.json +0 -1
  511. package/embedded-knowledge/indexes/tags/validation-feedback.json +0 -1
  512. package/embedded-knowledge/indexes/tags/validation.json +0 -1
  513. package/embedded-knowledge/indexes/tags/variables.json +0 -1
  514. package/embedded-knowledge/indexes/tags/verbosity.json +0 -1
  515. package/embedded-knowledge/indexes/tags/vs-code.json +0 -1
  516. package/embedded-knowledge/indexes/tags/web-services.json +0 -1
  517. package/embedded-knowledge/indexes/tags/workflow-management.json +0 -1
  518. package/embedded-knowledge/indexes/tags/workflow-optimization.json +0 -1
  519. package/embedded-knowledge/indexes/tags/workflow-templates.json +0 -1
  520. package/embedded-knowledge/indexes/tags/workspace.json +0 -1
  521. package/embedded-knowledge/indexes/tags/xml-documentation.json +0 -1
  522. package/embedded-knowledge/indexes/topic-relationships.json +0 -128
  523. package/embedded-knowledge/methodologies/index.json +0 -81
  524. package/embedded-knowledge/methodologies/phases/analysis-full.md +0 -208
  525. package/embedded-knowledge/methodologies/phases/analysis-quick.md +0 -44
  526. package/embedded-knowledge/methodologies/phases/analysis.md +0 -182
  527. package/embedded-knowledge/methodologies/phases/execution-validation-full.md +0 -174
  528. package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +0 -31
  529. package/embedded-knowledge/methodologies/phases/execution-validation.md +0 -174
  530. package/embedded-knowledge/methodologies/phases/performance-full.md +0 -211
  531. package/embedded-knowledge/methodologies/phases/performance-quick.md +0 -32
  532. package/embedded-knowledge/methodologies/phases/performance.md +0 -211
  533. package/embedded-knowledge/methodologies/phases/verification-full.md +0 -162
  534. package/embedded-knowledge/methodologies/phases/verification-quick.md +0 -48
  535. package/embedded-knowledge/methodologies/phases/verification.md +0 -146
  536. package/embedded-knowledge/methodologies/workflow-enforcement.md +0 -142
  537. package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +0 -99
  538. package/embedded-knowledge/specialists/alex-architect.md +0 -216
  539. package/embedded-knowledge/specialists/casey-copilot.md +0 -226
  540. package/embedded-knowledge/specialists/chris-config.md +0 -267
  541. package/embedded-knowledge/specialists/dean-debug.md +0 -222
  542. package/embedded-knowledge/specialists/eva-errors.md +0 -235
  543. package/embedded-knowledge/specialists/jordan-bridge.md +0 -235
  544. package/embedded-knowledge/specialists/logan-legacy.md +0 -209
  545. package/embedded-knowledge/specialists/maya-mentor.md +0 -211
  546. package/embedded-knowledge/specialists/morgan-market.md +0 -226
  547. package/embedded-knowledge/specialists/quinn-tester.md +0 -235
  548. package/embedded-knowledge/specialists/roger-reviewer.md +0 -234
  549. package/embedded-knowledge/specialists/sam-coder.md +0 -359
  550. package/embedded-knowledge/specialists/seth-security.md +0 -235
  551. package/embedded-knowledge/specialists/taylor-docs.md +0 -257
  552. package/embedded-knowledge/specialists/uma-ux.md +0 -235
@@ -1,280 +0,0 @@
1
- # API Delegate Operation Pattern - AL Code Examples
2
-
3
- This sample demonstrates implementing delegate operations for extensible APIs in Business Central.
4
-
5
- ## Basic Delegate Interface
6
-
7
- ```al
8
- // Define delegate operation interface
9
- interface IDelegateOperation
10
- {
11
- procedure Execute(var Parameters: Dictionary of [Text, Variant]): Boolean;
12
- procedure GetName(): Text[50];
13
- procedure GetDescription(): Text[250];
14
- }
15
- ```
16
-
17
- ## Simple Delegate Implementation
18
-
19
- ```al
20
- // Customer validation delegate example
21
- codeunit 50100 "Customer Validation Delegate" implements IDelegateOperation
22
- {
23
- procedure Execute(var Parameters: Dictionary of [Text, Variant]): Boolean
24
- var
25
- Customer: Record Customer;
26
- CustomerNo: Code[20];
27
- ValidationResult: Boolean;
28
- begin
29
- // Extract parameters
30
- if not Parameters.Get('CustomerNo', CustomerNo) then
31
- exit(false);
32
-
33
- if not Customer.Get(CustomerNo) then
34
- exit(false);
35
-
36
- // Custom validation logic
37
- ValidationResult := ValidateCustomerForOperation(Customer);
38
- Parameters.Set('IsValid', ValidationResult);
39
-
40
- exit(ValidationResult);
41
- end;
42
-
43
- procedure GetName(): Text[50]
44
- begin
45
- exit('CUSTOMER_VALIDATION');
46
- end;
47
-
48
- procedure GetDescription(): Text[250]
49
- begin
50
- exit('Validates customer eligibility for business operations');
51
- end;
52
-
53
- local procedure ValidateCustomerForOperation(Customer: Record Customer): Boolean
54
- begin
55
- // Business logic for customer validation
56
- exit((Customer.Blocked = Customer.Blocked::" ") and (Customer."Credit Limit (LCY)" > 0));
57
- end;
58
- }
59
- ```
60
-
61
- ## Delegate Registry System
62
-
63
- ```al
64
- // Central delegate registry for operation management
65
- codeunit 50101 "Delegate Registry"
66
- {
67
- var
68
- DelegateOperations: Dictionary of [Text, Interface IDelegateOperation];
69
-
70
- procedure RegisterDelegate(OperationType: Text[50]; DelegateOperation: Interface IDelegateOperation)
71
- begin
72
- DelegateOperations.Set(OperationType, DelegateOperation);
73
- end;
74
-
75
- procedure ExecuteDelegate(OperationType: Text[50]; var Parameters: Dictionary of [Text, Variant]): Boolean
76
- var
77
- DelegateOperation: Interface IDelegateOperation;
78
- begin
79
- if not DelegateOperations.Get(OperationType, DelegateOperation) then
80
- exit(false);
81
-
82
- exit(DelegateOperation.Execute(Parameters));
83
- end;
84
-
85
- procedure GetAvailableDelegates(): List of [Text]
86
- var
87
- AvailableTypes: List of [Text];
88
- OperationType: Text;
89
- begin
90
- foreach OperationType in DelegateOperations.Keys do
91
- AvailableTypes.Add(OperationType);
92
-
93
- exit(AvailableTypes);
94
- end;
95
- }
96
- ```
97
-
98
- ## API with Delegate Operations
99
-
100
- ```al
101
- // Sales API that uses delegate operations for extensibility
102
- page 50100 "Sales API"
103
- {
104
- PageType = API;
105
- APIPublisher = 'mycompany';
106
- APIGroup = 'sales';
107
- APIVersion = 'v1.0';
108
- EntityName = 'salesOrder';
109
- EntitySetName = 'salesOrders';
110
- SourceTable = "Sales Header";
111
-
112
- layout
113
- {
114
- area(Content)
115
- {
116
- repeater(Group)
117
- {
118
- field(documentNo; Rec."No.")
119
- {
120
- ApplicationArea = All;
121
- }
122
- field(customerNo; Rec."Sell-to Customer No.")
123
- {
124
- ApplicationArea = All;
125
- }
126
- field(status; Rec.Status)
127
- {
128
- ApplicationArea = All;
129
- }
130
- }
131
- }
132
- }
133
-
134
- trigger OnInsertRecord(BelowxRec: Boolean): Boolean
135
- var
136
- DelegateRegistry: Codeunit "Delegate Registry";
137
- Parameters: Dictionary of [Text, Variant];
138
- ValidationResult: Boolean;
139
- begin
140
- // Use delegate for customer validation
141
- Parameters.Set('CustomerNo', Rec."Sell-to Customer No.");
142
- ValidationResult := DelegateRegistry.ExecuteDelegate('CUSTOMER_VALIDATION', Parameters);
143
-
144
- if not ValidationResult then
145
- Error('Customer validation failed through delegate operation');
146
-
147
- exit(true);
148
- end;
149
- }
150
- ```
151
-
152
- ## Advanced Delegate Chain
153
-
154
- ```al
155
- // Chain multiple delegates for complex operations
156
- codeunit 50102 "Multi-Step Delegate Chain"
157
- {
158
- var
159
- DelegateRegistry: Codeunit "Delegate Registry";
160
-
161
- procedure ExecuteChain(ChainName: Text[50]; var Parameters: Dictionary of [Text, Variant]): Boolean
162
- var
163
- ChainSteps: List of [Text];
164
- StepName: Text;
165
- StepResult: Boolean;
166
- begin
167
- ChainSteps := GetChainSteps(ChainName);
168
-
169
- foreach StepName in ChainSteps do begin
170
- StepResult := DelegateRegistry.ExecuteDelegate(StepName, Parameters);
171
- if not StepResult then begin
172
- Parameters.Set('FailedStep', StepName);
173
- exit(false);
174
- end;
175
- end;
176
-
177
- exit(true);
178
- end;
179
-
180
- local procedure GetChainSteps(ChainName: Text[50]): List of [Text]
181
- var
182
- Steps: List of [Text];
183
- begin
184
- case ChainName of
185
- 'SALES_VALIDATION':
186
- begin
187
- Steps.Add('CUSTOMER_VALIDATION');
188
- Steps.Add('INVENTORY_CHECK');
189
- Steps.Add('CREDIT_APPROVAL');
190
- end;
191
- 'PURCHASE_VALIDATION':
192
- begin
193
- Steps.Add('VENDOR_VALIDATION');
194
- Steps.Add('BUDGET_CHECK');
195
- Steps.Add('APPROVAL_WORKFLOW');
196
- end;
197
- end;
198
-
199
- exit(Steps);
200
- end;
201
- }
202
- ```
203
-
204
- ## Error Handling Delegate
205
-
206
- ```al
207
- // Delegate with comprehensive error handling
208
- codeunit 50103 "Error Handling Delegate" implements IDelegateOperation
209
- {
210
- procedure Execute(var Parameters: Dictionary of [Text, Variant]): Boolean
211
- var
212
- ErrorMessages: List of [Text];
213
- HasErrors: Boolean;
214
- begin
215
- HasErrors := false;
216
- Clear(ErrorMessages);
217
-
218
- // Perform validation with error collection
219
- if not ValidateRequiredParameters(Parameters, ErrorMessages) then
220
- HasErrors := true;
221
-
222
- if not ValidateBusinessRules(Parameters, ErrorMessages) then
223
- HasErrors := true;
224
-
225
- // Set error information in parameters
226
- Parameters.Set('HasErrors', HasErrors);
227
- Parameters.Set('ErrorMessages', ErrorMessages);
228
-
229
- exit(not HasErrors);
230
- end;
231
-
232
- procedure GetName(): Text[50]
233
- begin
234
- exit('ERROR_HANDLING');
235
- end;
236
-
237
- procedure GetDescription(): Text[250]
238
- begin
239
- exit('Comprehensive error handling and validation delegate');
240
- end;
241
-
242
- local procedure ValidateRequiredParameters(Parameters: Dictionary of [Text, Variant]; var ErrorMessages: List of [Text]): Boolean
243
- var
244
- IsValid: Boolean;
245
- begin
246
- IsValid := true;
247
-
248
- if not Parameters.ContainsKey('CustomerNo') then begin
249
- ErrorMessages.Add('Missing required parameter: CustomerNo');
250
- IsValid := false;
251
- end;
252
-
253
- if not Parameters.ContainsKey('Amount') then begin
254
- ErrorMessages.Add('Missing required parameter: Amount');
255
- IsValid := false;
256
- end;
257
-
258
- exit(IsValid);
259
- end;
260
-
261
- local procedure ValidateBusinessRules(Parameters: Dictionary of [Text, Variant]; var ErrorMessages: List of [Text]): Boolean
262
- var
263
- Amount: Decimal;
264
- IsValid: Boolean;
265
- begin
266
- IsValid := true;
267
-
268
- if Parameters.Get('Amount', Amount) then begin
269
- if Amount <= 0 then begin
270
- ErrorMessages.Add('Amount must be greater than zero');
271
- IsValid := false;
272
- end;
273
- end;
274
-
275
- exit(IsValid);
276
- end;
277
- }
278
- ```
279
-
280
- This implementation shows how delegate operations enable flexible, extensible APIs in Business Central while maintaining clean separation of concerns and supporting runtime configuration of business logic.
@@ -1,200 +0,0 @@
1
- # API Fieldset Registration Sample
2
-
3
- ## Overview
4
- This sample demonstrates how to implement fieldset registration patterns for dynamic API field management and metadata-driven field selection.
5
-
6
- ## Basic Fieldset Registration
7
-
8
- ```al
9
- codeunit 50100 "API Fieldset Registration"
10
- {
11
- procedure RegisterCustomerFieldset()
12
- var
13
- FieldsetRegistry: Codeunit "Fieldset Registry";
14
- CustomerFieldset: Record "API Fieldset";
15
- begin
16
- // Register basic customer fieldset
17
- CustomerFieldset.Init();
18
- CustomerFieldset."Table ID" := Database::Customer;
19
- CustomerFieldset."Fieldset Name" := 'BASIC';
20
- CustomerFieldset."Field No." := Customer.FieldNo("No.");
21
- CustomerFieldset.Insert();
22
-
23
- CustomerFieldset."Field No." := Customer.FieldNo(Name);
24
- CustomerFieldset.Insert();
25
-
26
- CustomerFieldset."Field No." := Customer.FieldNo("Phone No.");
27
- CustomerFieldset.Insert();
28
-
29
- // Register extended customer fieldset
30
- CustomerFieldset."Fieldset Name" := 'EXTENDED';
31
- CustomerFieldset."Field No." := Customer.FieldNo("Credit Limit (LCY)");
32
- CustomerFieldset.Insert();
33
-
34
- CustomerFieldset."Field No." := Customer.FieldNo("Balance (LCY)");
35
- CustomerFieldset.Insert();
36
- end;
37
- }
38
- ```
39
-
40
- ## Dynamic Field Selection
41
-
42
- ```al
43
- codeunit 50101 "Dynamic Field Selection"
44
- {
45
- procedure GetCustomerFields(FieldsetName: Text): List of [Integer]
46
- var
47
- APIFieldset: Record "API Fieldset";
48
- FieldList: List of [Integer];
49
- begin
50
- APIFieldset.SetRange("Table ID", Database::Customer);
51
- APIFieldset.SetRange("Fieldset Name", FieldsetName);
52
- if APIFieldset.FindSet() then
53
- repeat
54
- FieldList.Add(APIFieldset."Field No.");
55
- until APIFieldset.Next() = 0;
56
-
57
- exit(FieldList);
58
- end;
59
-
60
- procedure ApplyFieldset(var CustomerRec: Record Customer; FieldsetName: Text)
61
- var
62
- FieldList: List of [Integer];
63
- FieldNo: Integer;
64
- begin
65
- FieldList := GetCustomerFields(FieldsetName);
66
- CustomerRec.SetLoadFields();
67
-
68
- foreach FieldNo in FieldList do
69
- CustomerRec.AddLoadFields(FieldNo);
70
- end;
71
- }
72
- ```
73
-
74
- ## Conditional Registration
75
-
76
- ```al
77
- codeunit 50102 "Conditional Fieldset Reg"
78
- {
79
- procedure RegisterConditionalFieldset(TableID: Integer; Condition: Text)
80
- var
81
- ConditionalFieldset: Record "Conditional API Fieldset";
82
- begin
83
- ConditionalFieldset.Init();
84
- ConditionalFieldset."Table ID" := TableID;
85
- ConditionalFieldset.Condition := Condition;
86
- ConditionalFieldset."Field Selection" := GetFieldsForCondition(TableID, Condition);
87
- ConditionalFieldset.Insert();
88
- end;
89
-
90
- local procedure GetFieldsForCondition(TableID: Integer; Condition: Text): Text
91
- var
92
- FieldSelection: Text;
93
- begin
94
- case Condition of
95
- 'MINIMAL':
96
- FieldSelection := 'No.,Name';
97
- 'STANDARD':
98
- FieldSelection := 'No.,Name,Phone No.,E-Mail';
99
- 'COMPLETE':
100
- FieldSelection := '*';
101
- end;
102
-
103
- exit(FieldSelection);
104
- end;
105
- }
106
- ```
107
-
108
- ## API Integration
109
-
110
- ```al
111
- page 50100 "Customer API with Fieldsets"
112
- {
113
- APIPublisher = 'contoso';
114
- APIGroup = 'sample';
115
- APIVersion = 'v1.0';
116
- EntityName = 'customer';
117
- EntitySetName = 'customers';
118
- SourceTable = Customer;
119
-
120
- trigger OnOpenPage()
121
- var
122
- FieldsetManager: Codeunit "Dynamic Field Selection";
123
- RequestedFieldset: Text;
124
- begin
125
- // Get fieldset from query parameter
126
- RequestedFieldset := GetFieldsetFromRequest();
127
- if RequestedFieldset <> '' then
128
- FieldsetManager.ApplyFieldset(Rec, RequestedFieldset);
129
- end;
130
-
131
- local procedure GetFieldsetFromRequest(): Text
132
- var
133
- RequestHeaders: HttpHeaders;
134
- FieldsetHeader: Text;
135
- begin
136
- // Extract fieldset preference from request
137
- if RequestHeaders.Contains('X-Fieldset') then begin
138
- RequestHeaders.GetValues('X-Fieldset', FieldsetHeader);
139
- exit(FieldsetHeader);
140
- end;
141
-
142
- exit('STANDARD');
143
- end;
144
- }
145
- ```
146
-
147
- ## Metadata-Driven Configuration
148
-
149
- ```al
150
- table 50100 "API Fieldset"
151
- {
152
- fields
153
- {
154
- field(1; "Table ID"; Integer) { }
155
- field(2; "Fieldset Name"; Code[20]) { }
156
- field(3; "Field No."; Integer) { }
157
- field(4; "Field Name"; Text[100]) { }
158
- field(5; Required; Boolean) { }
159
- field(6; "Display Order"; Integer) { }
160
- }
161
-
162
- keys
163
- {
164
- key(PK; "Table ID", "Fieldset Name", "Field No.") { Clustered = true; }
165
- }
166
- }
167
- ```
168
-
169
- ## Performance Considerations
170
-
171
- ```al
172
- codeunit 50103 "Fieldset Performance Mgmt"
173
- {
174
- var
175
- FieldsetCache: Dictionary of [Text, List of [Integer]];
176
-
177
- procedure GetCachedFieldset(TableID: Integer; FieldsetName: Text): List of [Integer]
178
- var
179
- CacheKey: Text;
180
- FieldList: List of [Integer];
181
- begin
182
- CacheKey := StrSubstNo('%1_%2', TableID, FieldsetName);
183
-
184
- if FieldsetCache.ContainsKey(CacheKey) then
185
- exit(FieldsetCache.Get(CacheKey));
186
-
187
- FieldList := LoadFieldsetFromDatabase(TableID, FieldsetName);
188
- FieldsetCache.Set(CacheKey, FieldList);
189
-
190
- exit(FieldList);
191
- end;
192
-
193
- procedure ClearCache()
194
- begin
195
- Clear(FieldsetCache);
196
- end;
197
- }
198
- ```
199
-
200
- This sample demonstrates comprehensive fieldset registration patterns including basic registration, dynamic selection, conditional logic, API integration, and performance optimization through caching.