首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >OneCode 3.0 领域模型API速查手册:DSMFactory核心接口详解

OneCode 3.0 领域模型API速查手册:DSMFactory核心接口详解

原创
作者头像
OneCode
发布2025-07-14 07:48:09
发布2025-07-14 07:48:09
1770
举报
文章被收录于专栏:OneCode 低代码OneCode 低代码

前言:OneCode领域模型引擎架构

OneCode 3.0的领域模型(DSM)引擎是系统核心组件之一,负责领域模型的创建、编译、管理和运行时调度。DSMFactory作为领域模型引擎的入口类,提供了统一的接口来操作领域实例(DomainInst)、视图实例(ViewInst)和资源库实例(RepositoryInst),并协调视图管理器(ViewManager)、资源库管理器(RepositoryManager)和聚合管理器(AggregationManager)的协同工作。

本手册将详细介绍DSMFactory的核心API,帮助开发者快速掌握领域模型的创建、编译、管理和扩展方法。

一、DSMFactory基础接口

1.1 实例获取

方法签名

描述

参数

返回值

使用场景

public static DSMFactory getInstance()

获取默认空间的DSMFactory实例

DSMFactory

全局单例访问,适用于大多数场景

public static DSMFactory getInstance(MySpace space)

获取指定空间的DSMFactory实例

space: 工作空间对象

DSMFactory

多租户或多空间环境下使用

代码示例

代码语言:java
复制
// 获取默认空间的DSMFactory实例
DSMFactory dsmFactory = DSMFactory.getInstance();

// 获取指定空间的DSMFactory实例
MySpace space = new MySpace("user_workspace");
DSMFactory dsmFactory = DSMFactory.getInstance(space);

1.2 基础管理

方法签名

描述

参数

返回值

使用场景

public void reload()

重新加载所有管理器

void

配置变更后刷新系统状态

public void clear()

清除所有缓存数据

void

系统重置或资源释放

public void commitProjectConfig(String projectVersionName)

提交项目配置

projectVersionName: 项目版本名称

void

保存项目配置变更

代码示例

代码语言:java
复制
// 重新加载所有管理器
dsmFactory.reload();

// 提交项目配置变更
dsmFactory.commitProjectConfig("my_project_v1.0");

二、项目初始化与编译

2.1 项目初始化

方法签名

描述

参数

返回值

使用场景

public void initEsd()

初始化ESD项目

void

系统启动时初始化管理员项目

public void initUser()

初始化用户项目

void

用户登录后初始化其可见项目

public void initDsm()

初始化DSM项目

void

初始化领域模型项目

public void initProject(INProjectVersion project)

初始化指定项目

project: 项目版本对象

void

初始化单个项目

代码示例

代码语言:java
复制
// 初始化DSM类型项目
dsmFactory.initDsm();

// 初始化指定项目版本
INProject project = projectCacheManager.getProjectByName("my_project");
INProjectVersion version = project.getActiviteVersion();
dsmFactory.initProject(version);

2.2 项目编译

方法签名

描述

参数

返回值

使用场景

public void compile()

编译所有公共项目

void

批量编译系统中的公共项目

public void compileProject(String projectVersionName)

编译指定项目

projectVersionName: 项目版本名称

void

编译单个项目

public void compileRepositoryInst(RepositoryInst repositoryInst, ChromeProxy chrome)

编译资源库实例

repositoryInst: 资源库实例 chrome: 日志代理

void

编译资源库中的Java源码

public void compileDomainInst(DomainInst dsmInst, ChromeProxy chrome)

编译领域实例

dsmInst: 领域实例 chrome: 日志代理

void

编译领域模型中的Java源码

public void compileViewInst(ViewInst viewInst, ChromeProxy chrome)

编译视图实例

viewInst: 视图实例 chrome: 日志代理

void

编译视图模板中的Java源码

代码示例

代码语言:java
复制
// 编译指定项目版本
dsmFactory.compileProject("my_project_v1.0");

// 编译资源库实例
RepositoryInst repo = repositoryManager.getProjectRepository("my_project_v1.0");
ChromeProxy chrome = new LogSetpLog();
dsmFactory.compileRepositoryInst(repo, chrome);

三、领域实例(DomainInst)管理

