bc-code-intelligence-mcp 1.3.3 → 1.3.4
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.
- package/dist/config/test-enhanced-layer-service.js +10 -10
- package/dist/config/test-enhanced-layer-service.js.map +1 -1
- package/dist/dev/hot-reload.d.ts +2 -2
- package/dist/dev/hot-reload.d.ts.map +1 -1
- package/dist/dev/hot-reload.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -38
- package/dist/index.js.map +1 -1
- package/dist/layers/index.d.ts +1 -1
- package/dist/layers/index.d.ts.map +1 -1
- package/dist/layers/index.js +1 -1
- package/dist/layers/index.js.map +1 -1
- package/dist/services/code-analysis-service.d.ts.map +1 -1
- package/dist/services/code-analysis-service.js +4 -0
- package/dist/services/code-analysis-service.js.map +1 -1
- package/dist/services/knowledge-service.d.ts +21 -10
- package/dist/services/knowledge-service.d.ts.map +1 -1
- package/dist/services/knowledge-service.js +71 -54
- package/dist/services/knowledge-service.js.map +1 -1
- package/dist/services/multi-content-layer-service.d.ts +90 -0
- package/dist/services/multi-content-layer-service.d.ts.map +1 -1
- package/dist/services/multi-content-layer-service.js +380 -0
- package/dist/services/multi-content-layer-service.js.map +1 -1
- package/dist/services/workflow-service.d.ts +11 -3
- package/dist/services/workflow-service.d.ts.map +1 -1
- package/dist/services/workflow-service.js +119 -78
- package/dist/services/workflow-service.js.map +1 -1
- package/dist/streamlined-handlers.d.ts +31 -2
- package/dist/streamlined-handlers.d.ts.map +1 -1
- package/dist/streamlined-handlers.js +151 -109
- package/dist/streamlined-handlers.js.map +1 -1
- package/dist/streamlined-tools.d.ts +12 -0
- package/dist/streamlined-tools.d.ts.map +1 -1
- package/dist/streamlined-tools.js +11 -6
- package/dist/streamlined-tools.js.map +1 -1
- package/package.json +13 -4
- package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +0 -24
- package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +0 -24
- package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +0 -30
- package/embedded-knowledge/AGENTS.md +0 -178
- package/embedded-knowledge/CONTRIBUTING.md +0 -58
- package/embedded-knowledge/LICENSE +0 -21
- package/embedded-knowledge/README.md +0 -32
- package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +0 -90
- package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +0 -113
- package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +0 -101
- package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +0 -87
- package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +0 -155
- package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +0 -138
- package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +0 -79
- package/embedded-knowledge/domains/alex-architect/samples/api-delegate-operation.md +0 -280
- package/embedded-knowledge/domains/alex-architect/samples/api-fieldset-registration.md +0 -200
- package/embedded-knowledge/domains/alex-architect/samples/api-interface-design.md +0 -565
- package/embedded-knowledge/domains/alex-architect/samples/api-page-implementation.md +0 -665
- package/embedded-knowledge/domains/alex-architect/samples/complex-facade-patterns.md +0 -325
- package/embedded-knowledge/domains/alex-architect/samples/facade-pattern-al.md +0 -696
- package/embedded-knowledge/domains/alex-architect/samples/facade-pattern.md +0 -320
- package/embedded-knowledge/domains/alex-architect/samples/subscriber-organization.md +0 -102
- package/embedded-knowledge/domains/alex-architect/samples/systemid-integration.md +0 -433
- package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +0 -66
- package/embedded-knowledge/domains/alex-architect/systemid-integration.md +0 -115
- package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +0 -360
- package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +0 -86
- package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +0 -96
- package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +0 -70
- package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +0 -84
- package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +0 -93
- package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +0 -73
- package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +0 -78
- package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +0 -79
- package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +0 -87
- package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +0 -209
- package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +0 -246
- package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +0 -107
- package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +0 -105
- package/embedded-knowledge/domains/dean-debug/samples/bc24-no-series-conversion.md +0 -186
- package/embedded-knowledge/domains/dean-debug/samples/case-performance-optimization.md +0 -60
- package/embedded-knowledge/domains/dean-debug/samples/compound-statements-debugging.md +0 -139
- package/embedded-knowledge/domains/dean-debug/samples/custom-dimensions.md +0 -190
- package/embedded-knowledge/domains/dean-debug/samples/custom-telemetry.md +0 -516
- package/embedded-knowledge/domains/dean-debug/samples/deleteall-performance.md +0 -298
- package/embedded-knowledge/domains/dean-debug/samples/error-correlation.md +0 -324
- package/embedded-knowledge/domains/dean-debug/samples/extension-isolation.md +0 -344
- package/embedded-knowledge/domains/dean-debug/samples/logmessage-methods.md +0 -137
- package/embedded-knowledge/domains/dean-debug/samples/maintainsiftindex-examples.md +0 -340
- package/embedded-knowledge/domains/dean-debug/samples/no-series-implementation.md +0 -810
- package/embedded-knowledge/domains/dean-debug/samples/no-series-module-bc24.md +0 -86
- package/embedded-knowledge/domains/dean-debug/samples/no-series-validation-module-bc24.md +0 -110
- package/embedded-knowledge/domains/dean-debug/samples/no-series-validation.md +0 -758
- package/embedded-knowledge/domains/dean-debug/samples/odata-query-optimization.md +0 -665
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-case.md +0 -316
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-filters.md +0 -223
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-filter-exclusion.md +0 -149
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-optimization.md +0 -412
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-performance.md +0 -211
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-primary-key.md +0 -155
- package/embedded-knowledge/domains/dean-debug/samples/sift-technology-fundamentals.md +0 -475
- package/embedded-knowledge/domains/dean-debug/samples/singleinstance-subscribers.md +0 -238
- package/embedded-knowledge/domains/dean-debug/samples/table-event-batching.md +0 -97
- package/embedded-knowledge/domains/dean-debug/samples/table-key-requirements.md +0 -666
- package/embedded-knowledge/domains/dean-debug/samples/telemetry-performance.md +0 -319
- package/embedded-knowledge/domains/dean-debug/samples/verbosity-strategy.md +0 -236
- package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +0 -59
- package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +0 -67
- package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +0 -70
- package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +0 -90
- package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +0 -87
- package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +0 -70
- package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +0 -74
- package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +0 -81
- package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +0 -56
- package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +0 -66
- package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +0 -79
- package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +0 -78
- package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +0 -83
- package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +0 -76
- package/embedded-knowledge/domains/dean-debug/testfield-performance.md +0 -104
- package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +0 -145
- package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +0 -104
- package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +0 -114
- package/embedded-knowledge/domains/eva-errors/samples/fielderror-default-messages.md +0 -356
- package/embedded-knowledge/domains/eva-errors/samples/fielderror-syntax.md +0 -256
- package/embedded-knowledge/domains/eva-errors/samples/table-safety-validation-patterns.md +0 -101
- package/embedded-knowledge/domains/eva-errors/samples/testfield-error-handling.md +0 -108
- package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +0 -80
- package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +0 -98
- package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +0 -123
- package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +0 -96
- package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +0 -115
- package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +0 -115
- package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +0 -114
- package/embedded-knowledge/domains/jordan-bridge/samples/al-event-subscriber-architecture.md +0 -395
- package/embedded-knowledge/domains/jordan-bridge/samples/api-error-responses.md +0 -479
- package/embedded-knowledge/domains/jordan-bridge/samples/api-field-control.md +0 -548
- package/embedded-knowledge/domains/jordan-bridge/samples/api-url-naming.md +0 -287
- package/embedded-knowledge/domains/jordan-bridge/samples/business-process-templates.md +0 -434
- package/embedded-knowledge/domains/jordan-bridge/samples/etag-implementation.md +0 -508
- package/embedded-knowledge/domains/jordan-bridge/samples/task-scheduler-pattern.md +0 -615
- package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +0 -144
- package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +0 -96
- package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +0 -124
- package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +0 -84
- package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +0 -75
- package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +0 -96
- package/embedded-knowledge/domains/maya-mentor/samples/case-statement-multiple-conditions.md +0 -385
- package/embedded-knowledge/domains/maya-mentor/samples/case-statement-syntax-structure.md +0 -72
- package/embedded-knowledge/domains/maya-mentor/samples/fielderror-syntax-usage.md +0 -48
- package/embedded-knowledge/domains/maya-mentor/samples/testfield-basic-syntax.md +0 -49
- package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +0 -67
- package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +0 -119
- package/embedded-knowledge/domains/quinn-tester/rule-execution.md +0 -123
- package/embedded-knowledge/domains/quinn-tester/samples/case-error-handling.md +0 -64
- package/embedded-knowledge/domains/quinn-tester/samples/fielderror-message-construction.md +0 -60
- package/embedded-knowledge/domains/quinn-tester/samples/fielderror-validation-patterns.md +0 -83
- package/embedded-knowledge/domains/quinn-tester/samples/rule-execution.md +0 -716
- package/embedded-knowledge/domains/quinn-tester/samples/table-safety-validation-patterns.md +0 -101
- package/embedded-knowledge/domains/quinn-tester/samples/temporary-table-operation-validation.md +0 -91
- package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +0 -79
- package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +0 -79
- package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +0 -89
- package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +0 -76
- package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +0 -76
- package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +0 -76
- package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +0 -81
- package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +0 -76
- package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +0 -75
- package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +0 -76
- package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +0 -76
- package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +0 -76
- package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +0 -96
- package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +0 -76
- package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +0 -86
- package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +0 -90
- package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +0 -82
- package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +0 -78
- package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +0 -76
- package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +0 -78
- package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +0 -100
- package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +0 -115
- package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +0 -124
- package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +0 -110
- package/embedded-knowledge/domains/roger-reviewer/samples/al-begin-end-blocks.md +0 -438
- package/embedded-knowledge/domains/roger-reviewer/samples/al-binary-operator-spacing.md +0 -255
- package/embedded-knowledge/domains/roger-reviewer/samples/al-comment-spacing-standards.md +0 -209
- package/embedded-knowledge/domains/roger-reviewer/samples/al-keyword-indentation-rules.md +0 -218
- package/embedded-knowledge/domains/roger-reviewer/samples/al-line-start-keyword-positioning.md +0 -218
- package/embedded-knowledge/domains/roger-reviewer/samples/al-separate-if-else-formatting.md +0 -280
- package/embedded-knowledge/domains/roger-reviewer/samples/al-statement-per-line-rule.md +0 -188
- package/embedded-knowledge/domains/roger-reviewer/samples/al-unnecessary-else-elimination.md +0 -245
- package/embedded-knowledge/domains/roger-reviewer/samples/al-variable-declaration-order.md +0 -244
- package/embedded-knowledge/domains/roger-reviewer/samples/begin-end-positioning.md +0 -278
- package/embedded-knowledge/domains/roger-reviewer/samples/boolean-simplification-examples.md +0 -484
- package/embedded-knowledge/domains/roger-reviewer/samples/case-error-handling.md +0 -64
- package/embedded-knowledge/domains/roger-reviewer/samples/compound-statement-readability.md +0 -107
- package/embedded-knowledge/domains/roger-reviewer/samples/lonely-repeat-examples.md +0 -280
- package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +0 -75
- package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +0 -67
- package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +0 -76
- package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +0 -98
- package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +0 -128
- package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +0 -75
- package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +0 -95
- package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +0 -141
- package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +0 -91
- package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +0 -118
- package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +0 -111
- package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +0 -113
- package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +0 -127
- package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +0 -141
- package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +0 -66
- package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +0 -96
- package/embedded-knowledge/domains/sam-coder/samples/al-blank-line-organization.md +0 -161
- package/embedded-knowledge/domains/sam-coder/samples/al-case-action-formatting.md +0 -177
- package/embedded-knowledge/domains/sam-coder/samples/al-lonely-repeat-pattern.md +0 -239
- package/embedded-knowledge/domains/sam-coder/samples/al-named-parameter-pattern.md +0 -346
- package/embedded-knowledge/domains/sam-coder/samples/al-record-find-early-exit.md +0 -298
- package/embedded-knowledge/domains/sam-coder/samples/command-queue-pattern.md +0 -677
- package/embedded-knowledge/domains/sam-coder/samples/deleteall-alternative-implementation.md +0 -117
- package/embedded-knowledge/domains/sam-coder/samples/deleteall-triggers.md +0 -75
- package/embedded-knowledge/domains/sam-coder/samples/deleteall-usage.md +0 -169
- package/embedded-knowledge/domains/sam-coder/samples/event-bridge-pattern.md +0 -399
- package/embedded-knowledge/domains/sam-coder/samples/event-payload-design.md +0 -356
- package/embedded-knowledge/domains/sam-coder/samples/generic-method-patterns.md +0 -889
- package/embedded-knowledge/domains/sam-coder/samples/manual-binding.md +0 -84
- package/embedded-knowledge/domains/sam-coder/samples/nested-compound-best-practices.md +0 -127
- package/embedded-knowledge/domains/sam-coder/samples/single-to-compound-conversion.md +0 -89
- package/embedded-knowledge/domains/sam-coder/samples/template-method-pattern.md +0 -516
- package/embedded-knowledge/domains/sam-coder/samples/testfield-patterns.md +0 -61
- package/embedded-knowledge/domains/sam-coder/samples/type-safe-operations.md +0 -427
- package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +0 -122
- package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +0 -96
- package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +0 -101
- package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +0 -149
- package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +0 -107
- package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +0 -95
- package/embedded-knowledge/domains/seth-security/api-permission-model.md +0 -115
- package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +0 -78
- package/embedded-knowledge/domains/seth-security/samples/al-temporary-table-safety.md +0 -373
- package/embedded-knowledge/domains/seth-security/samples/api-permission-model.md +0 -308
- package/embedded-knowledge/domains/shared/al-file-naming-conventions.md +0 -146
- package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +0 -79
- package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +0 -78
- package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +0 -81
- package/embedded-knowledge/indexes/bc-version-matrix.json +0 -188
- package/embedded-knowledge/indexes/domain-catalog.json +0 -106
- package/embedded-knowledge/indexes/tags/abbreviations.json +0 -1
- package/embedded-knowledge/indexes/tags/abstraction.json +0 -1
- package/embedded-knowledge/indexes/tags/access-control.json +0 -1
- package/embedded-knowledge/indexes/tags/accessibility.json +0 -1
- package/embedded-knowledge/indexes/tags/actions.json +0 -1
- package/embedded-knowledge/indexes/tags/advanced-patterns.json +0 -1
- package/embedded-knowledge/indexes/tags/advanced.json +0 -1
- package/embedded-knowledge/indexes/tags/al-extension.json +0 -1
- package/embedded-knowledge/indexes/tags/al-generics.json +0 -1
- package/embedded-knowledge/indexes/tags/al-objects.json +0 -1
- package/embedded-knowledge/indexes/tags/al-syntax.json +0 -1
- package/embedded-knowledge/indexes/tags/algorithm-structure.json +0 -1
- package/embedded-knowledge/indexes/tags/alternatives.json +0 -1
- package/embedded-knowledge/indexes/tags/analytics.json +0 -1
- package/embedded-knowledge/indexes/tags/api-delegates.json +0 -1
- package/embedded-knowledge/indexes/tags/api-design.json +0 -1
- package/embedded-knowledge/indexes/tags/api-documentation.json +0 -1
- package/embedded-knowledge/indexes/tags/api-endpoints.json +0 -1
- package/embedded-knowledge/indexes/tags/api-extensibility.json +0 -1
- package/embedded-knowledge/indexes/tags/api-fieldsets.json +0 -1
- package/embedded-knowledge/indexes/tags/api-integration.json +0 -1
- package/embedded-knowledge/indexes/tags/api-interfaces.json +0 -1
- package/embedded-knowledge/indexes/tags/api-optimization.json +0 -1
- package/embedded-knowledge/indexes/tags/api-pages.json +0 -1
- package/embedded-knowledge/indexes/tags/api-patterns.json +0 -1
- package/embedded-knowledge/indexes/tags/api-permissions.json +0 -1
- package/embedded-knowledge/indexes/tags/api-responses.json +0 -1
- package/embedded-knowledge/indexes/tags/api-simplification.json +0 -1
- package/embedded-knowledge/indexes/tags/api.json +0 -1
- package/embedded-knowledge/indexes/tags/architecture.json +0 -1
- package/embedded-knowledge/indexes/tags/async-patterns.json +0 -1
- package/embedded-knowledge/indexes/tags/async-processing.json +0 -1
- package/embedded-knowledge/indexes/tags/automatic-registration.json +0 -1
- package/embedded-knowledge/indexes/tags/batch-operations.json +0 -1
- package/embedded-knowledge/indexes/tags/bc24-migration.json +0 -1
- package/embedded-knowledge/indexes/tags/begin-blocks.json +0 -1
- package/embedded-knowledge/indexes/tags/begin-end.json +0 -1
- package/embedded-knowledge/indexes/tags/behavioral-patterns.json +0 -1
- package/embedded-knowledge/indexes/tags/best-practices.json +0 -1
- package/embedded-knowledge/indexes/tags/binding.json +0 -1
- package/embedded-knowledge/indexes/tags/block-structure.json +0 -1
- package/embedded-knowledge/indexes/tags/blocks.json +0 -1
- package/embedded-knowledge/indexes/tags/boolean-expressions.json +0 -1
- package/embedded-knowledge/indexes/tags/branching.json +0 -1
- package/embedded-knowledge/indexes/tags/breaking-changes.json +0 -1
- package/embedded-knowledge/indexes/tags/breakpoints.json +0 -1
- package/embedded-knowledge/indexes/tags/business-foundation.json +0 -1
- package/embedded-knowledge/indexes/tags/business-infrastructure.json +0 -1
- package/embedded-knowledge/indexes/tags/business-process.json +0 -1
- package/embedded-knowledge/indexes/tags/business-rules.json +0 -1
- package/embedded-knowledge/indexes/tags/caching.json +0 -1
- package/embedded-knowledge/indexes/tags/case-statements.json +0 -1
- package/embedded-knowledge/indexes/tags/case.json +0 -1
- package/embedded-knowledge/indexes/tags/code-analysis.json +0 -1
- package/embedded-knowledge/indexes/tags/code-clarity.json +0 -1
- package/embedded-knowledge/indexes/tags/code-comprehension.json +0 -1
- package/embedded-knowledge/indexes/tags/code-conversion.json +0 -1
- package/embedded-knowledge/indexes/tags/code-formatting.json +0 -1
- package/embedded-knowledge/indexes/tags/code-organization.json +0 -1
- package/embedded-knowledge/indexes/tags/code-patterns.json +0 -1
- package/embedded-knowledge/indexes/tags/code-quality.json +0 -1
- package/embedded-knowledge/indexes/tags/code-reuse.json +0 -1
- package/embedded-knowledge/indexes/tags/code-simplification.json +0 -1
- package/embedded-knowledge/indexes/tags/code-standards.json +0 -1
- package/embedded-knowledge/indexes/tags/code-structure.json +0 -1
- package/embedded-knowledge/indexes/tags/code-style.json +0 -1
- package/embedded-knowledge/indexes/tags/codeunit-design.json +0 -1
- package/embedded-knowledge/indexes/tags/command-queue.json +0 -1
- package/embedded-knowledge/indexes/tags/comments.json +0 -1
- package/embedded-knowledge/indexes/tags/compile-time-validation.json +0 -1
- package/embedded-knowledge/indexes/tags/complex-facade.json +0 -1
- package/embedded-knowledge/indexes/tags/complexity-hiding.json +0 -1
- package/embedded-knowledge/indexes/tags/complexity-management.json +0 -1
- package/embedded-knowledge/indexes/tags/compound-statements.json +0 -1
- package/embedded-knowledge/indexes/tags/concurrency.json +0 -1
- package/embedded-knowledge/indexes/tags/conditional-logic.json +0 -1
- package/embedded-knowledge/indexes/tags/conditional.json +0 -1
- package/embedded-knowledge/indexes/tags/conflict-resolution.json +0 -1
- package/embedded-knowledge/indexes/tags/consistency.json +0 -1
- package/embedded-knowledge/indexes/tags/contract-design.json +0 -1
- package/embedded-knowledge/indexes/tags/control-flow.json +0 -1
- package/embedded-knowledge/indexes/tags/conversion-guide.json +0 -1
- package/embedded-knowledge/indexes/tags/correlation.json +0 -1
- package/embedded-knowledge/indexes/tags/custom-messages.json +0 -1
- package/embedded-knowledge/indexes/tags/data-access.json +0 -1
- package/embedded-knowledge/indexes/tags/data-exposure.json +0 -1
- package/embedded-knowledge/indexes/tags/data-integrity.json +0 -1
- package/embedded-knowledge/indexes/tags/data-loading.json +0 -1
- package/embedded-knowledge/indexes/tags/data-manipulation.json +0 -1
- package/embedded-knowledge/indexes/tags/data-modeling.json +0 -1
- package/embedded-knowledge/indexes/tags/data-patterns.json +0 -1
- package/embedded-knowledge/indexes/tags/data-protection.json +0 -1
- package/embedded-knowledge/indexes/tags/data-validation.json +0 -1
- package/embedded-knowledge/indexes/tags/database.json +0 -1
- package/embedded-knowledge/indexes/tags/debugging.json +0 -1
- package/embedded-knowledge/indexes/tags/decision-making.json +0 -1
- package/embedded-knowledge/indexes/tags/declaration.json +0 -1
- package/embedded-knowledge/indexes/tags/default-messages.json +0 -1
- package/embedded-knowledge/indexes/tags/defensive-programming.json +0 -1
- package/embedded-knowledge/indexes/tags/deleteall.json +0 -1
- package/embedded-knowledge/indexes/tags/dependencies.json +0 -1
- package/embedded-knowledge/indexes/tags/deployment.json +0 -1
- package/embedded-knowledge/indexes/tags/developer-productivity.json +0 -1
- package/embedded-knowledge/indexes/tags/development-workflow.json +0 -1
- package/embedded-knowledge/indexes/tags/diagnostics.json +0 -1
- package/embedded-knowledge/indexes/tags/dimensions.json +0 -1
- package/embedded-knowledge/indexes/tags/documentation.json +0 -1
- package/embedded-knowledge/indexes/tags/early-exit.json +0 -1
- package/embedded-knowledge/indexes/tags/else-clauses.json +0 -1
- package/embedded-knowledge/indexes/tags/end-statements.json +0 -1
- package/embedded-knowledge/indexes/tags/enterprise-patterns.json +0 -1
- package/embedded-knowledge/indexes/tags/entity-relationships.json +0 -1
- package/embedded-knowledge/indexes/tags/error-handling.json +0 -1
- package/embedded-knowledge/indexes/tags/error-messages.json +0 -1
- package/embedded-knowledge/indexes/tags/error-prevention.json +0 -1
- package/embedded-knowledge/indexes/tags/error-text.json +0 -1
- package/embedded-knowledge/indexes/tags/etag.json +0 -1
- package/embedded-knowledge/indexes/tags/event-bridge.json +0 -1
- package/embedded-knowledge/indexes/tags/event-payload.json +0 -1
- package/embedded-knowledge/indexes/tags/event-routing.json +0 -1
- package/embedded-knowledge/indexes/tags/events.json +0 -1
- package/embedded-knowledge/indexes/tags/execution-flow.json +0 -1
- package/embedded-knowledge/indexes/tags/expressions.json +0 -1
- package/embedded-knowledge/indexes/tags/extensibility.json +0 -1
- package/embedded-knowledge/indexes/tags/extensions.json +0 -1
- package/embedded-knowledge/indexes/tags/facade-composition.json +0 -1
- package/embedded-knowledge/indexes/tags/facade-pattern.json +0 -1
- package/embedded-knowledge/indexes/tags/field-control.json +0 -1
- package/embedded-knowledge/indexes/tags/field-exclusion.json +0 -1
- package/embedded-knowledge/indexes/tags/field-registration.json +0 -1
- package/embedded-knowledge/indexes/tags/field-state.json +0 -1
- package/embedded-knowledge/indexes/tags/field-validation.json +0 -1
- package/embedded-knowledge/indexes/tags/fielderror.json +0 -1
- package/embedded-knowledge/indexes/tags/fields.json +0 -1
- package/embedded-knowledge/indexes/tags/filtering.json +0 -1
- package/embedded-knowledge/indexes/tags/filters.json +0 -1
- package/embedded-knowledge/indexes/tags/formatting.json +0 -1
- package/embedded-knowledge/indexes/tags/generic-methods.json +0 -1
- package/embedded-knowledge/indexes/tags/http-status.json +0 -1
- package/embedded-knowledge/indexes/tags/if-statements.json +0 -1
- package/embedded-knowledge/indexes/tags/implementation.json +0 -1
- package/embedded-knowledge/indexes/tags/indentation.json +0 -1
- package/embedded-knowledge/indexes/tags/index-summary.json +0 -277
- package/embedded-knowledge/indexes/tags/indexing.json +0 -1
- package/embedded-knowledge/indexes/tags/inheritance.json +0 -1
- package/embedded-knowledge/indexes/tags/integration.json +0 -1
- package/embedded-knowledge/indexes/tags/integrity-checking.json +0 -1
- package/embedded-knowledge/indexes/tags/intellisense.json +0 -1
- package/embedded-knowledge/indexes/tags/interface-design.json +0 -1
- package/embedded-knowledge/indexes/tags/interface-segregation.json +0 -1
- package/embedded-knowledge/indexes/tags/isolation.json +0 -1
- package/embedded-knowledge/indexes/tags/job-processing.json +0 -1
- package/embedded-knowledge/indexes/tags/keyboard-navigation.json +0 -1
- package/embedded-knowledge/indexes/tags/keywords.json +0 -1
- package/embedded-knowledge/indexes/tags/legacy-modernization.json +0 -1
- package/embedded-knowledge/indexes/tags/line-breaks.json +0 -1
- package/embedded-knowledge/indexes/tags/line-organization.json +0 -1
- package/embedded-knowledge/indexes/tags/line-positioning.json +0 -1
- package/embedded-knowledge/indexes/tags/localization.json +0 -1
- package/embedded-knowledge/indexes/tags/logging.json +0 -1
- package/embedded-knowledge/indexes/tags/loose-coupling.json +0 -1
- package/embedded-knowledge/indexes/tags/maintainability.json +0 -1
- package/embedded-knowledge/indexes/tags/memory-management.json +0 -1
- package/embedded-knowledge/indexes/tags/memory-optimization.json +0 -1
- package/embedded-knowledge/indexes/tags/memory.json +0 -1
- package/embedded-knowledge/indexes/tags/message-design.json +0 -1
- package/embedded-knowledge/indexes/tags/message-formatting.json +0 -1
- package/embedded-knowledge/indexes/tags/message-patterns.json +0 -1
- package/embedded-knowledge/indexes/tags/metadata-driven.json +0 -1
- package/embedded-knowledge/indexes/tags/method-comparison.json +0 -1
- package/embedded-knowledge/indexes/tags/module-architecture.json +0 -1
- package/embedded-knowledge/indexes/tags/module-validation.json +0 -1
- package/embedded-knowledge/indexes/tags/monitoring.json +0 -1
- package/embedded-knowledge/indexes/tags/multi-layer-facade.json +0 -1
- package/embedded-knowledge/indexes/tags/multi-tenancy.json +0 -1
- package/embedded-knowledge/indexes/tags/multiple-values.json +0 -1
- package/embedded-knowledge/indexes/tags/naming-conventions.json +0 -1
- package/embedded-knowledge/indexes/tags/naming.json +0 -1
- package/embedded-knowledge/indexes/tags/navigation.json +0 -1
- package/embedded-knowledge/indexes/tags/nested-statements.json +0 -1
- package/embedded-knowledge/indexes/tags/no-series-conversion.json +0 -1
- package/embedded-knowledge/indexes/tags/no-series-validation.json +0 -1
- package/embedded-knowledge/indexes/tags/no-series.json +0 -1
- package/embedded-knowledge/indexes/tags/number-generation.json +0 -1
- package/embedded-knowledge/indexes/tags/object-documentation.json +0 -1
- package/embedded-knowledge/indexes/tags/odata.json +0 -1
- package/embedded-knowledge/indexes/tags/ondelete.json +0 -1
- package/embedded-knowledge/indexes/tags/onvalidate.json +0 -1
- package/embedded-knowledge/indexes/tags/operation-delegation.json +0 -1
- package/embedded-knowledge/indexes/tags/operation-safety.json +0 -1
- package/embedded-knowledge/indexes/tags/operators.json +0 -1
- package/embedded-knowledge/indexes/tags/optimization.json +0 -1
- package/embedded-knowledge/indexes/tags/order.json +0 -1
- package/embedded-knowledge/indexes/tags/organization.json +0 -1
- package/embedded-knowledge/indexes/tags/pages.json +0 -1
- package/embedded-knowledge/indexes/tags/parameters.json +0 -1
- package/embedded-knowledge/indexes/tags/patterns.json +0 -1
- package/embedded-knowledge/indexes/tags/performance-optimization.json +0 -1
- package/embedded-knowledge/indexes/tags/performance.json +0 -1
- package/embedded-knowledge/indexes/tags/placement.json +0 -1
- package/embedded-knowledge/indexes/tags/posting-codeunits.json +0 -1
- package/embedded-knowledge/indexes/tags/posting.json +0 -1
- package/embedded-knowledge/indexes/tags/preconditions.json +0 -1
- package/embedded-knowledge/indexes/tags/primary-key.json +0 -1
- package/embedded-knowledge/indexes/tags/privacy.json +0 -1
- package/embedded-knowledge/indexes/tags/process-automation.json +0 -1
- package/embedded-knowledge/indexes/tags/production.json +0 -1
- package/embedded-knowledge/indexes/tags/productivity.json +0 -1
- package/embedded-knowledge/indexes/tags/query-performance.json +0 -1
- package/embedded-knowledge/indexes/tags/queue-management.json +0 -1
- package/embedded-knowledge/indexes/tags/ranges.json +0 -1
- package/embedded-knowledge/indexes/tags/readability.json +0 -1
- package/embedded-knowledge/indexes/tags/record-access.json +0 -1
- package/embedded-knowledge/indexes/tags/record-methods.json +0 -1
- package/embedded-knowledge/indexes/tags/refactoring.json +0 -1
- package/embedded-knowledge/indexes/tags/reference.json +0 -1
- package/embedded-knowledge/indexes/tags/repeat-loops.json +0 -1
- package/embedded-knowledge/indexes/tags/repeat-statement.json +0 -1
- package/embedded-knowledge/indexes/tags/runtime-errors.json +0 -1
- package/embedded-knowledge/indexes/tags/runtime.json +0 -1
- package/embedded-knowledge/indexes/tags/safeguards.json +0 -1
- package/embedded-knowledge/indexes/tags/security.json +0 -1
- package/embedded-knowledge/indexes/tags/sequence-management.json +0 -1
- package/embedded-knowledge/indexes/tags/serialization.json +0 -1
- package/embedded-knowledge/indexes/tags/session-logmessage.json +0 -1
- package/embedded-knowledge/indexes/tags/session.json +0 -1
- package/embedded-knowledge/indexes/tags/setloadfields.json +0 -1
- package/embedded-knowledge/indexes/tags/shortcuts.json +0 -1
- package/embedded-knowledge/indexes/tags/sift.json +0 -1
- package/embedded-knowledge/indexes/tags/singleinstance.json +0 -1
- package/embedded-knowledge/indexes/tags/spacing.json +0 -1
- package/embedded-knowledge/indexes/tags/sql-translation.json +0 -1
- package/embedded-knowledge/indexes/tags/standards.json +0 -1
- package/embedded-knowledge/indexes/tags/statements.json +0 -1
- package/embedded-knowledge/indexes/tags/streaming.json +0 -1
- package/embedded-knowledge/indexes/tags/strong-typing.json +0 -1
- package/embedded-knowledge/indexes/tags/structural-patterns.json +0 -1
- package/embedded-knowledge/indexes/tags/structure.json +0 -1
- package/embedded-knowledge/indexes/tags/subscribers.json +0 -1
- package/embedded-knowledge/indexes/tags/switch.json +0 -1
- package/embedded-knowledge/indexes/tags/symbol-search.json +0 -1
- package/embedded-knowledge/indexes/tags/syntax.json +0 -1
- package/embedded-knowledge/indexes/tags/systemid.json +0 -1
- package/embedded-knowledge/indexes/tags/table-configuration.json +0 -1
- package/embedded-knowledge/indexes/tags/table-events.json +0 -1
- package/embedded-knowledge/indexes/tags/table-keys.json +0 -1
- package/embedded-knowledge/indexes/tags/table-safety.json +0 -1
- package/embedded-knowledge/indexes/tags/task-scheduler.json +0 -1
- package/embedded-knowledge/indexes/tags/telemetry.json +0 -1
- package/embedded-knowledge/indexes/tags/template-method.json +0 -1
- package/embedded-knowledge/indexes/tags/temporary-tables.json +0 -1
- package/embedded-knowledge/indexes/tags/testfield.json +0 -1
- package/embedded-knowledge/indexes/tags/tradeoffs.json +0 -1
- package/embedded-knowledge/indexes/tags/triggers.json +0 -1
- package/embedded-knowledge/indexes/tags/troubleshooting.json +0 -1
- package/embedded-knowledge/indexes/tags/type-safety.json +0 -1
- package/embedded-knowledge/indexes/tags/url-structure.json +0 -1
- package/embedded-knowledge/indexes/tags/user-experience.json +0 -1
- package/embedded-knowledge/indexes/tags/user-feedback.json +0 -1
- package/embedded-knowledge/indexes/tags/user-interface.json +0 -1
- package/embedded-knowledge/indexes/tags/validation-feedback.json +0 -1
- package/embedded-knowledge/indexes/tags/validation.json +0 -1
- package/embedded-knowledge/indexes/tags/variables.json +0 -1
- package/embedded-knowledge/indexes/tags/verbosity.json +0 -1
- package/embedded-knowledge/indexes/tags/vs-code.json +0 -1
- package/embedded-knowledge/indexes/tags/web-services.json +0 -1
- package/embedded-knowledge/indexes/tags/workflow-management.json +0 -1
- package/embedded-knowledge/indexes/tags/workflow-optimization.json +0 -1
- package/embedded-knowledge/indexes/tags/workflow-templates.json +0 -1
- package/embedded-knowledge/indexes/tags/workspace.json +0 -1
- package/embedded-knowledge/indexes/tags/xml-documentation.json +0 -1
- package/embedded-knowledge/indexes/topic-relationships.json +0 -128
- package/embedded-knowledge/methodologies/index.json +0 -81
- package/embedded-knowledge/methodologies/phases/analysis-full.md +0 -208
- package/embedded-knowledge/methodologies/phases/analysis-quick.md +0 -44
- package/embedded-knowledge/methodologies/phases/analysis.md +0 -182
- package/embedded-knowledge/methodologies/phases/execution-validation-full.md +0 -174
- package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +0 -31
- package/embedded-knowledge/methodologies/phases/execution-validation.md +0 -174
- package/embedded-knowledge/methodologies/phases/performance-full.md +0 -211
- package/embedded-knowledge/methodologies/phases/performance-quick.md +0 -32
- package/embedded-knowledge/methodologies/phases/performance.md +0 -211
- package/embedded-knowledge/methodologies/phases/verification-full.md +0 -162
- package/embedded-knowledge/methodologies/phases/verification-quick.md +0 -48
- package/embedded-knowledge/methodologies/phases/verification.md +0 -146
- package/embedded-knowledge/methodologies/workflow-enforcement.md +0 -142
- package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +0 -99
- package/embedded-knowledge/specialists/alex-architect.md +0 -216
- package/embedded-knowledge/specialists/casey-copilot.md +0 -226
- package/embedded-knowledge/specialists/chris-config.md +0 -267
- package/embedded-knowledge/specialists/dean-debug.md +0 -222
- package/embedded-knowledge/specialists/eva-errors.md +0 -235
- package/embedded-knowledge/specialists/jordan-bridge.md +0 -235
- package/embedded-knowledge/specialists/logan-legacy.md +0 -209
- package/embedded-knowledge/specialists/maya-mentor.md +0 -211
- package/embedded-knowledge/specialists/morgan-market.md +0 -226
- package/embedded-knowledge/specialists/quinn-tester.md +0 -235
- package/embedded-knowledge/specialists/roger-reviewer.md +0 -234
- package/embedded-knowledge/specialists/sam-coder.md +0 -359
- package/embedded-knowledge/specialists/seth-security.md +0 -235
- package/embedded-knowledge/specialists/taylor-docs.md +0 -257
- package/embedded-knowledge/specialists/uma-ux.md +0 -235
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "AL API Page Development Patterns"
|
|
3
|
-
domain: "alex-architect"
|
|
4
|
-
difficulty: "intermediate"
|
|
5
|
-
bc_versions: "14+"
|
|
6
|
-
tags: ["api", "pages", "odata", "integration", "architecture"]
|
|
7
|
-
samples: "samples/api-page-implementation.md"
|
|
8
|
-
type: "implementation-pattern"
|
|
9
|
-
category: "api-development"
|
|
10
|
-
pattern_type: "good"
|
|
11
|
-
severity: "medium"
|
|
12
|
-
impact_level: "high"
|
|
13
|
-
improvement_suggestion: "Use API pages for structured external system integration"
|
|
14
|
-
implementation_steps: ["design-api-structure", "implement-field-exposure", "optimize-performance"]
|
|
15
|
-
validation_criteria: ["odata-compliance", "security-integration", "performance-optimization"]
|
|
16
|
-
technical_areas: ["al-code", "integration"]
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
# AL API Page Development Patterns
|
|
20
|
-
|
|
21
|
-
## Overview
|
|
22
|
-
|
|
23
|
-
API pages in Business Central provide structured OData endpoints for external system integration. Unlike standard pages, API pages focus exclusively on data exchange with minimal UI considerations, requiring careful design for optimal performance and maintainability.
|
|
24
|
-
|
|
25
|
-
**Key Decision**: API pages should expose logical business entities rather than raw table structures, providing stable integration contracts that abstract internal data organization.
|
|
26
|
-
|
|
27
|
-
## Strategic Framework
|
|
28
|
-
|
|
29
|
-
### API Page Design Philosophy
|
|
30
|
-
- **Business Entity Focus**: Expose meaningful business concepts (Customer, Item, SalesOrder) rather than normalized table structures
|
|
31
|
-
- **Contract Stability**: Maintain consistent field names and structures across BC versions to protect integration investments
|
|
32
|
-
- **Performance Optimization**: Design for efficient data retrieval and modification patterns expected by consuming applications
|
|
33
|
-
- **Security Integration**: Leverage BC's built-in authentication and authorization without exposing sensitive internal structures
|
|
34
|
-
|
|
35
|
-
### Integration Architecture Patterns
|
|
36
|
-
API pages serve as the primary integration layer between Business Central and external systems. They should provide complete business entity representations while maintaining clear separation between internal data models and external contracts.
|
|
37
|
-
|
|
38
|
-
## Architecture Focus
|
|
39
|
-
|
|
40
|
-
### Page Structure Design
|
|
41
|
-
API pages require specific architectural considerations distinct from interactive pages. The PageType API designation enables OData endpoint generation with automatic JSON serialization and standardized query capabilities.
|
|
42
|
-
|
|
43
|
-
### Field Exposure Strategy
|
|
44
|
-
Expose fields that represent complete business entity state while avoiding internal implementation details. Include essential business identifiers, descriptive fields, and workflow status information that external systems need for business logic.
|
|
45
|
-
|
|
46
|
-
### Relationship Management
|
|
47
|
-
Design API pages to include related entity references through careful use of lookup fields and calculated fields. This enables consuming applications to navigate business relationships without requiring multiple API calls.
|
|
48
|
-
|
|
49
|
-
### Version Compatibility
|
|
50
|
-
Structure API pages to maintain backward compatibility as business requirements evolve. Use consistent naming conventions and avoid breaking changes to established field contracts.
|
|
51
|
-
|
|
52
|
-
## Best Practices
|
|
53
|
-
|
|
54
|
-
### Entity Modeling
|
|
55
|
-
- **Complete Business Context**: Include all fields necessary for external systems to make business decisions
|
|
56
|
-
- **Logical Grouping**: Group related information to minimize round-trips for common business scenarios
|
|
57
|
-
- **Status Visibility**: Expose workflow states and business status fields that affect integration logic
|
|
58
|
-
- **Audit Information**: Include creation dates, modification timestamps, and responsible user information
|
|
59
|
-
|
|
60
|
-
### Performance Considerations
|
|
61
|
-
- **Selective Field Loading**: Design pages to load only necessary fields for common query patterns
|
|
62
|
-
- **Efficient Filtering**: Support standard OData filtering on key business fields like dates, status, and identifiers
|
|
63
|
-
- **Batch Operation Support**: Enable bulk data operations where business processes require them
|
|
64
|
-
- **Caching Awareness**: Structure responses to support effective caching strategies in consuming applications
|
|
65
|
-
|
|
66
|
-
### Security Implementation
|
|
67
|
-
- **Principle of Least Privilege**: Expose only fields that external systems legitimately need for business operations
|
|
68
|
-
- **Sensitive Data Protection**: Exclude internal identifiers, system fields, and confidential business information
|
|
69
|
-
- **Access Control Integration**: Leverage BC's permission system to control API access at field and record levels
|
|
70
|
-
- **Audit Trail Maintenance**: Ensure API operations create appropriate audit records for compliance requirements
|
|
71
|
-
|
|
72
|
-
## Anti-Patterns
|
|
73
|
-
|
|
74
|
-
### Avoid These Approaches
|
|
75
|
-
- **Direct Table Exposure**: Exposing raw table structures without business context abstraction
|
|
76
|
-
- **Internal Field Leakage**: Including system fields, internal identifiers, or implementation details in API contracts
|
|
77
|
-
- **Incomplete Entity Representation**: Requiring multiple API calls to reconstruct basic business entity state
|
|
78
|
-
- **Breaking Contract Changes**: Modifying existing field names or removing fields without proper versioning strategy
|
|
79
|
-
|
|
80
|
-
### Common Design Mistakes
|
|
81
|
-
- **Over-Normalization**: Creating APIs that mirror database structure rather than business entity logic
|
|
82
|
-
- **Under-Documentation**: Failing to provide clear guidance on field usage and business meaning
|
|
83
|
-
- **Security Oversights**: Exposing sensitive information or bypassing standard BC security mechanisms
|
|
84
|
-
- **Performance Blindness**: Designing APIs without considering query patterns and data volume implications
|
|
85
|
-
|
|
86
|
-
*Implementation examples: see samples/api-page-implementation.md*
|
|
87
|
-
*Related patterns: facade-pattern-external-api.md, api-authentication-patterns.md*
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "Complex Facade Patterns"
|
|
3
|
-
domain: "alex-architect"
|
|
4
|
-
difficulty: "advanced"
|
|
5
|
-
bc_versions: "14+"
|
|
6
|
-
tags: ["complex-facade", "enterprise-patterns", "multi-layer-facade", "facade-composition"]
|
|
7
|
-
prerequisites: ["facade-pattern-al-implementation", "enterprise-architecture", "advanced-al"]
|
|
8
|
-
samples: "samples/complex-facade-patterns.md"
|
|
9
|
-
related_topics: ["facade-pattern-al-implementation", "enterprise-integration-patterns"]
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Complex Facade Patterns
|
|
13
|
-
|
|
14
|
-
## Overview
|
|
15
|
-
|
|
16
|
-
Complex Facade Patterns extend basic facade concepts to handle enterprise-scale scenarios involving multiple subsystems, cross-cutting concerns, and sophisticated business logic coordination. These patterns enable management of intricate system architectures while maintaining clean, manageable interfaces.
|
|
17
|
-
|
|
18
|
-
**Key Benefit**: Enables management of complex enterprise systems through sophisticated facade architectures that maintain simplicity for consumers while handling intricate backend coordination.
|
|
19
|
-
|
|
20
|
-
## Advanced Facade Architectures
|
|
21
|
-
|
|
22
|
-
### Multi-Layer Facade Systems
|
|
23
|
-
Design facade hierarchies where higher-level facades coordinate lower-level facades, enabling different abstraction levels for different consumer types.
|
|
24
|
-
|
|
25
|
-
### Composite Facade Coordination
|
|
26
|
-
Implement facade composition patterns where multiple specialized facades work together to provide comprehensive business capability interfaces.
|
|
27
|
-
|
|
28
|
-
### Domain-Specific Facade Clusters
|
|
29
|
-
Create facade clusters that serve specific business domains while maintaining coordination capabilities for cross-domain operations.
|
|
30
|
-
|
|
31
|
-
## Enterprise Integration Patterns
|
|
32
|
-
|
|
33
|
-
### Cross-System Facade Orchestration
|
|
34
|
-
Design facades that coordinate operations across multiple Business Central environments, external systems, and cloud services.
|
|
35
|
-
|
|
36
|
-
### Transaction-Spanning Facades
|
|
37
|
-
Implement facades that manage distributed transactions and coordination across multiple systems while providing simple operation interfaces.
|
|
38
|
-
|
|
39
|
-
### Event-Driven Facade Coordination
|
|
40
|
-
Integrate complex facades with event-driven architectures to enable reactive coordination and loose coupling between facade layers.
|
|
41
|
-
|
|
42
|
-
## Sophisticated Business Logic Patterns
|
|
43
|
-
|
|
44
|
-
### Workflow Facade Integration
|
|
45
|
-
Design facades that encapsulate complex workflow orchestration, managing state transitions, approvals, and business rule enforcement.
|
|
46
|
-
|
|
47
|
-
### Policy-Driven Facade Behavior
|
|
48
|
-
Implement facades that adapt their behavior based on business policies, user roles, and dynamic configuration without interface changes.
|
|
49
|
-
|
|
50
|
-
### Context-Sensitive Facade Operations
|
|
51
|
-
Create facades that provide different capabilities and behaviors based on execution context, user permissions, and system state.
|
|
52
|
-
|
|
53
|
-
## Performance and Scalability Patterns
|
|
54
|
-
|
|
55
|
-
### Caching-Enabled Facade Architecture
|
|
56
|
-
- Implement multi-level caching within facade hierarchies
|
|
57
|
-
- Design cache invalidation strategies for complex data dependencies
|
|
58
|
-
- Support distributed caching for multi-instance scenarios
|
|
59
|
-
- Optimize cache performance for high-frequency facade operations
|
|
60
|
-
|
|
61
|
-
### Asynchronous Facade Operations
|
|
62
|
-
- Design asynchronous facade patterns for long-running operations
|
|
63
|
-
- Implement callback and notification mechanisms for async completion
|
|
64
|
-
- Support progress tracking and cancellation for complex operations
|
|
65
|
-
- Enable parallel execution of independent facade operations
|
|
66
|
-
|
|
67
|
-
## Advanced Error Handling
|
|
68
|
-
|
|
69
|
-
### Cascade Error Management
|
|
70
|
-
Implement sophisticated error handling that can manage failures across multiple facade layers and subsystem components.
|
|
71
|
-
|
|
72
|
-
### Recovery and Compensation
|
|
73
|
-
Design compensation patterns that can recover from partial failures in complex operations spanning multiple systems.
|
|
74
|
-
|
|
75
|
-
### Circuit Breaker Integration
|
|
76
|
-
Integrate circuit breaker patterns within facades to prevent cascade failures and enable graceful degradation.
|
|
77
|
-
|
|
78
|
-
## Security and Compliance Patterns
|
|
79
|
-
|
|
80
|
-
### Multi-Tenant Facade Security
|
|
81
|
-
Design facades that handle multi-tenant security concerns while providing unified interfaces across tenant boundaries.
|
|
82
|
-
|
|
83
|
-
### Compliance-Aware Operations
|
|
84
|
-
Implement facades that automatically handle compliance requirements such as audit logging, data retention, and privacy regulations.
|
|
85
|
-
|
|
86
|
-
### Permission-Based Facade Adaptation
|
|
87
|
-
Create facades that dynamically adapt their available operations based on user permissions and security policies.
|
|
88
|
-
|
|
89
|
-
## Monitoring and Diagnostics
|
|
90
|
-
|
|
91
|
-
### Facade Performance Analytics
|
|
92
|
-
Implement comprehensive performance monitoring across facade hierarchies to identify bottlenecks and optimization opportunities.
|
|
93
|
-
|
|
94
|
-
### Operation Tracing
|
|
95
|
-
Design distributed tracing capabilities that can track operations across multiple facade layers and subsystem components.
|
|
96
|
-
|
|
97
|
-
### Health Monitoring
|
|
98
|
-
Create health monitoring systems that can assess the status of complex facade architectures and provide early warning of issues.
|
|
99
|
-
|
|
100
|
-
## Integration Strategies
|
|
101
|
-
|
|
102
|
-
### API Gateway Facade Patterns
|
|
103
|
-
Design facades that serve as API gateways, providing external access to complex internal capabilities with appropriate security and rate limiting.
|
|
104
|
-
|
|
105
|
-
### Microservice Facade Coordination
|
|
106
|
-
Implement facades that coordinate microservice interactions while hiding service discovery, load balancing, and failure handling.
|
|
107
|
-
|
|
108
|
-
### Legacy System Integration
|
|
109
|
-
Create facades that modernize access to legacy systems while maintaining compatibility and enabling gradual migration strategies.
|
|
110
|
-
|
|
111
|
-
## Testing Complex Facades
|
|
112
|
-
|
|
113
|
-
### Multi-Layer Testing Strategies
|
|
114
|
-
- Implement testing strategies that validate facade behavior at multiple abstraction levels
|
|
115
|
-
- Design integration testing that covers complete facade interaction scenarios
|
|
116
|
-
- Support performance testing under realistic load conditions
|
|
117
|
-
- Enable chaos engineering testing for resilience validation
|
|
118
|
-
|
|
119
|
-
### Mock and Simulation Patterns
|
|
120
|
-
- Create sophisticated mocking strategies for complex facade dependencies
|
|
121
|
-
- Design simulation capabilities for testing facade behavior under various conditions
|
|
122
|
-
- Support A/B testing for facade behavior changes
|
|
123
|
-
- Enable testing of failure scenarios and recovery patterns
|
|
124
|
-
|
|
125
|
-
## Best Practices
|
|
126
|
-
|
|
127
|
-
### Architectural Principles
|
|
128
|
-
- Maintain clear separation of concerns across facade layers
|
|
129
|
-
- Design for both horizontal and vertical scaling requirements
|
|
130
|
-
- Implement comprehensive monitoring and observability
|
|
131
|
-
- Plan for facade evolution and migration strategies
|
|
132
|
-
|
|
133
|
-
### Operational Excellence
|
|
134
|
-
- Provide detailed documentation for complex facade architectures
|
|
135
|
-
- Implement automated testing and deployment pipelines
|
|
136
|
-
- Support configuration management for complex facade behaviors
|
|
137
|
-
- Maintain clear operational procedures for complex facade management
|
|
138
|
-
|
|
139
|
-
## Common Pitfalls
|
|
140
|
-
|
|
141
|
-
### Over-Engineering
|
|
142
|
-
Avoid creating unnecessarily complex facade architectures that become harder to maintain than the systems they're meant to simplify.
|
|
143
|
-
|
|
144
|
-
### Performance Overhead
|
|
145
|
-
Prevent facade layers from introducing significant performance overhead that negates the benefits of system simplification.
|
|
146
|
-
|
|
147
|
-
### Tight Coupling
|
|
148
|
-
Avoid creating tight coupling between facade layers that reduces system flexibility and makes changes difficult.
|
|
149
|
-
|
|
150
|
-
### Monitoring Gaps
|
|
151
|
-
Ensure comprehensive monitoring coverage across all facade layers to prevent issues from going undetected in complex architectures.
|
|
152
|
-
|
|
153
|
-
*Complete complex facade examples: samples/complex-facade-patterns.md*
|
|
154
|
-
*Basic facade patterns: facade-pattern-al-implementation.md*
|
|
155
|
-
*Enterprise integration: enterprise-integration-patterns.md*
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "Facade Pattern AL Implementation"
|
|
3
|
-
domain: "alex-architect"
|
|
4
|
-
difficulty: "intermediate"
|
|
5
|
-
bc_versions: "14+"
|
|
6
|
-
tags: ["facade-pattern", "structural-patterns", "api-simplification", "complexity-hiding"]
|
|
7
|
-
prerequisites: ["object-orientation-al", "interface-basics", "module-design"]
|
|
8
|
-
samples: "samples/facade-pattern-al.md"
|
|
9
|
-
related_topics: ["complex-facade-patterns", "adapter-pattern-al"]
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Facade Pattern AL Implementation
|
|
13
|
-
|
|
14
|
-
## Overview
|
|
15
|
-
|
|
16
|
-
The Facade Pattern provides a simplified interface to a complex subsystem, hiding the complexity of multiple interacting objects behind a single, easy-to-use interface. In AL development, facades are essential for creating clean APIs and managing complex business logic interactions.
|
|
17
|
-
|
|
18
|
-
**Key Benefit**: Simplifies client code by providing a unified interface to complex subsystems while maintaining loose coupling and flexibility.
|
|
19
|
-
|
|
20
|
-
## Core Facade Architecture
|
|
21
|
-
|
|
22
|
-
### Unified Interface Design
|
|
23
|
-
Create single interfaces that encapsulate complex operations across multiple AL objects, procedures, and business logic components.
|
|
24
|
-
|
|
25
|
-
### Complexity Encapsulation
|
|
26
|
-
Hide implementation details of complex subsystems behind simple, focused facade methods that handle coordination and orchestration.
|
|
27
|
-
|
|
28
|
-
### Dependency Management
|
|
29
|
-
Manage dependencies between multiple subsystem components within the facade, preventing clients from needing to understand complex relationships.
|
|
30
|
-
|
|
31
|
-
## Implementation Strategies
|
|
32
|
-
|
|
33
|
-
### Business Process Facades
|
|
34
|
-
Design facades that encapsulate complete business processes, coordinating multiple tables, pages, and codeunits to provide single-operation interfaces.
|
|
35
|
-
|
|
36
|
-
### Data Access Facades
|
|
37
|
-
Implement facades that simplify complex data access patterns, hiding join operations, filtering logic, and data transformation from client code.
|
|
38
|
-
|
|
39
|
-
### Integration Facades
|
|
40
|
-
Create facades for external system integration that hide protocol details, authentication, and error handling behind simple method calls.
|
|
41
|
-
|
|
42
|
-
## AL-Specific Patterns
|
|
43
|
-
|
|
44
|
-
### Codeunit Facade Implementation
|
|
45
|
-
Use codeunits as facade implementations that coordinate multiple AL objects while providing clean, procedure-based interfaces.
|
|
46
|
-
|
|
47
|
-
### Table Facade Extensions
|
|
48
|
-
Extend table objects with facade methods that encapsulate complex business logic while maintaining data integrity and validation rules.
|
|
49
|
-
|
|
50
|
-
### Page Integration Facades
|
|
51
|
-
Design page-level facades that coordinate multiple page elements and actions to provide simplified user interaction patterns.
|
|
52
|
-
|
|
53
|
-
## Advanced Facade Techniques
|
|
54
|
-
|
|
55
|
-
### Layered Facade Architecture
|
|
56
|
-
Implement multiple facade layers that provide different levels of abstraction for different types of clients and usage scenarios.
|
|
57
|
-
|
|
58
|
-
### Context-Aware Facades
|
|
59
|
-
Design facades that adapt their behavior based on user context, permissions, or system configuration while maintaining consistent interfaces.
|
|
60
|
-
|
|
61
|
-
### Event-Integrated Facades
|
|
62
|
-
Integrate facade operations with AL event systems to provide notifications and enable extensibility without facade modification.
|
|
63
|
-
|
|
64
|
-
## Performance Considerations
|
|
65
|
-
|
|
66
|
-
### Operation Optimization
|
|
67
|
-
Optimize facade operations to minimize unnecessary object instantiation and method calls while maintaining interface simplicity.
|
|
68
|
-
|
|
69
|
-
### Caching Integration
|
|
70
|
-
Implement intelligent caching within facades to improve performance for frequently accessed complex operations.
|
|
71
|
-
|
|
72
|
-
### Resource Management
|
|
73
|
-
Design facades to efficiently manage resources and connections, especially for integration and external system access scenarios.
|
|
74
|
-
|
|
75
|
-
## Error Handling and Validation
|
|
76
|
-
|
|
77
|
-
### Unified Error Management
|
|
78
|
-
- Implement consistent error handling across all facade operations
|
|
79
|
-
- Provide meaningful error messages that abstract subsystem complexity
|
|
80
|
-
- Support error recovery and retry mechanisms within facade logic
|
|
81
|
-
- Maintain error logging and diagnostics for troubleshooting
|
|
82
|
-
|
|
83
|
-
### Input Validation
|
|
84
|
-
- Centralize validation logic within facade methods
|
|
85
|
-
- Provide comprehensive parameter validation before subsystem operations
|
|
86
|
-
- Support business rule validation across multiple subsystem components
|
|
87
|
-
- Enable early error detection to prevent inconsistent states
|
|
88
|
-
|
|
89
|
-
## Best Practices
|
|
90
|
-
|
|
91
|
-
### Design Principles
|
|
92
|
-
- Keep facade interfaces focused and cohesive
|
|
93
|
-
- Implement facades at appropriate abstraction levels for target clients
|
|
94
|
-
- Maintain clear separation between facade logic and subsystem implementation
|
|
95
|
-
- Design for both simplicity and extensibility
|
|
96
|
-
|
|
97
|
-
### Documentation Standards
|
|
98
|
-
- Provide clear documentation for facade capabilities and limitations
|
|
99
|
-
- Include examples of common usage patterns and scenarios
|
|
100
|
-
- Document any performance characteristics or constraints
|
|
101
|
-
- Maintain clear guidance for when to use facade versus direct subsystem access
|
|
102
|
-
|
|
103
|
-
## Integration Patterns
|
|
104
|
-
|
|
105
|
-
### Service Layer Integration
|
|
106
|
-
Integrate facades with service layer patterns to provide business service interfaces that coordinate multiple business capabilities.
|
|
107
|
-
|
|
108
|
-
### API Gateway Patterns
|
|
109
|
-
Use facades as API gateways that provide external access to internal Business Central capabilities with appropriate security and validation.
|
|
110
|
-
|
|
111
|
-
### Microservice Coordination
|
|
112
|
-
Design facades that coordinate microservice interactions while providing unified interfaces for complex business operations.
|
|
113
|
-
|
|
114
|
-
## Testing Strategies
|
|
115
|
-
|
|
116
|
-
### Facade Testing
|
|
117
|
-
- Implement comprehensive testing for facade operations and edge cases
|
|
118
|
-
- Mock subsystem dependencies to enable isolated facade testing
|
|
119
|
-
- Test error handling and recovery scenarios thoroughly
|
|
120
|
-
- Validate facade performance under different load conditions
|
|
121
|
-
|
|
122
|
-
### Integration Testing
|
|
123
|
-
- Test complete end-to-end scenarios through facade interfaces
|
|
124
|
-
- Validate subsystem coordination and data consistency
|
|
125
|
-
- Test facade behavior under various system conditions and configurations
|
|
126
|
-
- Ensure facade operations maintain transactional integrity
|
|
127
|
-
|
|
128
|
-
## Common Pitfalls
|
|
129
|
-
|
|
130
|
-
### Over-Simplification
|
|
131
|
-
Avoid over-simplifying facades to the point where necessary functionality becomes inaccessible to clients requiring more control.
|
|
132
|
-
|
|
133
|
-
### Facade Bloat
|
|
134
|
-
Prevent facades from becoming bloated with too many responsibilities that reduce their effectiveness and maintainability.
|
|
135
|
-
|
|
136
|
-
*Complete facade implementation examples: samples/facade-pattern-al.md*
|
|
137
|
-
*Complex facade patterns: complex-facade-patterns.md*
|
|
138
|
-
*Related structural patterns: adapter-pattern-al.md*
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "AL Facade Pattern for External API Integration"
|
|
3
|
-
domain: "alex-architect"
|
|
4
|
-
difficulty: "intermediate"
|
|
5
|
-
bc_versions: "14+"
|
|
6
|
-
tags: ["facade-pattern", "api-integration", "abstraction", "maintainability"]
|
|
7
|
-
samples: "samples/facade-pattern.md"
|
|
8
|
-
type: improvement-pattern
|
|
9
|
-
category: "architectural-patterns"
|
|
10
|
-
pattern_type: good
|
|
11
|
-
severity: medium
|
|
12
|
-
impact_level: medium
|
|
13
|
-
improvement_suggestion: "Use facade pattern to simplify external API integration"
|
|
14
|
-
implementation_steps: ["create-facade-codeunit", "abstract-api-calls", "centralize-error-handling"]
|
|
15
|
-
validation_criteria: ["single-entry-point", "hidden-complexity", "clean-interfaces"]
|
|
16
|
-
technical_areas: ["al-code", "integration"]
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
# AL Facade Pattern for External API Integration
|
|
20
|
-
|
|
21
|
-
## Overview
|
|
22
|
-
|
|
23
|
-
The facade pattern creates a unified, simplified interface to complex external API systems. Instead of exposing raw API complexity throughout your AL codebase, the facade provides a clean business-focused entry point that handles all technical implementation details internally.
|
|
24
|
-
|
|
25
|
-
**Core Principle**: One dedicated codeunit acts as the single gateway to external systems, abstracting authentication, error handling, retry logic, and data transformation.
|
|
26
|
-
|
|
27
|
-
## Strategic Framework
|
|
28
|
-
|
|
29
|
-
### When to Apply Facade Pattern
|
|
30
|
-
- **Multiple API endpoints** required for single business operation
|
|
31
|
-
- **Complex authentication flows** (OAuth, JWT, multi-step auth)
|
|
32
|
-
- **Inconsistent external API responses** requiring normalization
|
|
33
|
-
- **Rate limiting and retry logic** needed across multiple calls
|
|
34
|
-
- **Future API changes** anticipated requiring isolation from business logic
|
|
35
|
-
|
|
36
|
-
### Architecture Benefits
|
|
37
|
-
- **Dependency Isolation**: External system changes don't cascade through codebase
|
|
38
|
-
- **Simplified Testing**: Clear boundaries for mocking external dependencies
|
|
39
|
-
- **Centralized Logic**: Authentication, error handling, and retry patterns in one place
|
|
40
|
-
- **Business Focus**: Consuming objects work with business concepts, not technical APIs
|
|
41
|
-
|
|
42
|
-
## Architecture Focus
|
|
43
|
-
|
|
44
|
-
### Facade Structure
|
|
45
|
-
Create a dedicated codeunit containing:
|
|
46
|
-
- **Public Methods**: Business-focused operations (GetCustomerData, SyncOrderStatus)
|
|
47
|
-
- **Private Methods**: Technical API calls, authentication, error handling
|
|
48
|
-
- **Internal State**: Connection management, token caching, configuration
|
|
49
|
-
|
|
50
|
-
### Interface Design Principles
|
|
51
|
-
- **Business Language**: Method names reflect business operations, not API endpoints
|
|
52
|
-
- **Simplified Parameters**: Hide complex API parameter mapping from consumers
|
|
53
|
-
- **Consistent Returns**: Standardized response patterns regardless of underlying API variations
|
|
54
|
-
- **Error Abstraction**: Convert technical errors to business-meaningful messages
|
|
55
|
-
|
|
56
|
-
## Best Practices
|
|
57
|
-
|
|
58
|
-
### Implementation Guidelines
|
|
59
|
-
- **Single Responsibility**: Each facade handles one external system or related service group
|
|
60
|
-
- **Stateless Design**: Avoid maintaining connection state between method calls
|
|
61
|
-
- **Configuration Driven**: Use setup tables for URLs, credentials, and API versions
|
|
62
|
-
- **Comprehensive Logging**: Log all external interactions for troubleshooting
|
|
63
|
-
|
|
64
|
-
### Error Handling Strategy
|
|
65
|
-
- **Graceful Degradation**: Provide fallback behaviors when external systems unavailable
|
|
66
|
-
- **Retry Logic**: Implement exponential backoff for transient failures
|
|
67
|
-
- **Circuit Breaker**: Prevent cascading failures when external system is down
|
|
68
|
-
- **User-Friendly Messages**: Translate technical errors to actionable business guidance
|
|
69
|
-
|
|
70
|
-
## Anti-Patterns
|
|
71
|
-
|
|
72
|
-
### Avoid These Approaches
|
|
73
|
-
- **Direct API Calls** scattered throughout business logic objects
|
|
74
|
-
- **Shared HTTP Client** instances without proper abstraction layer
|
|
75
|
-
- **Exposed Technical Details** like HTTP status codes in business methods
|
|
76
|
-
- **Mixed Responsibilities** combining business logic with API communication
|
|
77
|
-
|
|
78
|
-
**Implementation Reference**: see samples/facade-pattern.md
|
|
79
|
-
**Related Patterns**: error-handling-patterns.md, api-authentication-patterns.md
|