当前位置: 首页 > news >正文

OneCode可视化动作参数类型详解(一):核心枚举类ActionTypeEnum深度解析

OneCode可视化动作参数类型详解(一):核心枚举类ActionTypeEnum深度解析

在OneCode低代码开发平台中,动作(Action)是连接用户交互与业务逻辑的核心桥梁。动作的执行方式由type参数控制,而这个参数的值来自于ActionTypeEnum枚举类的定义。本文将深入剖析这个枚举类,揭开OneCode动作执行机制的底层原理。

一、ActionTypeEnum枚举类概述

ActionTypeEnum是OneCode中定义动作执行类型的核心枚举类,它位于net.ooder.esd.annotation.event包下。从代码分析中,我们可以看到该枚举类定义了多种动作执行方式,每种方式都有特定的应用场景和执行机制。在这里插入图片描述

"listItems": [// 枚举值定义{"bindClass": [],"caption": "模块间","id": "module","name": "模块间","pattern": "","tagVar": {"name": "module","clazz": "net.ooder.esd.annotation.event.ActionTypeEnum"}},{"bindClass": [],"caption": "外部页面调用","id": "otherModuleCall","name": "外部页面调用","pattern": "","tagVar": {"name": "otherModuleCall","clazz": "net.ooder.esd.annotation.event.ActionTypeEnum"}},// 更多枚举值...
],
"enumClass": "net.ooder.esd.annotation.event.ActionTypeEnum",
"id": "type",
"type": "listbox"

二、ActionTypeEnum枚举值详解

在这里插入图片描述

1. module:模块间调用

类型含义:用于在当前应用内的不同模块之间进行方法调用和数据传递。

应用场景

  • 当需要在一个模块中调用另一个模块提供的功能时
  • 跨模块数据共享和业务逻辑复用
  • 实现复杂业务流程的模块化组装

执行机制

  • 基于模块路径定位目标模块
  • 通过反射机制调用指定方法
  • 支持参数传递和结果返回
  • 维持调用上下文的一致性

代码示例

{"type": "module","target": "dsm.agg.common.utils.StringUtils","method": "format","args": ["Hello, {0}", "World"],"redirection": "page::resultField"
}

2. otherModuleCall:外部页面调用

类型含义:用于调用当前应用外部的页面或服务。
在这里插入图片描述

应用场景

  • 集成第三方系统功能
  • 跨应用数据交互
  • 打开独立的功能页面

执行机制

  • 支持URL重定向
  • 可以传递查询参数
  • 支持iframe嵌入方式
  • 提供回调机制处理外部页面返回结果

代码示例

{"type": "otherModuleCall","target": "http://external-system.com/api/function","method": "open","args": ["param1=value1&param2=value2"],"redirection": "other:callback:handleResult"
}

3. other:方法调用

类型含义:用于调用当前上下文环境中的方法。
在这里插入图片描述

应用场景

  • 调用页面内组件的方法
  • 执行自定义JavaScript函数
  • 触发UI交互事件

执行机制

  • 基于组件ID或路径定位目标对象
  • 直接调用目标对象的方法
  • 支持实时参数计算
  • 执行结果可直接用于后续操作

代码示例

{"type": "other","target": "page.formMain.submitBtn","method": "disable","args": [true]
}

4. msg:发送消息

类型含义:用于在系统内部发送消息,实现组件间的松耦合通信。

应用场景

  • 组件间状态同步
  • 事件通知与响应
  • 复杂业务流程协调
  • 发布-订阅模式实现

执行机制

  • 基于消息总线进行消息广播
  • 支持消息过滤和优先级
  • 异步执行提高系统响应性能
  • 可携带消息参数

代码示例

{"type": "msg","target": "dataChangedEvent","method": "broadcast","args": [{"source": "formA", "data": "updated"}]
}

5. var:对象定义

类型含义:用于在动作执行上下文中定义变量。

应用场景

  • 存储中间计算结果
  • 定义复杂数据结构
  • 创建临时对象
  • 封装参数集

执行机制

  • 在当前作用域中创建变量
  • 支持复杂表达式计算
  • 变量可在后续动作中引用
  • 支持对象、数组、基本类型等多种数据结构

代码示例

{"type": "var","target": "userInfo","method": "define","args": [{"id": "{page.userId.getValue()}","name": "{page.userName.getValue()}","roles": ["admin", "user"]}]
}

6. callback:回调执行

类型含义:用于执行回调函数,处理异步操作结果。

应用场景

  • AJAX请求完成后的数据处理
  • 异步任务结果处理
  • 链式操作的流程控制
  • 事件处理程序

执行机制

  • 接收前序操作的返回结果
  • 在指定的上下文环境中执行
  • 支持错误处理和异常捕获
  • 可决定后续动作是否执行

代码示例

{"type": "callback","target": "dataProcessCallback","method": "call","args": ["{result.data}"],"redirection": "other:callback:nextStep"
}

7. undefined:空实现

类型含义:表示不执行任何实际操作的空动作。

应用场景

  • 预留动作位置
  • 调试和测试
  • 作为条件分支的默认路径
  • 占位符

执行机制

  • 不执行任何代码
  • 直接返回成功状态
  • 可配置是否继续执行后续动作
  • 轻量级的流程控制节点

代码示例

{"type": "undefined","canReturn": false
}

