cloudcc-cli 2.3.8 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursor/skills/{cloudcc-cli-dev → dev-guide}/SKILL.md +5 -1
- package/README.md +82 -1
- package/bin/cc.js +2 -1
- package/bin/index.js +1 -0
- package/cloudcc-dev-skill/SKILL.md +31 -8
- package/cloudcc-dev-skill/cloudcc-dev-html.md +42 -0
- package/cloudcc-dev-skill/config.json +2 -2
- package/mcp/index.js +27 -3
- package/mcp/tools/JSP Migrator/handler.js +51 -866
- package/mcp/tools/Object Creator/handler.js +14 -4
- package/mcp/tools/Object Fields Creator/handler.js +149 -3
- package/package.json +1 -1
- package/src/classes/docs/devguide.md +758 -364
- package/src/classes/docs/introduction.md +279 -143
- package/src/fields/buildFieldData.js +692 -0
- package/src/fields/create.js +10 -170
- package/src/fields/detail.js +37 -0
- package/src/fields/docs/devguide.md +168 -44
- package/src/fields/docs/introduction.md +2 -0
- package/src/fields/fields/A.js +3 -2
- package/src/fields/fields/AD.js +4 -2
- package/src/fields/fields/B.js +8 -5
- package/src/fields/fields/C.js +13 -5
- package/src/fields/fields/D.js +4 -4
- package/src/fields/fields/E.js +10 -5
- package/src/fields/fields/ENC.js +27 -8
- package/src/fields/fields/ENCD.js +27 -8
- package/src/fields/fields/F.js +4 -4
- package/src/fields/fields/FL.js +8 -4
- package/src/fields/fields/H.js +4 -4
- package/src/fields/fields/IMG.js +23 -5
- package/src/fields/fields/J.js +21 -6
- package/src/fields/fields/L.js +32 -8
- package/src/fields/fields/LT.js +23 -6
- package/src/fields/fields/M.js +2 -2
- package/src/fields/fields/MR.js +2 -2
- package/src/fields/fields/N.js +31 -8
- package/src/fields/fields/P.js +13 -5
- package/src/fields/fields/Q.js +42 -12
- package/src/fields/fields/S.js +19 -7
- package/src/fields/fields/SCORE.js +9 -4
- package/src/fields/fields/T.js +4 -4
- package/src/fields/fields/U.js +18 -5
- package/src/fields/fields/X.js +20 -6
- package/src/fields/fields/Y.js +17 -4
- package/src/fields/index.js +2 -0
- package/src/fields/update.js +148 -0
- package/src/jsp/analyze.js +17 -0
- package/src/jsp/doc.js +18 -0
- package/src/jsp/docs/devguide.md +111 -0
- package/src/jsp/docs/introduction.md +50 -0
- package/src/jsp/docs.js +21 -0
- package/src/jsp/index.js +14 -0
- package/src/jsp/migration.js +871 -0
- package/src/jsp/split.js +17 -0
- package/src/object/create.js +36 -10
- package/src/object/docs/devguide.md +6 -3
- package/src/project/docs/devguide.md +1 -1
- package/src/timer/docs/devguide.md +849 -400
- package/src/timer/docs/introduction.md +343 -231
- package/src/triggers/docs/devguide.md +929 -352
- package/src/triggers/docs/introduction.md +640 -369
- package/src/version/listModuleCommands.js +6 -0
- package/test/fields.cli.test.js +3 -1
- package/test/jsp.cli.test.js +70 -0
- package/test/object.cli.test.js +9 -1
|
@@ -1,238 +1,374 @@
|
|
|
1
|
-
# CloudCC
|
|
1
|
+
# CloudCC 自定义类分析说明
|
|
2
2
|
|
|
3
|
-
## 1.
|
|
3
|
+
## 1. 分析口径
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
本文用于回答以下问题:
|
|
6
6
|
|
|
7
7
|
- 自定义类能干什么
|
|
8
|
-
-
|
|
8
|
+
- 自定义类的主要作用是什么
|
|
9
9
|
- 为什么要用自定义类
|
|
10
10
|
- 自定义类能解决哪些问题
|
|
11
|
-
-
|
|
11
|
+
- 在什么情况下使用
|
|
12
|
+
- 在什么业务场景下使用
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
## 2. 自定义类是什么
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
- 当前线上环境中的自定义类实际情况(共 87 个,含 `Controller`、`Util`、`Service`、`Handler`、`Bot` 等类型)
|
|
16
|
+
自定义类是运行在 CloudCC 服务端的 Java 业务代码载体。
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
它的定位不是页面本身,也不是触发器本身,而是被页面、按钮、触发器、定时类、组件或其他类调用的后端能力单元。
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
可以把它理解成 CloudCC 中的“业务服务层”:
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
- 页面和按钮负责发起动作
|
|
23
|
+
- 触发器和定时类负责触发时机
|
|
24
|
+
- 自定义类负责真正的业务处理
|
|
23
25
|
|
|
24
|
-
|
|
25
|
-
- 触发器(Trigger)
|
|
26
|
-
- 定时类(Scheduled Class / Timer)
|
|
27
|
-
- 其他自定义类(复用)
|
|
26
|
+
因此,自定义类更适合承载那些:
|
|
28
27
|
|
|
29
|
-
|
|
28
|
+
- 逻辑复杂
|
|
29
|
+
- 需要复用
|
|
30
|
+
- 需要服务端执行
|
|
31
|
+
- 需要跨对象处理
|
|
32
|
+
- 需要和外部系统通信
|
|
30
33
|
|
|
31
|
-
|
|
34
|
+
的能力。
|
|
32
35
|
|
|
33
|
-
## 3.
|
|
36
|
+
## 3. 自定义类能干什么
|
|
34
37
|
|
|
35
|
-
|
|
38
|
+
结合全部非测试类的逐类阅读,自定义类主要具备以下能力。
|
|
36
39
|
|
|
37
|
-
### 3.1
|
|
40
|
+
### 3.1 数据读写与对象联动
|
|
38
41
|
|
|
39
|
-
|
|
42
|
+
这是最基础的能力,也是最普遍的能力。
|
|
40
43
|
|
|
41
|
-
|
|
42
|
-
- 修改:`update(CCObject)`
|
|
43
|
-
- 删除:`delete(CCObject)`
|
|
44
|
-
- 条件查询:`cquery(apiName, condition, order)`
|
|
45
|
-
- CQL 查询:`cqlQuery(apiName, cql)`
|
|
44
|
+
自定义类可以:
|
|
46
45
|
|
|
47
|
-
|
|
46
|
+
- 查询对象数据
|
|
47
|
+
- 查询关联对象数据
|
|
48
|
+
- 执行复杂条件检索
|
|
49
|
+
- 新增、更新、删除记录
|
|
50
|
+
- 在多个对象之间做联动更新
|
|
51
|
+
- 在业务动作完成后回写状态、金额、标记和结果
|
|
48
52
|
|
|
49
|
-
|
|
53
|
+
这使它非常适合承载“单次操作影响多个对象”的场景。
|
|
50
54
|
|
|
51
|
-
|
|
55
|
+
### 3.2 复杂规则计算
|
|
52
56
|
|
|
53
|
-
|
|
54
|
-
- 评分/分层/分配策略
|
|
55
|
-
- 订单拆分与状态推进
|
|
56
|
-
- 多步骤审批前置校验
|
|
57
|
+
大量自定义类并不是简单搬运数据,而是在做规则计算、汇总和判断。
|
|
57
58
|
|
|
58
|
-
|
|
59
|
+
这类能力通常包括:
|
|
59
60
|
|
|
60
|
-
|
|
61
|
+
- 根据多个条件计算结果
|
|
62
|
+
- 根据角色、状态、时间、区域、分类决定不同处理路径
|
|
63
|
+
- 汇总明细到主记录
|
|
64
|
+
- 对数据进行分摊、拆分、匹配、校验和回写
|
|
61
65
|
|
|
62
|
-
|
|
63
|
-
- 对接企业消息/邮件通知(`SendEmail`)
|
|
64
|
-
- 统一输入输出结构、重试与异常兜底
|
|
66
|
+
当业务规则超出页面公式、字段配置或简单脚本能稳定承载的范围时,自定义类就是主要落点。
|
|
65
67
|
|
|
66
|
-
### 3.
|
|
68
|
+
### 3.3 流程编排与状态流转
|
|
67
69
|
|
|
68
|
-
|
|
70
|
+
自定义类非常适合做流程中的服务端编排。
|
|
69
71
|
|
|
70
|
-
|
|
71
|
-
- 关键决策分支
|
|
72
|
-
- 异常上下文(错误信息、栈、业务主键)
|
|
72
|
+
典型表现为:
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
- 接收一个动作入口
|
|
75
|
+
- 校验当前状态是否合法
|
|
76
|
+
- 查询上下游数据
|
|
77
|
+
- 按规则推进下一步
|
|
78
|
+
- 同步相关对象状态
|
|
79
|
+
- 触发通知、共享或资料处理
|
|
80
|
+
- 返回执行结果
|
|
75
81
|
|
|
76
|
-
|
|
82
|
+
从项目现状看,一批体量较大的类本质上都在承担这一职责。
|
|
77
83
|
|
|
78
|
-
### 3.
|
|
84
|
+
### 3.4 外部系统集成
|
|
79
85
|
|
|
80
|
-
|
|
86
|
+
这是本项目自定义类非常鲜明的特征之一。
|
|
81
87
|
|
|
82
|
-
|
|
88
|
+
自定义类可以作为平台与外部系统之间的集成层,负责:
|
|
83
89
|
|
|
84
|
-
|
|
90
|
+
- 拼装请求参数
|
|
91
|
+
- 调用接口
|
|
92
|
+
- 接收返回结果
|
|
93
|
+
- 处理鉴权、异常和容错
|
|
94
|
+
- 将外部结果转换为平台内部可用的数据结构
|
|
85
95
|
|
|
86
|
-
|
|
96
|
+
相比把这些逻辑散落在页面、触发器或多个入口中,统一放到自定义类里更稳定、更易维护。
|
|
87
97
|
|
|
88
|
-
|
|
89
|
-
2. **形成可复用能力**:同一逻辑可被多个流程复用,减少复制粘贴。
|
|
90
|
-
3. **隔离变化与降低耦合**:页面、触发器、定时器只做编排,细节集中在类里。
|
|
91
|
-
4. **提升稳定性与治理性**:可统一异常处理、日志、权限与时区策略。
|
|
98
|
+
### 3.5 通知、提醒与协同动作
|
|
92
99
|
|
|
93
|
-
|
|
100
|
+
自定义类不仅处理数据,也经常承担业务协同动作:
|
|
101
|
+
|
|
102
|
+
- 发送邮件
|
|
103
|
+
- 发起提醒
|
|
104
|
+
- 推送待办
|
|
105
|
+
- 创建事件或任务
|
|
106
|
+
- 在关键节点通知相关角色
|
|
107
|
+
|
|
108
|
+
这类能力通常和流程控制绑定出现,用于保证业务动作执行后,协同链路能被同步拉起。
|
|
109
|
+
|
|
110
|
+
### 3.6 文件、附件与资料处理
|
|
111
|
+
|
|
112
|
+
从全量阅读结果看,文件与资料相关处理占比也比较高。
|
|
113
|
+
|
|
114
|
+
自定义类可以负责:
|
|
115
|
+
|
|
116
|
+
- 附件读取
|
|
117
|
+
- 文件上传或转发
|
|
118
|
+
- 目录创建
|
|
119
|
+
- 文件关系维护
|
|
120
|
+
- 文件与业务记录的绑定
|
|
121
|
+
- 资料同步与归档
|
|
122
|
+
|
|
123
|
+
这说明自定义类不仅处理结构化数据,也承担了一部分资料流转和文档协同职责。
|
|
124
|
+
|
|
125
|
+
### 3.7 权限、共享与角色控制
|
|
126
|
+
|
|
127
|
+
一部分自定义类会在服务端完成权限相关动作,例如:
|
|
128
|
+
|
|
129
|
+
- 基于角色、简档、组织关系控制动作
|
|
130
|
+
- 自动写入共享关系
|
|
131
|
+
- 按负责人或部门分配数据
|
|
132
|
+
- 根据审批角色决定是否允许继续
|
|
133
|
+
|
|
134
|
+
这类能力放在服务端实现,通常比放在前端更可靠。
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
## 4. 自定义类的主要作用是什么
|
|
138
|
+
|
|
139
|
+
综合来看,自定义类的主要作用可以概括为以下 5 点。
|
|
140
|
+
|
|
141
|
+
### 4.1 承载复杂后端逻辑
|
|
142
|
+
|
|
143
|
+
把复杂的、需要服务端执行的业务逻辑从页面层、按钮层、触发层中抽离出来,放到独立的服务端类中处理。
|
|
144
|
+
|
|
145
|
+
### 4.2 形成可复用能力
|
|
146
|
+
|
|
147
|
+
把相同能力沉淀为公共服务,让多个入口共享同一套实现,避免逻辑重复。
|
|
148
|
+
|
|
149
|
+
### 4.3 作为流程编排中枢
|
|
150
|
+
|
|
151
|
+
把“校验、查询、计算、写回、通知、集成”串成一条完整链路,让一个复杂动作在服务端被稳定执行。
|
|
152
|
+
|
|
153
|
+
### 4.4 隔离系统边界
|
|
154
|
+
|
|
155
|
+
把平台内部逻辑和外部系统调用隔离开,让页面、按钮、触发器只需要调用结果,而不需要关心接口细节。
|
|
156
|
+
|
|
157
|
+
### 4.5 提升治理性
|
|
158
|
+
|
|
159
|
+
通过统一的日志、异常、时间、返回结构和复用方式,让系统更容易排查、更容易维护、更容易扩展。
|
|
94
160
|
|
|
95
161
|
## 5. 为什么要用自定义类
|
|
96
162
|
|
|
97
|
-
### 5.1
|
|
163
|
+
### 5.1 因为很多业务已经超出页面配置能力
|
|
164
|
+
|
|
165
|
+
如果只是简单展示、字段联动、轻量前端交互,标准页面和脚本就足够。
|
|
98
166
|
|
|
99
|
-
|
|
167
|
+
但当业务涉及:
|
|
100
168
|
|
|
101
|
-
|
|
169
|
+
- 多对象联动
|
|
170
|
+
- 多步骤状态推进
|
|
171
|
+
- 复杂计算
|
|
172
|
+
- 外部系统调用
|
|
173
|
+
- 文件和资料流转
|
|
174
|
+
- 权限和共享处理
|
|
102
175
|
|
|
103
|
-
|
|
176
|
+
页面层通常无法优雅承载,这时就需要自定义类。
|
|
104
177
|
|
|
105
|
-
### 5.
|
|
178
|
+
### 5.2 因为关键规则必须放在服务端
|
|
106
179
|
|
|
107
|
-
|
|
180
|
+
关键校验、关键状态、关键金额、关键动作如果只放在前端或入口层,可靠性和一致性都不足。
|
|
108
181
|
|
|
109
|
-
|
|
182
|
+
自定义类让这些规则在服务端可信执行,避免绕过和分叉实现。
|
|
110
183
|
|
|
111
|
-
|
|
184
|
+
### 5.3 因为同一能力需要跨入口复用
|
|
112
185
|
|
|
113
|
-
|
|
186
|
+
同一套业务处理常常会被:
|
|
187
|
+
|
|
188
|
+
- 页面按钮调用
|
|
189
|
+
- 触发器调用
|
|
190
|
+
- 定时类调用
|
|
191
|
+
- 组件调用
|
|
192
|
+
- 其他类调用
|
|
193
|
+
|
|
194
|
+
如果没有自定义类,逻辑会在多个地方重复,后续维护成本会迅速上升。
|
|
195
|
+
|
|
196
|
+
### 5.4 因为需要统一集成出口
|
|
197
|
+
|
|
198
|
+
外部系统对接如果没有统一出口,接口规则、异常处理和认证逻辑会散落在各处。
|
|
199
|
+
|
|
200
|
+
自定义类正好可以充当统一的集成边界层。
|
|
201
|
+
|
|
202
|
+
### 5.5 因为需要长期可维护
|
|
203
|
+
|
|
204
|
+
随着业务增长,真正难的不是“先做出来”,而是“后面还能改、还能查、还能扩”。
|
|
205
|
+
|
|
206
|
+
自定义类的价值就在于把复杂逻辑集中起来,为后续维护留下结构基础。
|
|
114
207
|
|
|
115
208
|
## 6. 自定义类能解决哪些问题
|
|
116
209
|
|
|
117
|
-
|
|
210
|
+
### 6.1 解决数据一致性问题
|
|
211
|
+
|
|
212
|
+
- 一个动作影响多个对象,但平台默认能力难以统一处理
|
|
213
|
+
- 主记录和明细记录之间容易口径不一致
|
|
214
|
+
- 上下游对象状态需要同时同步
|
|
215
|
+
|
|
216
|
+
自定义类可以把这些联动统一放到服务端,减少口径分裂。
|
|
217
|
+
|
|
218
|
+
### 6.2 解决复杂规则难落地的问题
|
|
219
|
+
|
|
220
|
+
- 条件过多
|
|
221
|
+
- 公式过长
|
|
222
|
+
- 分支过深
|
|
223
|
+
- 决策依赖多个维度
|
|
224
|
+
|
|
225
|
+
这些逻辑如果堆在页面、公式或触发器里,维护难度很快失控。自定义类更适合承载这类规则。
|
|
226
|
+
|
|
227
|
+
### 6.3 解决流程动作分散的问题
|
|
228
|
+
|
|
229
|
+
- 一个动作不仅要改数据,还要发通知、写共享、建目录、推接口
|
|
230
|
+
- 业务动作涉及多个系统和多个后续步骤
|
|
231
|
+
|
|
232
|
+
自定义类能够把这些步骤编排为一条服务端流程,保证执行次序和结果完整性。
|
|
233
|
+
|
|
234
|
+
### 6.4 解决集成混乱的问题
|
|
235
|
+
|
|
236
|
+
- 外部接口多
|
|
237
|
+
- 返回结构不统一
|
|
238
|
+
- 失败处理不一致
|
|
239
|
+
- 同一种接口能力被多处重复实现
|
|
240
|
+
|
|
241
|
+
通过自定义类统一集成出口,可以降低重复和耦合。
|
|
242
|
+
|
|
243
|
+
### 6.5 解决通知协同不及时的问题
|
|
244
|
+
|
|
245
|
+
- 业务动作完成后需要自动提醒相关人
|
|
246
|
+
- 邮件、待办、事件、任务需要按规则自动触发
|
|
247
|
+
|
|
248
|
+
自定义类可以把“业务处理”和“协同动作”组合在同一服务端链路里。
|
|
249
|
+
|
|
250
|
+
### 6.6 解决文件资料处理分散的问题
|
|
251
|
+
|
|
252
|
+
- 附件上传、同步、归档、目录维护容易分散到多个入口
|
|
253
|
+
- 文件和业务记录之间的关系处理容易缺乏统一规范
|
|
254
|
+
|
|
255
|
+
自定义类适合承担统一的资料处理逻辑。
|
|
118
256
|
|
|
119
|
-
|
|
120
|
-
- 多对象联动导致状态不同步
|
|
121
|
-
- 批量变更时局部失败难控制
|
|
257
|
+
### 6.7 解决权限与共享难统一的问题
|
|
122
258
|
|
|
123
|
-
|
|
259
|
+
- 不同角色对动作权限不同
|
|
260
|
+
- 数据共享规则需要自动生成
|
|
261
|
+
- 负责人切换后共享关系要同步变化
|
|
124
262
|
|
|
125
|
-
|
|
126
|
-
- 按角色、组织、区域进行差异化处理
|
|
263
|
+
这类逻辑放在自定义类中更容易统一控制。
|
|
127
264
|
|
|
128
|
-
##
|
|
265
|
+
## 7. 在什么情况下使用自定义类
|
|
129
266
|
|
|
130
|
-
|
|
131
|
-
- 需要统一请求封装、失败重试、错误标准化
|
|
267
|
+
满足以下任一情况时,优先考虑自定义类:
|
|
132
268
|
|
|
133
|
-
|
|
269
|
+
- 业务逻辑复杂,页面层无法稳定承载
|
|
270
|
+
- 同一能力需要被多个入口复用
|
|
271
|
+
- 涉及多对象联动或批量处理
|
|
272
|
+
- 需要服务端强校验
|
|
273
|
+
- 需要复杂规则计算
|
|
274
|
+
- 需要外部系统集成
|
|
275
|
+
- 需要文件、附件、目录等资料处理
|
|
276
|
+
- 需要自动通知、提醒、待办协同
|
|
277
|
+
- 需要统一权限、共享和角色控制
|
|
278
|
+
- 需要接入 AI 或智能分析能力
|
|
134
279
|
|
|
135
|
-
|
|
136
|
-
- 缺少统一日志导致故障定位慢
|
|
280
|
+
相反,以下场景通常不需要优先上自定义类:
|
|
137
281
|
|
|
138
|
-
|
|
282
|
+
- 仅做简单展示
|
|
283
|
+
- 仅做轻量前端交互
|
|
284
|
+
- 仅做简单字段联动
|
|
285
|
+
- 完全可以由标准配置完成的场景
|
|
139
286
|
|
|
140
|
-
|
|
287
|
+
## 8. 在什么业务场景下使用
|
|
141
288
|
|
|
142
|
-
|
|
289
|
+
从全部非测试类的整体结构看,自定义类适合以下业务场景。
|
|
143
290
|
|
|
144
|
-
|
|
291
|
+
### 8.1 复杂流程型场景
|
|
145
292
|
|
|
146
|
-
|
|
293
|
+
特点:
|
|
147
294
|
|
|
148
|
-
-
|
|
149
|
-
-
|
|
150
|
-
-
|
|
151
|
-
- 需要服务端强校验(合规、审计、财务、关键流程)
|
|
152
|
-
- 需要统一异常、日志、时区、返回值协议
|
|
295
|
+
- 一次动作会牵引多个后续步骤
|
|
296
|
+
- 同时影响多类数据
|
|
297
|
+
- 需要统一控制前后状态
|
|
153
298
|
|
|
154
|
-
|
|
299
|
+
适合使用自定义类,因为这类场景最依赖服务端编排能力。
|
|
155
300
|
|
|
156
|
-
|
|
157
|
-
- 主要是数据写入前后钩子:触发器(复杂部分可调用类)
|
|
158
|
-
- 明确按时间调度执行:定时类(复杂部分可调用类)
|
|
159
|
-
- 仅新增数据结构:对象/字段配置
|
|
301
|
+
### 8.2 规则密集型场景
|
|
160
302
|
|
|
161
|
-
|
|
303
|
+
特点:
|
|
162
304
|
|
|
163
|
-
|
|
305
|
+
- 有大量条件判断
|
|
306
|
+
- 有汇总、分摊、计算、校验
|
|
307
|
+
- 结果需要回写并留痕
|
|
164
308
|
|
|
165
|
-
|
|
309
|
+
适合使用自定义类,因为这类场景需要稳定的规则承载层。
|
|
166
310
|
|
|
167
|
-
|
|
168
|
-
- 做法:`Controller` 类统一处理状态迁移,触发器只负责调用
|
|
169
|
-
- 价值:规则集中、便于迭代与审计
|
|
311
|
+
### 8.3 集成协同型场景
|
|
170
312
|
|
|
171
|
-
|
|
313
|
+
特点:
|
|
172
314
|
|
|
173
|
-
-
|
|
174
|
-
-
|
|
175
|
-
-
|
|
315
|
+
- 需要和外部系统对接
|
|
316
|
+
- 需要把内部动作同步到外部
|
|
317
|
+
- 需要将外部结果回填平台
|
|
176
318
|
|
|
177
|
-
|
|
319
|
+
适合使用自定义类,因为它天然适合做集成边界层。
|
|
178
320
|
|
|
179
|
-
|
|
180
|
-
- 做法:`Service` 类封装请求、签名、重试、错误翻译
|
|
181
|
-
- 价值:外部波动被隔离,主流程更稳定
|
|
321
|
+
### 8.4 通知驱动型场景
|
|
182
322
|
|
|
183
|
-
|
|
323
|
+
特点:
|
|
184
324
|
|
|
185
|
-
-
|
|
186
|
-
-
|
|
187
|
-
-
|
|
325
|
+
- 某个节点发生后必须提醒相关人
|
|
326
|
+
- 需要自动创建待办、任务或消息
|
|
327
|
+
- 通知内容依赖业务数据动态生成
|
|
188
328
|
|
|
189
|
-
|
|
329
|
+
适合使用自定义类,因为通知逻辑通常要和业务处理紧密耦合。
|
|
190
330
|
|
|
191
|
-
|
|
192
|
-
- 做法:`Bot` 类封装上下文处理、外部调用与业务落库
|
|
193
|
-
- 价值:能力沉淀为后端服务,可跨入口复用
|
|
331
|
+
### 8.5 文件资料型场景
|
|
194
332
|
|
|
195
|
-
|
|
333
|
+
特点:
|
|
196
334
|
|
|
197
|
-
|
|
335
|
+
- 需要读写附件
|
|
336
|
+
- 需要目录维护
|
|
337
|
+
- 需要文件同步、上传、归档或转发
|
|
198
338
|
|
|
199
|
-
|
|
200
|
-
- **触发器**:数据生命周期节点的编排与触发
|
|
201
|
-
- **定时类**:时间驱动任务调度与批处理入口
|
|
202
|
-
- **客户端脚本**:页面交互与轻量校验
|
|
339
|
+
适合使用自定义类,因为文件流转需要统一的服务端处理能力。
|
|
203
340
|
|
|
204
|
-
|
|
341
|
+
### 8.6 权限共享型场景
|
|
205
342
|
|
|
206
|
-
|
|
343
|
+
特点:
|
|
207
344
|
|
|
208
|
-
|
|
345
|
+
- 不同角色处理路径不同
|
|
346
|
+
- 需要自动授权、共享或分配
|
|
347
|
+
- 动作是否允许执行取决于服务端判断
|
|
209
348
|
|
|
210
|
-
|
|
349
|
+
适合使用自定义类,因为权限控制必须具备服务端可信性。
|
|
211
350
|
|
|
212
|
-
|
|
213
|
-
- `Service`:承载核心业务逻辑
|
|
214
|
-
- `Util`:通用工具、格式转换、公共方法
|
|
215
|
-
- `Exception/Result`:统一错误码与返回结构
|
|
351
|
+
### 8.7 智能辅助型场景
|
|
216
352
|
|
|
217
|
-
|
|
353
|
+
特点:
|
|
218
354
|
|
|
219
|
-
-
|
|
220
|
-
-
|
|
221
|
-
-
|
|
222
|
-
- 对外调用统一封装超时、重试与错误翻译
|
|
223
|
-
- 对批量场景做幂等与容错设计
|
|
355
|
+
- 需要调用模型或分析服务
|
|
356
|
+
- 需要上传文件给智能服务处理
|
|
357
|
+
- 需要把分析结果转成平台中的业务动作
|
|
224
358
|
|
|
225
|
-
|
|
359
|
+
适合使用自定义类,因为它既能做调用入口,也能做结果落地层。
|
|
226
360
|
|
|
227
|
-
|
|
228
|
-
- 业务服务:`xxxService`
|
|
229
|
-
- 公共能力:`xxxUtil`
|
|
230
|
-
- 触发器下沉:`xxxHandler`
|
|
231
|
-
- 结果与异常:`xxxResult` / `xxxException`
|
|
361
|
+
## 9. 与其他能力的分工建议
|
|
232
362
|
|
|
233
|
-
|
|
363
|
+
- 自定义类:负责复杂逻辑、服务复用、流程编排、集成处理
|
|
364
|
+
- 触发器:负责触发时机
|
|
365
|
+
- 定时类:负责时间驱动的自动执行
|
|
366
|
+
- 页面和组件:负责界面展示与交互
|
|
367
|
+
- 按钮:负责动作入口
|
|
234
368
|
|
|
235
|
-
|
|
369
|
+
推荐模式是:
|
|
236
370
|
|
|
237
|
-
|
|
371
|
+
- 页面、按钮、触发器、定时类做“薄入口”
|
|
372
|
+
- 自定义类做“厚服务”
|
|
238
373
|
|
|
374
|
+
这样可以把复杂度集中在服务端可治理的地方。
|