# dwarfeng-datamark
**Repository Path**: dwarfeng/dwarfeng-datamark
## Basic Information
- **Project Name**: dwarfeng-datamark
- **Description**: 基于 subgrade 框架的数据标记处理工具
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-05-09
- **Last Updated**: 2026-06-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# dwarfeng-datamark
Dwarfeng(赵扶风)的数据标记处理工具,基于 `subgrade` 底座开发,用于提升数据的运维便捷性和可追溯性。
---
## 特性
1. Subgrade 架构支持。
2. 能够轻松地通过配置获取一个数据标记处理器,以获取当前的数据标记值。
3. 数据标记基于 Spring Resource 进行加载。
4. 提供标记刷新 API,可以重复读取 Spring Resource,并刷新数据标记。
5. 提供标记更新 API,当 Spring Resource 支持写入时,可以更新数据标记。
6. 支持通过 `DatamarkQosService` 在单处理器和多处理器场景中统一访问数据标记能力,并使用读写锁提高并发效率。
7. 支持 Spring XML XSD 命名空间配置,以及通过 `@DatamarkField` 和 `DatamarkEntityListener` 在 JPA 实体持久化阶段自动写入数据标记。
8. `dwarfeng-datamark-api` 模块提供 spring-telqos 运维指令示例。
运行 `dwarfeng-datamark-core/src/test` 下的示例以观察核心特性。
| 示例类名 | 说明 |
|-------------------------------------------------------------------|---------------|
| com.dwarfeng.datamark.node.example.MultitonHandlerProcessExample | 多例模式处理器流程示例 |
| com.dwarfeng.datamark.node.example.MultitonQosProcessExample | 多例模式 QoS 流程示例 |
| com.dwarfeng.datamark.node.example.SingletonHandlerProcessExample | 单例模式处理器流程示例 |
| com.dwarfeng.datamark.node.example.SingletonQosProcessExample | 单例模式 QoS 流程示例 |
运行 `dwarfeng-datamark-api/src/test` 下的示例以观察 API 扩展特性。
| 示例类名 | 说明 |
|-------------------------------------------------------------|-----------------------------------------|
| com.dwarfeng.datamark.api.integration.example.TelqosExample | Telqos 示例:通过 `datamark` 指令操作数据标记 QoS 服务 |
## 文档
该项目的文档位于 [docs](./docs) 目录下,包括:
### wiki
wiki 为项目的开发人员为本项目编写的详细文档,包含不同语言的版本,主要入口为:
1. [简介](docs/wiki/zh-CN/Introduction.md) - 镜像的 `README.md`,与本文件内容基本相同。
2. [目录](docs/wiki/zh-CN/Contents.md) - 文档目录。
## 安装说明
1. 下载源码。
使用 git 进行源码下载。
```shell
git clone git@github.com:DwArFeng/dwarfeng-datamark.git
```
对于中国用户,可以使用 gitee 进行高速下载。
```shell
git clone git@gitee.com:dwarfeng/dwarfeng-datamark.git
```
2. 项目安装。
进入项目根目录,执行 maven 命令
```shell
mvn clean source:jar install
```
3. 项目引入。
根工程坐标为 `com.dwarfeng:dwarfeng-datamark`。在业务项目中使用时,通常按需要引入具体模块。
如果只需要核心数据标记能力,在项目的 `pom.xml` 中添加如下依赖:
```xml
com.dwarfeng
dwarfeng-datamark-core
${dwarfeng-datamark.version}
```
如果需要 spring-telqos 运维指令能力,在项目的 `pom.xml` 中添加如下依赖:
```xml
com.dwarfeng
dwarfeng-datamark-api
${dwarfeng-datamark.version}
```
4. enjoy it.
## 如何使用
1. 运行 `dwarfeng-datamark-core/src/test` 下的 `Example` 以观察核心特性。
2. 运行 `dwarfeng-datamark-api/src/test` 下的 `Example` 以观察 spring-telqos 运维指令特性。
3. 观察项目结构,将其中的配置运用到其它的 subgrade 项目中。
### 单实例模式
加载 `com.dwarfeng.datamark.node.configuration.SingletonConfiguration`,即可获得单例模式的 `DatamarkHandler`、
`DatamarkQosHandler` 与
`DatamarkQosService`。
在项目的 `application-context-scan.xml` 中追加 `com.dwarfeng.datamark.node.configuration` 包中相应 bean 的扫描,示例如下:
```xml
```
### 多实例模式
不使用包扫描,使用 xml 或者配置类生成 `DatamarkHandlerImpl` 实例。
在项目的 `bean-definition.xml` 中追加配置,示例如下:
```xml
```
### XSD 配置
可以使用 `dwarfeng-datamark` 命名空间装配 `DatamarkHandler`、`DatamarkQosHandler` 与 `DatamarkQosService`。
在项目的 `application-context-datamark.xml` 中追加配置,示例如下:
```xml
```
`handler` 元素可通过 `handler-name`、`resource-url`、`resource-charset`、`update-allowed`
指定处理器 bean 名称、资源地址、资源字符集和是否允许更新。
`qos` 元素可通过 `qos-handler-name`、`qos-service-name`、`sem-ref`
指定 QoS 处理器 bean 名称、QoS 服务 bean 名称和 `ServiceExceptionMapper` 引用。
### 任意数量的实例模式
自行设计 `DatamarkHandler` 的工厂类,调用相关工厂方法生成 `DatamarkHandlerImpl` 实例。
需要注意的是:使用者需要自行管理 `DatamarkHandlerImpl` 实例及其依赖的 `ApplicationContext` 与 `DatamarkConfig`。