【后端】项目开发后端知识要点地图

目录

工程结构篇

协议篇

基本功能及配置篇

Dubbo

Nacos

OSS

Trigger/Async/Schedule

Excel导入/导出(file)

Expression(表达式)

ShardingJDBC(分库分表)

Elasticsearch(ES)

数据库方言配置(Dialect)

其他功能使用文档

特定场景解决方案

工程部署

后端部署

设计器部署

其他环境部署

可视化调试工具

协同开发

工作流

数据可视化运行时

界面设计器

流程设计器

数据可视化

其他

QA

Oinone社区 作者:张博昊原创文章,如若转载,请注明出处:https://doc.oinone.top/backend/18493.html

访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验

Like (0)
张博昊's avatar张博昊数式管理员
Previous 2024年10月23日 am10:07
Next 2024年10月23日 pm2:37

相关推荐

  • action 和 function 有什么区别

    在 Oinone(开源低代码 / 企业应用开发平台) 里,Action 和 Function 都是“可被调用的逻辑单元”,但它们的定位和使用场景不同。可以简单理解为: Function = 纯逻辑函数(偏后端能力) Action = 面向业务操作的动作(偏应用行为 / UI触发) 下面给你详细对比一下。 1️⃣ Function:函数(逻辑能力) Function 更像是一个 可复用的服务方法。 特点 通常是 纯逻辑处理 不直接绑定 UI 可以被 Action / Service / 其他 Function 调用 用来封装 业务计算或工具逻辑 常见用途 比如: 价格计算 数据校验 数据转换 调用第三方 API 复杂业务规则 示例 @Function(openLevel = FunctionOpenEnum.API) @Function.Advanced(type = FunctionTypeEnum.QUERY) public TradeOrder computePrice(TradeOrder data) { return data; } 用途: 订单金额计算逻辑 然后可能被多个地方调用: Action -> 调用 Function Service -> 调用 Function Workflow -> 调用 Function 📌 核心:可复用业务逻辑 2️⃣ Action:动作(业务操作) Action 是一个 业务动作,通常是 用户触发的行为。 特点 通常绑定 UI 可以在 按钮 / 菜单 / API / 工作流 中触发 通常操作 模型数据 可以调用 Function 常见用途 例如: 创建订单 提交审批 发布文章 批量删除 导入数据 示例 @Action public void submitOrder(Order order){ order.setStatus("SUBMITTED"); } UI 可能是: 订单详情页 [提交订单] 按钮 点击按钮 → 调用 Action。 📌 核心:业务行为入口 3️⃣ 核心区别总结 维度 Action Function 定位 业务动作 逻辑函数 是否绑定 UI 通常是 否 是否直接给用户操作 是 否 是否可复用 一般 很高 是否操作模型 常见 不一定 调用关系 可调用 Function 不调用 Action 4️⃣ 调用关系(典型架构) 通常推荐的结构: UI按钮 ↓ Action(业务入口) ↓ Function(业务逻辑) ↓ DAO / Repository 例如: 提交订单按钮 ↓ submitOrderAction ↓ checkInventoryFunction calcPriceFunction createOrderFunction 这样: Action 只负责 流程 Function 负责 逻辑 代码会更清晰。 5️⃣…

    2026年3月12日
    1.1K00
  • 前端文章大纲

    前端必学课程目录 分类 内容 描述 基础篇 自定义 Mask PC端、移动端默认Mask模板 PC端、移动端默认Mask模板 自定义布局 自定义视图 自定义布局、视图本质上是一样的 PC端默认布局模板 PC端默认布局模板 移动端端默认布局模板 移动端端默认布局模板 自定义表单字段 自定义表格字段 自定义动作 快速查询并替换默认组件 前端自定义请求入门版 自定义 Graphql 请求 进阶篇 ts + vue 的写法 熟悉 Oinone 的前端开发 注册条件集合 如果你不知道 SPI 应该如何注册,可以参考这篇文章的注册条件集合章节 自定义视图、字段如何获取界面设计的配置 比如自定义了视图或者字段,想要获取界面设计器配置的动作或者其他配置 自定义视图、字段调用界面设计器配置的按钮(包含权限控制) 动态执行动作 自定义视图、字段只修改 UI,不修改数据和逻辑 所有的自定义视图都可以参考这篇文章 自定义视图部分区域渲染设计器的配置 自定义视图部分区域渲染对应设计器配置的与字段、动作 自定义视图内部渲染动态视图 一部分是自定义的视图,另外一部分是其他页面对应的视图 上下文 理解上下文概念 主视图数据和当前视图数据使用介绍 与上篇文章结合 调试篇 调试工具 学会使用平台默认的调试工具 调试工具 通过控制台查看当前视图元数据信息 调试工具 学会浏览器调试 原理篇 SPI 注册 + 渲染原理 了解 SPI 的注册以及渲染原理 移动端入门 Oinone 移动端快速入门 前端常见问题集合目录 分类 内容 描述 表单 表单字段 自定义字段提交的值 表格 如何自定义表格单元格样式 列表视图支持表格、卡片切换 一个视图,多种形态展示,通过切换按钮的方式切换成不同的UI展示 表格如何支持表尾合计计算 自定义表格支持合并或列、表头分组 表格字段 如何在表格的字段内添加动作 动作 如何自定义点击导出动作绑定指定模板 打开弹窗/抽屉的动作如何在弹窗关闭后扩展逻辑 列表页内上下文无关的动作如何添加自定义上下文 提交数据动作如何把弹窗内的数据完全返回 动作跳转页面的时候携带参数 表格页自定义按钮如何获取搜索区域的查询条件 左树右表 界面设计器教程:如何配置左树右表布局 自定义左树右表视图中的树 左树右表视图中的树默认选中第一行 表格上方动作点击时获取左侧树的数据 树型表格全量加载数据如何处理 工作流 如何添加工作流运行时依赖 如何自定义工作流的待办任务列表 样式相关 如何自定义指定页面的样式 主题设置-设置表格全局样式 弹窗、抽屉 弹窗生命周期实践 全局API 获取当前用户信息以及语言 前端动作API 其他问题 自定义字段样式 如何在多标签页切换时自动刷新视图 前端密码加密 Oinone 如何接入乾坤微前端 前端发布接入jenkins 前端日期组件国际化支持方案

    2024年11月8日
    2.7K01
  • JSON转换工具类

    JSON转换工具类 JSON转对象 pro.shushi.pamirs.meta.util.JsonUtils JSON转模型 pro.shushi.pamirs.framework.orm.json.PamirsDataUtils

    2023年11月1日
    3.1K00
  • 扩展操作日志字段,实现操作日志界面显示自定义字段

    注:该功能在pamirs-core 4.3.27 / 4.7.8.12以上版本可用 在模块依赖里新增DataAuditModule.MODULE_MODULE模块依赖。 @Module( name = DemoModule.MODULE_NAME, dependencies = { CommonModule.MODULE_MODULE, DataAuditModule.MODULE_MODULE }, displayName = “****”, version = “1.0.0” ) 继承OperationBody模型,设置需要在操作日志中显示的字段,并重写clone方法,设置自定义字段值。用于在计入日志处传递参数。 public class MyOperationBody extends OperationBody { public MyOperationBody(String operationModel, String operationName) { super(operationModel, operationName); } private String itemNames; public String getItemNames() { return itemNames; } public void setItemNames(String itemNames) { this.itemNames = itemNames; } @Override public OperationBody clone() { //设置自定义字段值 MyOperationBody body = OperationBody.transfer(this, new MyOperationBody(this.getOperationModel(), this.getOperationName())); body.setItemNames(this.getItemNames()); return body; } } 继承OperationLog模型,新增需要在操作日志中显示的字段。用于界面展示该自定义字段。 @Model.model(MyOperationLog.MODEL_MODEL) @Model(displayName = “自定义操作日志”, labelFields = {“itemNames”}) public class MyOperationLog extends OperationLog { public static final String MODEL_MODEL = “operation.MyOperationLog”; @Field(displayName = “新增日志字段”) @Field.String private String itemNames; } 定义一个常量 public interface OperationLogConstants { String MY_SCOPE = “MY_SCOPE”; } 在计入日志处,构造出MyOperationBody对象,向该对象中设置自定义日志字段。构造OperationLogBuilder对象并设置scope的值,用于跳转自定义服务实现。 MyOperationBody body = new MyOperationBody(CustomerCompanyUserProxy.MODEL_MODEL, CustomerCompanyUserProxyDataAudit.UPDATE); body.setItemNames(“新增日志字段”); OperationLogBuilder builder = OperationLogBuilder.newInstance(body); //设置一个scope,用于跳转自定义服务实现.OperationLogConstants.MY_SCOPE是常量,请自行定义 builder.setScope(OperationLogConstants.MY_SCOPE); //记录日志 builder.record(data.queryByPk(), data); 实现OperationLogService接口,加上@SPI.Service()注解,并设置常量,一般为类名。定义scope(注意:保持和计入日志处传入的scope值一致),用于计入日志处找到该自定义服务实现。根据逻辑重写父类中方法,便可以扩展操作日志,实现自定义记录了。 @Slf4j @Service @SPI.Service(“myOperationLogServiceImpl”) public class MyOperationLogServiceImpl< T extends D > extends OperationLogServiceImpl< T > implements OperationLogService< T >{ //定义scope,用于计入日志处找到该自定义服务实现 private static final String[] MY_SCOPE = new String[]{OperationLogConstants.MY_SCOPE}; @Override public String[] scopes() { return MY_SCOPE; } //此方法用于创建操作日志 @Override protected OperationLog createOperationLog(OperationBody body, OperationLogConfig config) { MyOperationBody body1 = (MyOperationBody)…

    2024年6月27日 • 后端
    1.9K00
  • 前端初阶知识点讲解

    相关文章推荐: 前端文章大纲:https://doc.oinone.top/shu-shi-oinone-xue-yuan/xiang-mu-shi-jian-qian-duan-kai-fa-chong-dian-zhan/qian-duan-ji-chu/19196.html 【前端】项目开发前端知识要点地图:https://doc.oinone.top/frontend/51.html

    2024年10月8日
    1.2K00

Leave a Reply

Please Login to Comment