
OneCode 3.0的领域模型(DSM)引擎是系统核心组件之一,负责领域模型的创建、编译、管理和运行时调度。DSMFactory作为领域模型引擎的入口类,提供了统一的接口来操作领域实例(DomainInst)、视图实例(ViewInst)和资源库实例(RepositoryInst),并协调视图管理器(ViewManager)、资源库管理器(RepositoryManager)和聚合管理器(AggregationManager)的协同工作。
本手册将详细介绍DSMFactory的核心API,帮助开发者快速掌握领域模型的创建、编译、管理和扩展方法。
方法签名 | 描述 | 参数 | 返回值 | 使用场景 |
|---|---|---|---|---|
| 获取默认空间的DSMFactory实例 | 无 | DSMFactory | 全局单例访问,适用于大多数场景 |
| 获取指定空间的DSMFactory实例 |
| DSMFactory | 多租户或多空间环境下使用 |
代码示例:
// 获取默认空间的DSMFactory实例
DSMFactory dsmFactory = DSMFactory.getInstance();
// 获取指定空间的DSMFactory实例
MySpace space = new MySpace("user_workspace");
DSMFactory dsmFactory = DSMFactory.getInstance(space);方法签名 | 描述 | 参数 | 返回值 | 使用场景 |
|---|---|---|---|---|
| 重新加载所有管理器 | 无 | void | 配置变更后刷新系统状态 |
| 清除所有缓存数据 | 无 | void | 系统重置或资源释放 |
| 提交项目配置 |
| void | 保存项目配置变更 |
代码示例:
// 重新加载所有管理器
dsmFactory.reload();
// 提交项目配置变更
dsmFactory.commitProjectConfig("my_project_v1.0");方法签名 | 描述 | 参数 | 返回值 | 使用场景 |
|---|---|---|---|---|
| 初始化ESD项目 | 无 | void | 系统启动时初始化管理员项目 |
| 初始化用户项目 | 无 | void | 用户登录后初始化其可见项目 |
| 初始化DSM项目 | 无 | void | 初始化领域模型项目 |
| 初始化指定项目 |
| void | 初始化单个项目 |
代码示例:
// 初始化DSM类型项目
dsmFactory.initDsm();
// 初始化指定项目版本
INProject project = projectCacheManager.getProjectByName("my_project");
INProjectVersion version = project.getActiviteVersion();
dsmFactory.initProject(version);方法签名 | 描述 | 参数 | 返回值 | 使用场景 |
|---|---|---|---|---|
| 编译所有公共项目 | 无 | void | 批量编译系统中的公共项目 |
| 编译指定项目 |
| void | 编译单个项目 |
| 编译资源库实例 |
| void | 编译资源库中的Java源码 |
| 编译领域实例 |
| void | 编译领域模型中的Java源码 |
| 编译视图实例 |
| void | 编译视图模板中的Java源码 |
代码示例:
// 编译指定项目版本
dsmFactory.compileProject("my_project_v1.0");
// 编译资源库实例
RepositoryInst repo = repositoryManager.getProjectRepository("my_project_v1.0");
ChromeProxy chrome = new LogSetpLog();
dsmFactory.compileRepositoryInst(repo, chrome);方法签名 | 描述 | 参数 | 返回值 | 使用场景 |
|---|---|---|---|---|
| 创建新领域实例 |
| DomainInst | 创建自定义领域模型 |
| 创建默认领域实例 |
| DomainInst | 创建系统默认配置的领域模型 |
| 初始化默认领域 |
| DomainInst | 从资源库初始化默认领域 |
代码示例:
// 创建新领域实例
DomainInst domain = dsmFactory.newDomain("my_project_v1.0", UserSpace.USER);
domain.setName("订单管理领域");
domain.setDesc("处理订单创建、支付和发货流程");方法签名 | 描述 | 参数 | 返回值 | 使用场景 |
|---|---|---|---|---|
| 通过ID获取领域实例 |
| DomainInst | 根据ID查询特定领域 |
| 通过ID和项目获取领域实例 |
| DomainInst | 多项目环境下查询领域 |
| 获取项目所有领域实例 |
| List<DomainInst> | 列出项目中的所有领域 |
| 获取用户所有领域实例 |
| List<DomainInst> | 列出用户可访问的所有领域 |
| 获取默认领域实例 |
| DomainInst | 获取系统默认领域 |
代码示例:
// 获取项目所有领域实例
List<DomainInst> domains = dsmFactory.getAllDomainInst("my_project_v1.0");
// 遍历并打印领域信息
for (DomainInst domain : domains) {
System.out.println("领域名称: " + domain.getName() + ", ID: " + domain.getDomainId());
}方法签名 | 描述 | 参数 | 返回值 | 使用场景 |
|---|---|---|---|---|
| 清除领域实例缓存 |
| void | 领域模型变更后刷新缓存 |
| 通过ID删除领域实例 |
| void | 删除指定领域 |
| 删除领域实例 |
| void | 删除领域及其关联资源 |
| 清除项目所有领域 |
| void | 清空项目中的所有领域 |
代码示例:
// 删除指定领域实例
String domainId = "domain_123456";
dsmFactory.deleteDomainInst(domainId);
// 清空项目所有领域
dsmFactory.clearProject("my_project_v1.0");方法签名 | 描述 | 参数 | 返回值 | 使用场景 |
|---|---|---|---|---|
| 创建视图实例 |
| ViewInst | 为领域创建新视图 |
| 初始化默认视图 |
| ViewInst | 从资源库初始化默认视图 |
| 重建表视图 |
| void | 重新生成表视图 |
代码示例:
// 为领域创建视图
DomainInst domain = dsmFactory.getDefaultDomain("my_project_v1.0", UserSpace.USER);
ViewInst view = dsmFactory.createView(domain);
// 设置视图属性
view.setName("订单列表视图");
view.setDesc("展示所有订单信息的表格视图");方法签名 | 描述 | 参数 | 返回值 | 使用场景 |
|---|---|---|---|---|
| 通过ID获取视图实例 |
| ViewInst | 查询特定视图 |
代码示例:
// 获取视图实例
ViewInst view = dsmFactory.getViewInstById("view_7890");
// 获取视图关联的Java源码
List<JavaSrcBean> srcBeans = view.getRootPackage().listAllFile();方法签名 | 描述 | 参数 | 返回值 | 使用场景 |
|---|---|---|---|---|
| 构建项目资源库 |
| void | 完整构建资源库、领域和视图 |
| 生成资源库 |
| void | 生成资源库代码 |
代码示例:
// 构建项目资源库
RepositoryInst repo = repositoryManager.getProjectRepository("my_project_v1.0");
ChromeProxy chrome = new LogSetpLog();
dsmFactory.buildProject(repo, chrome);方法签名 | 描述 | 参数 | 返回值 | 使用场景 |
|---|---|---|---|---|
| 动态编译领域类 |
| List<Class> | 动态编译领域模型类 |
| 动态编译视图类 |
| List<Class> | 动态编译视图模板类 |
| 动态编译资源库类 |
| List<Class> | 动态编译资源库类 |
| 动态编译单个类 |
| Class | 动态编译单个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());方法签名 | 描述 | 返回值 | 使用场景 |
|---|---|---|---|
| 获取视图管理器 | ViewManager | 直接操作视图管理器 |
| 获取资源库管理器 | RepositoryManager | 直接操作资源库管理器 |
| 获取聚合管理器 | AggregationManager | 直接操作聚合管理器 |
| 获取构建工厂 | BuildFactory | 直接操作构建工厂 |
| 获取VFS客户端 | CtVfsService | 操作虚拟文件系统 |
代码示例:
// 获取视图管理器
ViewManager viewManager = dsmFactory.getViewManager();
// 使用视图管理器查询所有视图
List<ViewInst> views = viewManager.getViewInstList("my_project_v1.0");方法签名 | 描述 | 参数 | 返回值 | 使用场景 |
|---|---|---|---|---|
| 获取DSM实例 |
| DSMInst | 通用接口访问不同类型DSM实例 |
代码示例:
// 获取AGGREGATION类型的DSM实例
DSMInst dsmInst = dsmFactory.getDSMInst("domain_123456", DSMType.AGGREGATION);
if (dsmInst instanceof DomainInst) {
DomainInst domain = (DomainInst) dsmInst;
// 操作领域实例
}方法签名 | 描述 | 参数 | 返回值 | 使用场景 |
|---|---|---|---|---|
| 保存自定义视图API配置 |
| void | 保存视图API配置 |
| 保存自定义视图实体配置 |
| void | 保存视图实体配置 |
| 保存自定义视图配置 |
| void | 保存完整视图配置 |
代码示例:
// 保存自定义视图配置
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);方法签名 | 描述 | 参数 | 返回值 | 使用场景 |
|---|---|---|---|---|
| 获取默认项目名称 | 无 | String | 获取当前上下文默认项目 |
| 获取当前日志代理 | 无 | ChromeProxy | 获取当前上下文的日志代理 |
代码示例:
// 获取默认项目名称
String defaultProject = dsmFactory.getDefaultProjectName();
System.out.println("当前默认项目: " + defaultProject);
// 获取当前日志代理
ChromeProxy chrome = dsmFactory.getCurrChromeDriver();
chrome.log("操作成功完成");DSMFactory操作可能抛出JDSException,建议使用try-catch块捕获并处理:
try {
DomainInst domain = dsmFactory.newDomain("my_project_v1.0", UserSpace.USER);
// 领域操作
} catch (JDSException e) {
logger.error("创建领域失败: " + e.getMessage(), e);
// 异常处理逻辑
}// 异步编译项目
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 删除。