# cp-ddd-framework | Funky Gao | Knowledge Base | Instagit

轻量级DDD正向/逆向业务建模框架，支撑复杂业务系统的架构演化！

GitHub Stars: 1.2k

Repository: https://github.com/funkygao/cp-ddd-framework

---

## Articles

### [How the dddplus-visualization Module Generates Business Model Views from DSL Annotations](/funkygao/cp-ddd-framework/dddplus-visualization-generate-business-model-views-dsl-annotations)

Discover how the dddplus-visualization module uses static analysis and JavaParser to convert DSL annotations into business model diagrams with PlantUmlRenderer and PlainTextRenderer.

- Tags: how-to-guide
- Published: 2026-03-02

### [Integrating the dddplus-maven-plugin Enforce Goal into Your Build Pipeline](/funkygao/cp-ddd-framework/use-dddplus-maven-plugin-enforce-goal-build-pipeline)

Integrate the dddplus-maven-plugin enforce goal into your build pipeline to validate DDD-plus architecture compliance. Prevent non-compliant code from reaching production with automated checks.

- Tags: how-to-guide
- Published: 2026-03-02

### [IIdentity and IIdentityResolver: Extension Routing in the cp-ddd-framework](/funkygao/cp-ddd-framework/relationship-between-iidentity-iidentityresolver-extension-routing)

Understand the IIdentity and IIdentityResolver in cp-ddd-framework. Discover how they power extension routing by mapping business data to specific extension implementations.

- Tags: internals
- Published: 2026-03-02

### [How IReducer Enables Early Termination in Extension Execution Loops](/funkygao/cp-ddd-framework/how-ireducer-enables-early-termination-extension-execution-loop)

Discover how IReducer enables early termination in extension execution loops, preventing unnecessary processing. Learn when to use shouldStop() for efficient extension handling.

- Tags: deep-dive
- Published: 2026-03-02

### [How to Use the @Governance Annotation for Managing Extension Lifecycle in cp-ddd-framework](/funkygao/cp-ddd-framework/use-governance-annotation-extension-lifecycle-management)

Master extension lifecycle management with the @Governance annotation in cp-ddd-framework. Learn how to monitor, count, and control extension invocations for robust service governance.

- Tags: how-to-guide
- Published: 2026-03-02

### [BoundedDomainModel vs UnboundedDomainModel in DDDplus: Core Architecture Explained](/funkygao/cp-ddd-framework/difference-between-boundeddomainmodel-and-unboundeddomainmodel-dddplus)

Understand BoundedDomainModel vs UnboundedDomainModel in DDDplus core architecture. Discover how IUnboundedDomainModel defines identity and BoundedDomainModel manages scenario-specific behavior to avoid God-class anti-patterns.

- Tags: deep-dive
- Published: 2026-03-02

### [How IUnitOfWork Manages the Lifecycle of Domain Objects in DDDplus](/funkygao/cp-ddd-framework/iunitofwork-manage-domain-object-lifecycle-dddplus)

Discover how DDDplus IUnitOfWork manages domain object lifecycles atomically across aggregates within a single transaction. Learn to transition objects from transient to persistent state seamlessly.

- Tags: how-to-guide
- Published: 2026-03-02

### [How to Use the @Interceptor Annotation to Modify Extension Execution in DDDplus](/funkygao/cp-ddd-framework/use-interceptor-annotation-modify-extension-execution-behavior)

Learn to use the @Interceptor annotation in DDDplus to modify extension execution. Intercept extension point calls for pre-processing, post-processing, or short-circuiting without altering extension code.

- Tags: how-to-guide
- Published: 2026-03-02

### [How DDDplus Implements the Specification Pattern with AndSpecification and OrSpecification](/funkygao/cp-ddd-framework/dddplus-implement-specification-pattern-andspecification-orspecification)

Discover how DDDplus implements the Specification pattern using AndSpecification and OrSpecification. Learn to create composable business rules with logical conjunction and disjunction.

- Tags: deep-dive
- Published: 2026-03-02

### [HasOne vs HasMany vs BelongTo in DDDplus: Association Types Explained](/funkygao/cp-ddd-framework/difference-between-hasone-hasmany-belongto-associations-dddplus-model-package)

Understand HasOne, HasMany, and BelongTo associations in DDDplus. Learn how to model domain relationships for single ownership, collection aggregation, and external references to build robust applications.

- Tags: deep-dive
- Published: 2026-03-02

### [Configuring Default Extension Fallback in DDD-Plus: A Complete Guide](/funkygao/cp-ddd-framework/configure-default-extension-fallback-no-matching-extension)

Learn how to configure default extension fallback in DDD-Plus with this complete guide. Annotate your class with @Extension(code = IDomainExtension.DefaultCode) to ensure seamless execution when no specific extension matches.

- Tags: how-to-guide
- Published: 2026-03-02

### [How to Implement a Custom IExtensionInterceptor in cp-ddd-framework: Complete Guide](/funkygao/cp-ddd-framework/implement-custom-iextension-interceptor-modify-extension-behavior)

Learn to implement a custom IExtensionInterceptor in cp-ddd-framework. Modify extension behavior by creating a Spring bean with beforeInvocation and afterInvocation methods. Get the complete guide.