3.1 领域实例创建与初始化

方法签名

描述

参数

返回值

使用场景

public DomainInst newDomain(String projectVersionName, UserSpace space)

创建新领域实例

projectVersionName: 项目版本名称 space: 用户空间

DomainInst

创建自定义领域模型

public DomainInst createDefaultDomain(String projectVersionName, UserSpace space)

创建默认领域实例

projectVersionName: 项目版本名称 space: 用户空间

DomainInst

创建系统默认配置的领域模型

private DomainInst initDefaultDomain(RepositoryInst repositoryInst)

初始化默认领域

repositoryInst: 资源库实例

DomainInst

从资源库初始化默认领域

代码示例

代码语言:java
复制
// 创建新领域实例
DomainInst domain = dsmFactory.newDomain("my_project_v1.0", UserSpace.USER);

domain.setName("订单管理领域");
domain.setDesc("处理订单创建、支付和发货流程");

3.2 领域实例查询

方法签名

描述

参数

返回值

使用场景

public DomainInst getDomainInstById(String domainId)

通过ID获取领域实例

domainId: 领域ID

DomainInst

根据ID查询特定领域

public DomainInst getDomainInstById(String domainId, String projectVersionName)

通过ID和项目获取领域实例

domainId: 领域ID projectVersionName: 项目版本名称

DomainInst

多项目环境下查询领域

public List<DomainInst> getAllDomainInst(String projectVersionName)

获取项目所有领域实例

projectVersionName: 项目版本名称

List<DomainInst>

列出项目中的所有领域

public List<DomainInst> getAllUserDomainInst(String projectVersionName)

获取用户所有领域实例

projectVersionName: 项目版本名称

List<DomainInst>

列出用户可访问的所有领域

public DomainInst getDefaultDomain(String projectVersionName, UserSpace userSpace)

获取默认领域实例

projectVersionName: 项目版本名称 userSpace: 用户空间

DomainInst

获取系统默认领域

代码示例

代码语言:java
复制
// 获取项目所有领域实例
List<DomainInst> domains = dsmFactory.getAllDomainInst("my_project_v1.0");

// 遍历并打印领域信息
for (DomainInst domain : domains) {
    System.out.println("领域名称: " + domain.getName() + ", ID: " + domain.getDomainId());
}

3.3 领域实例操作

方法签名

描述

参数

返回值

使用场景

public void clearDomain(DomainInst domainInst, ChromeProxy chrome)

清除领域实例缓存

domainInst: 领域实例 chrome: 日志代理

void

领域模型变更后刷新缓存

public void deleteDomainInst(String domainId)

通过ID删除领域实例

domainId: 领域ID

void

删除指定领域

public void deleteDomainInst(DomainInst domainInst)

删除领域实例

domainInst: 领域实例

void

删除领域及其关联资源

public void clearProject(String projectVersionName)

清除项目所有领域

projectVersionName: 项目版本名称

void

清空项目中的所有领域

代码示例

代码语言:java
复制
// 删除指定领域实例
String domainId = "domain_123456";
dsmFactory.deleteDomainInst(domainId);

// 清空项目所有领域
dsmFactory.clearProject("my_project_v1.0");

四、视图实例(ViewInst)管理

4.1 视图实例创建与编译

方法签名

描述

参数

返回值

使用场景

public ViewInst createView(DomainInst domainInst)

创建视图实例

domainInst: 领域实例

ViewInst

为领域创建新视图

private ViewInst initDefaultView(RepositoryInst repositoryInst)

初始化默认视图

repositoryInst: 资源库实例

ViewInst

从资源库初始化默认视图

public void reBuildTableView(RepositoryInst repositoryInst, UserSpace userSpace, ChromeProxy chrome)

重建表视图

repositoryInst: 资源库实例 userSpace: 用户空间 chrome: 日志代理

void

重新生成表视图

代码示例

代码语言:java
复制
// 为领域创建视图
DomainInst domain = dsmFactory.getDefaultDomain("my_project_v1.0", UserSpace.USER);
ViewInst view = dsmFactory.createView(domain);

// 设置视图属性
view.setName("订单列表视图");
view.setDesc("展示所有订单信息的表格视图");

4.2 视图实例查询

方法签名

描述

参数

返回值

使用场景

public ViewInst getViewInstById(String viewInstId)

通过ID获取视图实例

viewInstId: 视图ID

ViewInst

查询特定视图

代码示例

代码语言:java
复制
// 获取视图实例
ViewInst view = dsmFactory.getViewInstById("view_7890");

// 获取视图关联的Java源码
List<JavaSrcBean> srcBeans = view.getRootPackage().listAllFile();

五、资源库实例(RepositoryInst)管理

5.1 资源库构建与编译

方法签名

描述

参数

返回值

使用场景

public void buildProject(RepositoryInst repositoryInst, ChromeProxy chrome)

构建项目资源库

repositoryInst: 资源库实例 chrome: 日志代理

void

完整构建资源库、领域和视图

public void genRepository(RepositoryInst repositoryInst, UserSpace userSpace, ChromeProxy chrome)

生成资源库

repositoryInst: 资源库实例 userSpace: 用户空间 chrome: 日志代理

void

生成资源库代码

代码示例

代码语言:java
复制
// 构建项目资源库
RepositoryInst repo = repositoryManager.getProjectRepository("my_project_v1.0");
ChromeProxy chrome = new LogSetpLog();
dsmFactory.buildProject(repo, chrome);

六、动态编译接口

6.1 动态编译方法

方法签名

描述

参数

返回值

使用场景

public List<Class> dynDomainCompile(List<JavaSrcBean> javaSrcBeans, DomainInst domainInst, ChromeProxy chrome)

动态编译领域类

javaSrcBeans: Java源码列表 domainInst: 领域实例 chrome: 日志代理

List<Class>

动态编译领域模型类

public List<Class> dynViewCompile(List<JavaSrcBean> javaSrcBeans, String projectName, ChromeProxy chrome)

动态编译视图类

javaSrcBeans: Java源码列表 projectName: 项目名称 chrome: 日志代理

List<Class>

动态编译视图模板类

public List<Class> dynRepositoryCompile(List<JavaSrcBean> javaSrcBeans, String projectName, ChromeProxy chrome)

动态编译资源库类

javaSrcBeans: Java源码列表 projectName: 项目名称 chrome: 日志代理

List<Class>

动态编译资源库类

public Class dynCompile(JavaSrcBean srcBean, String projectName, ChromeProxy chrome)

动态编译单个类

srcBean: Java源码对象 projectName: 项目名称 chrome: 日志代理

Class

动态编译单个Java源文件

代码示例

代码语言:java
复制
// 动态编译Java源码
JavaSrcBean srcBean = new JavaSrcBean();
srcBean.setClassName("com.ds.esd.domain.Order");
srcBean.setContent(getJavaSourceCode()); // 获取Java源代码字符串

Class compiledClass = dsmFactory.dynCompile(srcBean, "my_project_v1.0", new LogSetpLog());
System.out.println("编译成功: " + compiledClass.getName());

七、管理器访问接口

方法签名

描述

返回值

使用场景

public ViewManager getViewManager()

获取视图管理器

ViewManager

直接操作视图管理器

public RepositoryManager getRepositoryManager()

获取资源库管理器

RepositoryManager

直接操作资源库管理器

public AggregationManager getAggregationManager()

获取聚合管理器

AggregationManager

直接操作聚合管理器

public BuildFactory getBuildFactory()

获取构建工厂

BuildFactory

直接操作构建工厂

public CtVfsService getVfsClient()

获取VFS客户端

CtVfsService

操作虚拟文件系统

代码示例

代码语言:java
复制
// 获取视图管理器
ViewManager viewManager = dsmFactory.getViewManager();

// 使用视图管理器查询所有视图
List<ViewInst> views = viewManager.getViewInstList("my_project_v1.0");

八、高级功能接口

8.1 DSM实例通用访问

方法签名

描述

参数

返回值

使用场景

public DSMInst getDSMInst(String dsmId, DSMType dsmType)

获取DSM实例

dsmId: DSM实例ID dsmType: DSM类型(AGGREGATION/VIEW/REPOSITORY)

DSMInst

通用接口访问不同类型DSM实例

代码示例

