Skip to content

daidai21/biz_ext_framework

Repository files navigation

biz_ext_framework

biz_ext_framework is a repository for reusable business extension components.

Components are organized by top-level directories. Some directories are already independent Go modules, and some are placeholders reserved for follow-up work.

Architecture

Modules in this repository can be used in two ways:

  • use low-level modules independently, without pulling in other modules
  • use service_manager as the service-side integration layer that wires several modules together

service_manager currently integrates:

  • biz_component
  • biz_ctx
  • biz_identity
  • biz_observation
  • biz_process
  • ext_model

Those lower-level modules do not depend on each other and can still be used separately.

                          +-------------------+
                          |  service_manager  |
                          |   integration     |
                          +-------------------+
                        /    /      |      \      \
                       v    v       v       v      v
                +-----------+ +-----------+ +-----------+ +-----------+ +-----------+
                |  biz_ctx  | |biz_identity| |biz_observ.| |biz_process| | ext_model |
                |session ctx| |identity wl | |log/metric/| |multi-     | |model      |
                |           | |            | |trace      | |process     | |filter     |
                +-----------+ +-----------+ +-----------+ +-----------+ +-----------+

Independent usage:

  biz_component  biz_ctx  biz_identity  biz_observation  biz_process  ext_model  ext_spi  ext_process  ext_interceptor
       |            |          |              |              |            |         |         |                |
       +------------+----------+--------------+--------------+------------+---------+---------+----------------+
                                             each module can be used alone

Directory Layout

  • biz_component/: independent Go module for IOC-style business component management
  • biz_ctx/: independent Go module for business context components
  • biz_identity/: independent Go module for business identity abstractions
  • biz_observation/: independent Go module for business observation utilities
  • biz_process/: independent Go module for business process FSM
  • ext_interceptor/: independent Go module for extension interceptor abstractions
  • ext_model/: independent Go module for extension model abstractions
  • ext_process/: independent Go module for extension process template
  • ext_spi/: independent Go module for SPI template abstractions
  • service_manager/: independent Go module for service-side integration and container management
  • Makefile: repository-level helper targets
  • go.mod: repository-level Go module definition

Implemented Modules

service_manager

service_manager provides a service-side integration layer built on top of other reusable modules:

  • ServiceManager: service instance lifecycle management
  • ServiceManagerBuilder: container initialization and service construction
  • ComponentContainer: IOC component management
  • CtxContainer: business session context management
  • IdentityContainer: business identity whitelist management
  • ObservationContainer: log / metrics / trace dependency management
  • ProcessContainer: multiple named process orchestration management
  • SPIContainer: extension definition to implementation management
  • ExtProcessContainer: extension process definition to implementation management
  • InterceptorContainer: interceptor definition to implementation management
  • ModelContainer: outbound RPC ext model whitelist filtering

Documentation:

ext_model

ext_model provides a generic, concurrency-safe model map abstraction:

  • ExtObj: value contract with Key() string
  • ExtModel[V]: map behavior interface
  • ExtMap[V]: default implementation
  • CopyExtMap: copy helper with WithDeepCopy and WithKeyFilter

Documentation:

biz_component

biz_component provides IOC-style business component management:

  • Container
  • ServiceScope
  • SessionScope
  • Provider
  • Resolver

Documentation:

biz_identity

biz_identity provides a technical component for business identity abstractions:

  • BizIdentity
  • Parser
  • Validator

Documentation:

biz_observation

biz_observation provides lightweight observation utilities:

  • log_util
  • metrics_util
  • trace_util
  • observation_util

Documentation:

biz_process

biz_process provides process orchestration components:

  • FSM
  • BPMN-like serial-layer / parallel-node orchestration
  • DAG orchestration

Documentation:

ext_process

ext_process provides a generic extension process template:

  • Mode (Serial, Parallel)
  • Template
  • MatchFunc
  • ProcessFunc (with continueNext support in serial mode)

Documentation:

ext_spi

ext_spi provides a generic SPI template with four modes:

  • First
  • All
  • FirstMatched
  • AllMatched

Documentation:

ext_interceptor

ext_interceptor provides a generic interceptor template abstraction:

  • Handler
  • Template
  • MatchFunc
  • InterceptFunc

Documentation:

Quick Start

package main

import (
    "fmt"

    "github.com/daidai21/biz_ext_framework/ext_model"
)

type User struct {
    ID   string
    Name string
}

func (u User) Key() string {
    return u.ID
}

func main() {
    var users ext_model.ExtModel[User] = &ext_model.ExtMap[User]{}

    users.Set(User{ID: "u1", Name: "Alice"})

    user, ok := users.Get("u1")
    fmt.Println(user.Name, ok)
}

Development

Run tests from the target module directory:

cd ext_model && go test ./...

Repository-level helper target:

make statistics_lines

About

a business extension module framework, created by CodeX

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors