MCPcopy
hub / github.com/alibaba/COLA

github.com/alibaba/COLA @v5.0.0 sqlite

repository ↗ · DeepWiki ↗ · release v5.0.0 ↗
1,705 symbols 4,451 edges 501 files 341 documented · 20%
README

🥤 COLA v4

Fast CI Multiply Java versions CI License Java support Maven Central GitHub Releases GitHub Stars GitHub Forks user repos GitHub issues GitHub Contributors gitpod: Ready to Code

COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”。 目前COLA已经发展到COLA v4

COLA分为两个部分,COLA架构和COLA组件。

一、COLA架构

COLA 概述

架构意义 就是 要素结构:

  • 要素 是 组成架构的重要元素;
  • 结构 是 要素之间的关系。

应用架构意义 就在于

  • 定义一套良好的结构;
  • 治理应用复杂度,降低系统熵值;
  • 从随心所欲的混乱状态,走向井井有条的有序状态。

arch why

COLA架构就是为此而生,其核心职责就是定义良好的应用结构,提供最佳应用架构的最佳实践。通过不断探索,我们发现良好的分层结构,良好的包结构定义,可以帮助我们治理混乱不堪的业务应用系统。

cure

经过多次迭代,我们定义出了相对稳定、可靠的应用架构:COLA v4

cola arch

COLA Archetypes

好的应用架构,都遵循一些共同模式,不管是六边形架构、洋葱圈架构、整洁架构、还是COLA架构,都提倡以业务为核心,解耦外部依赖,分离业务复杂度和技术复杂度等

COLA架构区别于这些架构的地方,在于除了思想之外,我们还提供了可落地的工具和实践指导。

为了能够快速创建满足COLA架构的应用,我们提供了两个archetype,位于cola-archetypes目录下:

  1. cola-archetype-service:用来创建纯后端服务的archetype
  2. cola-archetype-web:用来创建adapter和后端服务一体的web应用archetype

二、COLA组件

此外,我们还提供了一些非常有用的通用组件,这些组件可以帮助我们提升研发效率。

这些功能组件被收拢在cola-components目录下面。到目前为止,我们已经沉淀了以下组件:

组件名称 功能 依赖
cola-component-dto 定义了DTO格式,包括分页
cola-component-exception 定义了异常格式,

主要有BizExceptionSysException |无 cola-component-statemachine | 状态机组件 | 无 cola-component-domain-starter | Spring托管的领域实体组件 | 无 cola-component-catchlog-starter | 异常处理和日志组件 | exceptiondto组件 cola-component-extension-starter | 扩展点组件 | 无 cola-component-test-container | 测试容器组件 | 无

三、如何使用COLA

1. 创建应用

执行以下命令:

mvn archetype:generate \
    -DgroupId=com.alibaba.cola.demo.web \
    -DartifactId=demo-web \
    -Dversion=1.0.0-SNAPSHOT \
    -Dpackage=com.alibaba.demo \
    -DarchetypeArtifactId=cola-framework-archetype-web \
    -DarchetypeGroupId=com.alibaba.cola \
    -DarchetypeVersion=4.3.2

命令执行成功的话,会看到如下的应用代码结构:

demo struture

2. 运行应用

  • 项目目录下运行mvn install(如果不想运行测试,可以加上-DskipTests参数)。
  • 进入start目录,执行mvn spring-boot:run
    运行成功的话,可以看到SpringBoot启动成功的界面。
  • 生成的应用中,已经实现了一个简单的Rest请求,可以在浏览器中输入 http://localhost:8080/helloworld 进行测试。

如果要生成不是web工程而是service工程也类似,执行的是下面的命令:

mvn archetype:generate \
    -DgroupId=com.alibaba.cola.demo.service \
    -DartifactId=demo-service \
    -Dversion=1.0.0-SNAPSHOT \
    -Dpackage=com.alibaba.demo \
    -DarchetypeArtifactId=cola-framework-archetype-service \
    -DarchetypeGroupId=com.alibaba.cola \
    -DarchetypeVersion=4.3.2

版本迭代

4.0.0 版本

https://blog.csdn.net/significantfrank/article/details/110934799

3.1.0 版本

https://blog.csdn.net/significantfrank/article/details/109529311

  1. 进一步简化了cola-core,只保留了扩展能力。
  2. exceptioncola-core移入到cola-common
  3. archetype中的分包逻辑进行重构,改成按照domain做划分。
  4. cola-archetype-web中的controller改名为adapter,为了呼应六边形架构的命名。

3.0.0 版本

https://blog.csdn.net/significantfrank/article/details/106976804

2.0.0 版本

https://blog.csdn.net/significantfrank/article/details/100074716

1.0.0 版本

https://blog.csdn.net/significantfrank/article/details/85785565

Extension points exported contracts — how you extend this code

Action (Interface)
Generic strategy interface used by a state machine to respond events by executing an Action with a {@link StateC [34 implementers]
cola-components/cola-component-statemachine/src/main/java/com/alibaba/cola/statemachine/Action.java
AddCustomerValidatorExtPt (Interface)
AddCustomerValidatorExtPt @author Frank Zhang @date 2018-01-07 1:27 AM [8 implementers]
cola-components/cola-component-extension-starter/src/test/java/com/alibaba/cola/extension/customer/app/extensionpoint/AddCustomerValidatorExtPt.java
Measurable (Interface)
Measurable 可度量的 @author Frank Zhang @date 2018-07-04 1:32 PM [17 implementers]
cola-samples/craftsman/craftsman-domain/src/main/java/com/alibaba/craftsman/domain/metrics/Measurable.java
Action (Interface)
(no doc) [34 implementers]
cola-components/cola-component-ruleengine/src/test/java/com/alibaba/cola/ruleengine/fizzbuzz/v2/Action.java
Resource (Interface)
套餐背后所绑定的资源 [3 implementers]
cola-samples/charge/src/main/java/com/huawei/charging/domain/charge/chargeplan/Resource.java
Resource (Interface)
套餐背后所绑定的资源 [3 implementers]
cola-archetypes/cola-archetype-light/src/main/resources/archetype-resources/src/main/java/domain/charge/chargeplan/Resource.java
ResponseHandlerI (Interface)
(no doc) [4 implementers]
cola-components/cola-component-catchlog-starter/src/main/java/com/alibaba/cola/catchlog/ResponseHandlerI.java
CustomerGateway (Interface)
(no doc) [3 implementers]
cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CustomerGateway.java

Core symbols most depended-on inside this repo

add
called by 75
cola-components/cola-component-ruleengine/src/main/java/com/alibaba/cola/ruleengine/api/Facts.java
debug
called by 56
cola-components/cola-component-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/Debugger.java
get
called by 51
cola-archetypes/cola-archetype-light/src/main/resources/archetype-resources/src/main/java/domain/gateway/SessionGateway.java
execute
called by 40
cola-components/cola-component-ruleengine/src/main/java/com/alibaba/cola/ruleengine/api/Rule.java
when
called by 38
cola-components/cola-component-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/On.java
addMetricItem
called by 33
cola-samples/craftsman/craftsman-domain/src/main/java/com/alibaba/craftsman/domain/metrics/SubMetric.java
on
called by 28
cola-components/cola-component-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/To.java
perform
called by 28
cola-components/cola-component-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/When.java

Shape

Method 1,203
Class 415
Interface 61
Enum 26

Languages

Java100%

Modules by API surface

cola-samples/craftsman/craftsman-infrastructure/src/main/java/com/alibaba/craftsman/gatewayimpl/database/dataobject/UserProfileDO.java23 symbols
cola-components/cola-component-statemachine/src/test/java/com/alibaba/cola/test/StateMachineTest.java16 symbols
cola-components/cola-component-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/TransitionImpl.java16 symbols
cola-components/cola-component-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/StateMachineImpl.java16 symbols
cola-components/cola-component-dto/src/main/java/com/alibaba/cola/dto/PageResponse.java15 symbols
cola-components/cola-component-catchlog-starter/src/test/java/com/alibaba/cola/catchlog/test/Demo.java15 symbols
cola-components/cola-component-statemachine/src/main/java/com/alibaba/cola/statemachine/Transition.java14 symbols
cola-components/cola-component-ruleengine/src/main/java/com/alibaba/cola/ruleengine/core/AbstractRule.java14 symbols
cola-components/cola-component-dto/src/main/java/com/alibaba/cola/dto/PageQuery.java14 symbols
cola-components/cola-component-extension-starter/src/test/java/com/alibaba/cola/extension/customer/infrastructure/CustomerDO.java13 symbols
cola-components/cola-component-ruleengine/src/main/java/com/alibaba/cola/ruleengine/api/Facts.java12 symbols
cola-samples/craftsman/craftsman-infrastructure/src/main/java/com/alibaba/craftsman/gatewayimpl/rpc/dataobject/AppMetricDO.java11 symbols

Used by 1 indexed graphs manifest dependencies, hub-wide

Dependencies from manifests, versioned

${groupId}:${rootArtifactId}-adapter
${groupId}:${rootArtifactId}-app
${groupId}:${rootArtifactId}-client
${groupId}:${rootArtifactId}-domain
${groupId}:${rootArtifactId}-infrastructure
com.alibaba.cola:cola-component-catchlog-starter
com.alibaba.cola:cola-component-domain-starter
com.alibaba.cola:cola-component-dto
com.alibaba.cola:cola-component-exception
com.alibaba.cola:cola-component-extension-starter
com.alibaba.cola:cola-component-statemachine
com.alibaba.cola:cola-component-test-container5.0.0 · 1×

Datastores touched

(mysql)Database · 1 repos
blogDBDatabase · 1 repos
chargeDBDatabase · 1 repos
craftsmanDatabase · 1 repos

For agents

$ claude mcp add COLA \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact