Skip to content

逻辑编排

逻辑编排概述

CodeWave 逻辑编排让开发者通过可视化流程图定义业务逻辑,无需编写大量代码即可实现复杂的业务流程。

事件驱动模型

事件类型
├── 用户交互事件
│   ├── 按钮点击(onClick)
│   ├── 表单提交(onSubmit)
│   ├── 输入变化(onChange)
│   └── 页面加载(onMounted)
├── 数据事件
│   ├── 数据加载完成
│   ├── 数据保存成功/失败
│   └── 数据删除确认
└── 系统事件
    ├── 路由变化
    ├── 定时器触发
    └── 消息推送

动作类型

数据操作

数据操作动作
├── 查询数据(Query)
│   ├── 查询实体列表
│   ├── 查询实体详情
│   └── 自定义 SQL 查询
├── 保存数据(Save)
│   ├── 创建实体
│   ├── 更新实体
│   └── 批量操作
└── 删除数据(Delete)
    ├── 删除单条
    └── 批量删除

UI 操作

UI 操作动作
├── 显示/隐藏组件
├── 启用/禁用组件
├── 打开/关闭弹窗
├── 跳转页面(路由)
├── 显示提示(Toast/Message)
├── 显示确认框(Confirm)
└── 刷新数据

流程控制

流程控制
├── 条件判断(If/Else)
│   └── 根据条件执行不同分支
├── 循环(ForEach)
│   └── 遍历数组执行操作
├── 并行执行(Parallel)
│   └── 多个动作同时执行
└── 异常处理(Try/Catch)
    └── 捕获错误,执行兜底逻辑

典型逻辑示例

表单提交流程

[触发] 点击「提交」按钮

[动作1] 表单验证
    ├── 验证通过 → 继续
    └── 验证失败 → 显示错误信息,终止

[动作2] 显示加载状态(按钮 loading)

[动作3] 调用 API 保存数据
    ├── 成功 → 继续
    └── 失败 → 显示错误提示,隐藏 loading,终止

[动作4] 显示成功提示「保存成功」

[动作5] 跳转到列表页

审批流程

[触发] 点击「审批通过」

[动作1] 显示确认框「确认通过该申请?」
    ├── 取消 → 终止
    └── 确认 → 继续

[动作2] 更新申请状态为「已通过」

[动作3] 发送通知给申请人(调用消息 API)

[动作4] 刷新列表数据

[动作5] 显示成功提示

条件分支示例

[触发] 订单金额变化

[条件] 订单金额 > 10000?
    ├── 是 → [动作] 显示「大额订单」标签
    │         [动作] 设置需要主管审批标志
    └── 否 → [条件] 订单金额 > 1000?
                ├── 是 → [动作] 显示「普通订单」标签
                └── 否 → [动作] 显示「小额订单」标签

变量管理

变量类型

变量作用域
├── 页面变量(Page Variable)
│   └── 当前页面内有效,页面销毁后清除
├── 应用变量(App Variable)
│   └── 整个应用内有效(如当前用户信息)
└── 本地存储变量(Local Storage)
    └── 持久化存储,刷新后仍存在

变量使用

javascript
// 定义页面变量
const pageVars = {
  loading: false,
  selectedIds: [],
  searchKeyword: '',
  currentPage: 1
}

// 在组件属性中引用
button.loading: pageVars.loading
table.selectedRowKeys: pageVars.selectedIds

// 在动作中修改
pageVars.loading = true
pageVars.searchKeyword = searchInput.value

JavaScript 扩展

对于复杂逻辑,可以直接编写 JavaScript:

javascript
// 自定义函数示例:计算折扣价格
function calculateDiscountPrice(originalPrice, discountRate, memberLevel) {
  let price = originalPrice * discountRate
  
  // 会员额外折扣
  const memberDiscounts = {
    'bronze': 0.98,
    'silver': 0.95,
    'gold': 0.90,
    'platinum': 0.85
  }
  
  const memberDiscount = memberDiscounts[memberLevel] || 1
  price = price * memberDiscount
  
  return Math.round(price * 100) / 100  // 保留两位小数
}

// 在逻辑编排中调用
const finalPrice = calculateDiscountPrice(
  formData.originalPrice,
  0.8,
  currentUser.memberLevel
)

网易智企产品解决方案知识库