- Tags: how-to-guide
- Published: 2026-03-02

### [How InternalIndexer Organizes and Post-Indexes Registered Domain Artifacts in DDDplus](/funkygao/cp-ddd-framework/internal-indexer-organize-post-index-registered-domain-artifacts)

Discover how DDDplus's InternalIndexer organizes and post-indexes registered domain artifacts. This in-memory registry collects, categorizes, and exports domain artifacts for deterministic runtime resolution.

- Tags: internals
- Published: 2026-03-02

### [How to Use the @KeyFlow DSL Annotation for Reverse Modeling and Visualizing Business Processes](/funkygao/cp-ddd-framework/use-keyflow-dsl-annotation-reverse-modeling-business-process-visualization)

Learn how to use the KeyFlow DSL annotation to reverse model and visualize your business processes. Effortlessly generate PlantUML diagrams from your source code.

- Tags: how-to-guide
- Published: 2026-03-02

### [How DDDplus Enables Polymorphic Extension Execution with forEachExtension()](/funkygao/cp-ddd-framework/dddplus-support-polymorphic-extension-execution-foreach-extension)

Discover how DDDplus uses dynamic proxies and forEachExtension() to execute polymorphic extensions sequentially. Streamline your extension logic and aggregate results efficiently.

- Tags: deep-dive
- Published: 2026-03-02

### [IDomainService vs IApplicationService in DDDplus: Layered Architecture Guide](/funkygao/cp-ddd-framework/difference-idomainservice-vs-iapplicationservice-dddplus-architecture)

Understand the difference between IDomainService and IApplicationService in DDDplus. Learn how each layer orchestrates workflows and encapsulates business logic for effective DDD.

- Tags: architecture
- Published: 2026-03-02

### [How to Implement an IDomainExtension with Multiple Routing Modes in cp-ddd-framework](/funkygao/cp-ddd-framework/implement-idomainextension-multiple-routing-modes)

Master IDomainExtension with cp-ddd-framework. Learn to implement multiple routing modes using all-match first-match or predicate-stop strategies for efficient selection and execution.

- Tags: how-to-guide
- Published: 2026-03-02

### [DDDBootstrap Initialization Sequence: When `RegistryFactory.register()` is Invoked in cp-ddd-framework](/funkygao/cp-ddd-framework/dddbootstrap-initialization-sequence-registryfactory-register-invocation)

Discover the DDDBootstrap initialization sequence and learn exactly when RegistryFactory register is invoked within cp-ddd-framework after Spring dependency injection and before ContextRefreshedEvent.

- Tags: internals
- Published: 2026-03-02

### [How to Integrate DDDplus Architecture Enforcement Rules into a CI Pipeline](/funkygao/cp-ddd-framework/integrate-dddplus-architecture-enforcement-ci-pipeline)

Easily integrate DDDplus architecture enforcement rules into your CI pipeline. Learn how to use dddplus maven plugin and ArchUnit to validate DDD constraints automatically on every build.

- Tags: how-to-guide
- Published: 2026-03-02

### [How to Configure Execution Timoutouts for Extensions Using firstExtension() in cp-ddd-framework](/funkygao/cp-ddd-framework/configure-timeout-extension-execution-firstextension-method)

Configure extension execution timeouts in cp-ddd-framework using firstExtension(). Set millisecond values to enforce limits and prevent breaches with ExtTimeoutException for robust extension management.

- Tags: how-to-guide
- Published: 2026-03-02

### [How DDDplus Manages Step Dependencies with @Step Annotation: A Complete Guide](/funkygao/cp-ddd-framework/dddplus-manage-domain-step-dependencies-step-annotation)

Learn how DDDplus uses the @Step annotation to manage step dependencies. Discover why enforcement is optional and how to handle execution order for your DDDplus applications.

- Tags: how-to-guide
- Published: 2026-03-02

### [Architectural Differences Between BaseRouter and BaseDecideStepsRouter in DDDplus](/funkygao/cp-ddd-framework/difference-between-baserouter-and-basedecidestepsrouter-dddplus)

Explore the architectural differences between BaseRouter and BaseDecideStepsRouter in DDDplus. Understand their roles and how each handles extension-point routing for your domain-driven design.

- Tags: deep-dive
- Published: 2026-03-02

### [Implementing Custom IReducer to Control Extension Execution Flow in BaseRouter: A Complete Guide](/funkygao/cp-ddd-framework/implement-custom-ireducer-base-router-control-extension-flow)

Master custom IReducer implementation in BaseRouter to control extension execution flow. Learn strategies like shouldStop and reduce for efficient iteration.

- Tags: how-to-guide
- Published: 2026-03-02

### [DDDplus Extension Routing: How Pattern, Partner, and Policy Mechanisms Differ](/funkygao/cp-ddd-framework/dddplus-extension-routing-pattern-vs-partner-vs-policy)

Understand DDDplus extension routing differences: Policy for global mapping, Pattern for conditional matching, and Partner for exclusive scopes. Learn how these mechanisms differ and their precedence.

- Tags: deep-dive
- Published: 2026-03-02

