面向中后台复杂场景的低代码实践思路

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 第 十 六 届 D 2 前 端 技 术 论 坛 面向中后台复杂场景的低代码实践思路 偏左
2. 方案背景 动态标注生成交互界面 策略编排生成逻辑代码 Next
3. 方案背景 复杂视图 / 复杂逻辑问题
4. 理不清的业务规则,逻辑逐渐杂乱 业务规则多 趋向黑盒化 看不懂改不动,幻想if/else搞定一切 • 业务规则由多个责任人掌握 • 业务场景多变化快,迭代频繁 • 业务固有复杂度以及历史包袱
5. 流程节点说明 6 流程 提示指引等易用性交互将开发复杂化 说明文档 ID 名称 状态 易用性相关 遮罩高亮 失败 ? 交互细节多 请参考*** 成功 请联系@XXX 成功 确定 好用 不好用 复制/粘贴加速腐化,容易干扰业务功能 • 内容运营需要解释的内容多 • 易用性交互形式多,并不限于图文 • 易用性需求排期低于功能需求,平台越来越难用
6. 你中招了吗?
7. 复杂视图 复杂逻辑 动态标注 策略编排
8. 动态标注生成交互界面 面向复杂交互视图的方案
9. 中后台页面示例 典型中后台交互 流程节点说明 6 流程 说明文档 ID 名称 状态 遮罩高亮 请参考*** 失败 ? 成功 请联系@XXX 成功 确定 好用 不好用
10. 页面按功能划分 业务功能交互 辅助内容交互 流程节点说明 6 流程 说明文档 ID 名称 状态 遮罩高亮 请参考*** 失败 ? 成功 请联系@XXX 成功 确定 好用 不好用
11. 方案核心目标 所有类型交互 业务功能交互 辅助内容交互 ProCode开发 专注ProCode开发 低/无代码配置 面向:前端 面向:前端 面向:运营 / UED / PD
12. 方案实施效果 需要加提示说明 点击出现弹窗说明 点击出现文档 流程说明中需要加气泡提示 加下划线及问号提示 Step引导 首次进入页面时,新手引导,提供视频、PPT播放 需要加复杂的流程图 移入出现文档 展示相关解释 识别出关键词或术语 几乎所有的辅助类交互近400个,都通过配置完成
13. 动态标注方案实践
14. 分解交互界面,找到辅助类交互 Step 1 将辅助类交互分解成各个组件,分别配置展示样式、内容等等 容器类 部分体验优化 辅助内容类交互 提示说明指引 交互界面 术语解释 … 交互组件 通用(div) / 弹窗 / 消息条 / 气泡 / 通知 内容类 按钮 / 文本 / 图标 / 图片 / SVG / Markdown 场景类 步骤向导 / 关键词 / 视频播放 / PPT播放 … 外部能力 反馈调研 / 工单 / 知识库 / 机器人问答 … StepByStep引导 配置化提示消息 嵌入式文档 嵌入式PPT / PDF 交互组件 … 业务功能交互 引导面板 嵌入式视频演示 配置化弹窗/弹层 配置化向导
15. Step 2 将交互组件按规则动态渲染到界面 ① 元素点击 / 移入 / 移出 click, mouseenter, mouseleave 用户行为捕捉 ② 节点生成 / 销毁 mutationObserver 交互界面 ③ 页面URL / 停留时间改变 popstate, hashchange 辅助内容类交互 是 找到插入位置 交互组件 业务功能交互 交互组件 DOM查询 CSS Selector / XPath ? 否 创建交互组件实例 渲染至指定位置 是 更新交互组件实例 ReactDOM.render(交互组件, target)
16. Q: CSS选择器/XPath太专业,用户不会配怎么办? 用户不会配置CSS选择器或XPath,而且配置好的规则可能会因为改版而无效 解法 1. 配合技术特征,利用视觉特征相似度做模糊匹配; 2. 用户只需要选择出视觉特征和偏差范围。 匹配大小 匹配位置 匹配边框/颜色 匹配颜色 生成 匹配结构 匹配文本 扩展XQuery支持视觉模糊匹配示例
17. Step 3 配置交互组件,通过URL触发动作 ia:/ia/frame?url=yuque.antfin.com/... 内嵌外部页面 交互界面 ia:/ia/robot/chat?send=套餐怎么配 向机器人提问 辅助内容类交互 ia:/helpdesk/ticket ia:/ia/kb/view?id=491 提交工单 打开知识库文档 交互组件 业务功能交互 ia:notice?content=! **注意啦!** 显示消息 交互组件 ia:copy?content=需要复制的文本内容 复制内容 ia:event?type=click&id=btn1 转发点击事件,代替用户点击#btn1元素 ia:notice?type=dialog&content=![](http://g.alicdn.com/test.jpg) 打开弹窗,内容为markdown(一幅图片)
18. Q: 如何用URL完成比较复杂的交互动作? Step 1. 提示用户即将开始服务 ia:notice?content=欢迎使用新手引导 您有什么想问我的吗 欢迎使用新手引导 常见问题 Step 2. 2秒后,向机器人提问“常见问题” ia:robot/send?content=常见问题 … 新人指南 … Step 3. 若首次使用,则紧接着提问“新人指南” ia:robot/send?content=新人指南
19. Q: 如何用URL完成比较复杂的交互动作? 解法 不可控? 串不起来? 1. 使URL可控,按设定执行 @delay=2s 延迟2秒后url生效 @if=condition condition成立时url生效 2. 串联URL,让排队执行 ia:url1;:url2;:url3… <a href=“ia:notice?content=欢迎使用新手引导;:robot/send?content=常见问题&@delay=2s;:robot/send?content=新人指 南&@if=!counter.scene”>我是新手</a>
20. 策略编排生成逻辑代码 面向复杂交互逻辑的方案
21. 方案核心目标 所有交互逻辑 ProCode开发 前端 所有交互逻辑 低/无代码配置 开发:前端 / 后端 使用:产品技术角色
22. 方案实施效果 一例典型高复杂度表单 3种场景,33个状态,82条逻辑规则 开发进行到5工作日时风险,转用策略编排,用时~2工作日 编译产出代码:~3000行
23. 面向复杂交互逻辑的方案简介 高研发 成本 高验证成本 逻辑复杂 状态多 / 难预测 确定状态来源,明确状态为何改变,可快速验证 联动 / 条件多 高效的方法论指导,可管理每个状态的联动及条件 逻辑 黑盒 易返工 技术更迭 / 代码腐化 由规则直接产生可读性好、具备延续性、技术栈解耦的专业代码
24. 复杂交互逻辑问题 转变为 解决 复杂条件 复杂联动 下的 状态管理 问题
25. 决策编排复杂条件 代码示例 流程编排方式 经典if…else嵌套结构 类BPM方式,偏重复杂流程表达 if (构成三角形) { if (a=b) { if (b=c) { if (a=c) return else return } else { if (a=c) return else return } } else { if (b=c) { if (a=c) return else return } else { if (a=c) return else return } } } else return 等边三角形 非法 非法 等腰三角形 非法 等腰三角形 等腰三角形 不规则三角形 非三角形
26. 决策编排复杂条件 示例代码 决策表 决策编排方式 卫述句式化简条件结构 DMN方式,偏重复杂逻辑表达 决策表转为决策树 if (构成三角形) { if (a=b && b=c if (a=b &&!b=c if (!a=b && b=c if (!a=b &&!b=c if (!a=b &&!b=c } if (!构成三角形) && a=c) &&!a=c) &&!a=c) && a=c) &&!a=c) return return return return return 等边三角形 等腰三角形 等腰三角形 等腰三角形 不规则三角形 return 非三角形 return 非法 构成三角形 a=b b=c a=c 目标状态 〇 〇 〇 〇 等边三角形 〇 〇 ⨉ ⨉ 等腰三角形 〇 ⨉ 〇 ⨉ 等腰三角形 〇 ⨉ ⨉ 〇 等腰三角形 〇 ⨉ ⨉ ⨉ 不规则三角形 ⨉ - - - 非三角形 - - - - 非法
27. 决策编排复杂联动 示例代码 决策表 决策编排方式 经典联动逻辑 利用两张决策表表达逻辑 为状态增加触发事件 // 当A的值改变时计算C onChange(() => { if (A && !B) { C = 0 } else { C = 1 } }, [A]) // 当B的值改变时计算C onChange(() => { if (B && !A) { C = 2 } else { C = 3 } }, [B]) A B C 〇 ⨉ 0 ⨉ - 1 - 〇 1 A B C ⨉ 〇 2 - ⨉ 3 〇 - 3
28. 决策编排状态分治管理 贷款类型 公积金 商业贷款 还款方式 等额本息 等额本金 贷款利率 3.5% 贷款期数 ________ 累计利息 待计算 自由还款 计算
29. 策略编排方案实践
30. Step 1 定义要策略编排的对象 元数据定义了即将策略编排的对象 导入后端接口定义 自行定义元数据
31. Step 2 进行策略编排 将逻辑关系、联动关系,以策略编排的形式完成
32. 调试逻辑及联动 Step 3 测试驱动开发,保证规则在发布前经过充分验证 元数 据 将元数据生成模拟表单,供在线验证 策略 规则 将策略生成测试用例,标记验证结果
33. Step 4 将策略编译为专业的源码 输出代码要规范严谨,注释详尽易懂 可将源码实时编译,前端直接引入 可将源码提交到git仓库,保证延续性 可将源码构建发布到cdn / npm 可发布为api作为web服务
34. Next 一体化赋能
35. thanks

Accueil - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-17 18:53
浙ICP备14020137号-1 $Carte des visiteurs$