代码语言:java
复制
// 获取AGGREGATION类型的DSM实例
DSMInst dsmInst = dsmFactory.getDSMInst("domain_123456", DSMType.AGGREGATION);
if (dsmInst instanceof DomainInst) {
    DomainInst domain = (DomainInst) dsmInst;
    // 操作领域实例
}

8.2 自定义视图配置

方法签名

描述

参数

返回值

使用场景

public void saveCustomViewAPI(CustomViewBean viewBean)

保存自定义视图API配置

viewBean: 自定义视图Bean

void

保存视图API配置

public void saveCustomViewEntity(CustomViewBean viewBean)

保存自定义视图实体配置

viewBean: 自定义视图Bean

void

保存视图实体配置

public void saveCustomViewBean(CustomViewBean viewBean)

保存自定义视图配置

viewBean: 自定义视图Bean

void

保存完整视图配置

代码示例

代码语言:java
复制
// 保存自定义视图配置
CustomViewBean viewBean = new CustomViewBean();
viewBean.setDomainId("domain_123456");
viewBean.setViewClassName("com.ds.esd.view.OrderView");
viewBean.setEntityClassName("com.ds.esd.entity.Order");

dsmFactory.saveCustomViewBean(viewBean);

九、辅助工具接口

方法签名

描述

参数

返回值

使用场景

public String getDefaultProjectName()

获取默认项目名称

String

获取当前上下文默认项目

public ChromeProxy getCurrChromeDriver()

获取当前日志代理

ChromeProxy

获取当前上下文的日志代理

代码示例

代码语言:java
复制
// 获取默认项目名称
String defaultProject = dsmFactory.getDefaultProjectName();
System.out.println("当前默认项目: " + defaultProject);

// 获取当前日志代理
ChromeProxy chrome = dsmFactory.getCurrChromeDriver();
chrome.log("操作成功完成");

十、异常处理与最佳实践

10.1 常见异常处理

DSMFactory操作可能抛出JDSException,建议使用try-catch块捕获并处理:

代码语言:java
复制
try {
    DomainInst domain = dsmFactory.newDomain("my_project_v1.0", UserSpace.USER);
    // 领域操作
} catch (JDSException e) {
    logger.error("创建领域失败: " + e.getMessage(), e);
    // 异常处理逻辑
}

10.2 性能优化建议

  1. 批量操作优先:尽量使用批量编译和初始化方法,减少单独操作
  2. 合理使用缓存:领域模型编译后会缓存,无需重复编译
  3. 资源释放:不再使用的领域实例可调用clear()方法释放资源
  4. 异步处理:复杂编译操作可放入后台线程执行
代码语言:java
复制
// 异步编译项目
new Thread(() -> {
    try {
        dsmFactory.compileProject("large_project_v1.0");
    } catch (Exception e) {
        e.printStackTrace();
    }
}).start();

总结

DSMFactory作为OneCode 3.0领域模型引擎的核心入口,提供了全面的API来管理领域模型的整个生命周期。本手册详细介绍了DSMFactory的实例管理、项目初始化与编译、领域实例操作、视图管理、资源库管理、动态编译等核心功能。

通过合理使用这些API,开发者可以高效地创建、管理和扩展领域模型,构建灵活且强大的业务系统。建议结合实际业务场景选择合适的API,并遵循最佳实践以获得最佳性能。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:OneCode领域模型引擎架构
  • 一、DSMFactory基础接口
    • 1.1 实例获取
    • 1.2 基础管理
  • 二、项目初始化与编译
    • 2.1 项目初始化
    • 2.2 项目编译
  • 三、领域实例(DomainInst)管理
    • 3.1 领域实例创建与初始化
    • 3.2 领域实例查询
    • 3.3 领域实例操作
  • 四、视图实例(ViewInst)管理
    • 4.1 视图实例创建与编译
    • 4.2 视图实例查询
  • 五、资源库实例(RepositoryInst)管理
    • 5.1 资源库构建与编译
  • 六、动态编译接口
    • 6.1 动态编译方法
  • 七、管理器访问接口
  • 八、高级功能接口
    • 8.1 DSM实例通用访问
    • 8.2 自定义视图配置
  • 九、辅助工具接口
  • 十、异常处理与最佳实践
    • 10.1 常见异常处理
    • 10.2 性能优化建议
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档