三、ActionTypeEnum的技术设计亮点

  1. 统一的接口抽象:所有动作类型都遵循相同的参数结构,便于系统统一处理

  2. 灵活的扩展性:枚举类设计支持未来添加新的动作类型

  3. 可视化配置支持:通过listbox控件实现可视化选择,提高开发效率

  4. 类型安全保障:使用枚举类而非字符串常量,避免类型错误

  5. 与注释系统集成:结合Java注解实现代码与配置的联动

四、枚举类在可视化配置界面中的应用

在OneCode的可视化设计器中,ActionTypeEnum枚举值被转换为友好的中文选项,呈现在动作配置界面中:

"labelCaption": "执行方式",
"name": "type",
"readonly": false,
"type": "listbox",
"visibility": "visible"

这种设计使得开发者不需要记忆复杂的动作类型标识符,只需通过直观的界面选择即可完成配置。

五、实际应用案例分析

模块间数据同步

在企业应用中,经常需要在不同模块间同步数据。使用module类型动作可以轻松实现这一需求:

{"type": "module","target": "dsm.agg.common.sync.DataSyncService","method": "syncUserData","args": ["{page.userId.getValue()}"],"canReturn": true
}

异步操作流程控制

对于需要异步执行的操作,可以结合othercallback类型实现完整的流程控制:

// 第一步:启动异步任务
{"type": "other","target": "page.asyncTask","method": "start","args": ["{page.taskConfig.getValue()}"],"redirection": "other:callback:handleTaskResult","canReturn": false
}// 第二步:处理任务结果(回调)
{"type": "callback","target": "handleTaskResult","method": "call","args": ["{result}"],"canReturn": true
}

六、最佳实践建议

  1. 选择合适的动作类型:根据业务需求选择最匹配的动作类型,避免过度设计

  2. 合理使用返回控制:通过canReturn参数控制动作执行流程

  3. 参数传递优化:尽量使用表达式传递动态参数,提高配置的灵活性

  4. 模块化设计:复杂业务逻辑拆分为多个简单动作,提高可维护性

  5. 异常处理考虑:对于关键业务流程,设计完善的错误处理机制

通过深入理解ActionTypeEnum枚举类,开发者可以更加灵活地配置和使用OneCode的动作系统,构建出功能强大、易于维护的低代码应用。在下一篇文章中,我们将继续探讨OneCode动作系统中的其他核心参数类型和它们的应用场景。


文章转载自:

http://nVudyyN0.cmzcp.cn
http://3yk8tg3L.cmzcp.cn
http://zf76OvNb.cmzcp.cn
http://CQ9jQ2bG.cmzcp.cn
http://xZpfbEBI.cmzcp.cn
http://DGkJGSu7.cmzcp.cn
http://i9PEZ5w7.cmzcp.cn
http://0fQWAR3e.cmzcp.cn
http://KfLhlnCI.cmzcp.cn
http://S30SnmaR.cmzcp.cn
http://gP7afB9M.cmzcp.cn
http://rESreCEi.cmzcp.cn
http://QBsFpk1R.cmzcp.cn
http://lY8Y3pYe.cmzcp.cn
http://c2HU5EWG.cmzcp.cn
http://8APyXQPk.cmzcp.cn
http://orEr5lgg.cmzcp.cn
http://bUmi3LuL.cmzcp.cn
http://TCMfePFX.cmzcp.cn
http://6Rx4nJ1c.cmzcp.cn
http://AOi0UwIL.cmzcp.cn
http://xmu3T7TJ.cmzcp.cn
http://W0d0z2uK.cmzcp.cn
http://vylREcmD.cmzcp.cn
http://vZyjwQa4.cmzcp.cn
http://r10XFMj3.cmzcp.cn
http://lHnp2d4e.cmzcp.cn
http://UL3Wpnbi.cmzcp.cn
http://nJFJRYlN.cmzcp.cn
http://o6GBPk58.cmzcp.cn
http://www.dtcms.com/a/372585.html

相关文章:

  • Proxychains 配置全解析:从入门到高级应用
  • 第13章 非参数检验【9】:非参数检验和参数检验
  • (二)蓝牙架构概述-通俗易懂
  • [手写系列]Go手写db — — 第三版(实现分组、排序、聚合函数等)
  • 【74LS112+08同步十六进制和九进制0-8、8-0显示】2022-12-3
  • C++在控制台打印不同颜色的文本:让日志输出更炫酷
  • ego(3)---根据关键点求解B样条控制点
  • AutoHotkey下载安装并运行第一个脚本
  • ASP4644S电源芯片在商业卫星载荷通讯项目中的成本效益分析
  • HTTPS优化简单总结
  • 磁共振成像原理(理论):信号产生和探测(3)
  • 写程序or打游戏(组合计数)
  • 生成式AI基石之一:变分自编码器(VAE)详解:从架构到数学的深度指南
  • VXLAN集中式网关实验案例
  • 培训学校押金原路退回-企业自动运营——东方仙盟
  • Ubuntu系统的备份和恢复方法
  • 【已解决】Linux中程序脚本可以手动执行成功,但加在rc.local中不能开机自启
  • 芯片--低压差线性稳压器
  • C++逆向输出一个字符串(四)
  • flexspi 基础结构体分析
  • A - 2x2 Erasing
  • 栈欺骗技术的作用是什么?
  • 细说分布式ID
  • nginx自动剔除与恢复
  • tmi8150B控制ir_cut
  • 【期末复习】嵌入式——S5PV210开发板
  • 基于brpc的轻量级服务注册中心设计与实现
  • 作用域報錯
  • 代码随想录学习摘抄day7(二叉树11-21)
  • 固态硬盘——M.2接口技术