cloudcc-cli 2.3.2 → 2.3.4
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/.claude/settings.json +18 -2
- package/.cloudcc-cache.json +17 -1
- package/.cursor/skills/{cloudcc-cli-usage → cloudcc-dev-usage}/SKILL.md +3 -2
- package/README.md +22 -0
- package/bin/index.js +2 -0
- package/build/{component-CCPlugin1774500425584.common.js → component-cc-cc-dd.common.js} +25 -25
- package/build/component-cc-cc-dd.common.js.map +1 -0
- package/build/component-cc-cc-dd.css +1 -0
- package/build/{component-CCPlugin1774500425584.umd.js → component-cc-cc-dd.umd.js} +27 -27
- package/build/component-cc-cc-dd.umd.js.map +1 -0
- package/build/{component-CCPlugin1774500425584.umd.min.js → component-cc-cc-dd.umd.min.js} +3 -3
- package/build/component-cc-cc-dd.umd.min.js.map +1 -0
- package/build/demo.html +1 -1
- package/package.json +3 -2
- package/plugins/cc-cc-dd/cc-cc-dd.vue +32 -0
- package/plugins/cc-cc-dd/components/HelloWorld.vue +11 -0
- package/plugins/cc-cc-dd/config.json +6 -0
- package/src/classes/docs/devguide.md +90 -0
- package/src/fields/create.js +12 -0
- package/src/globalSelectList/docs/devguide.md +0 -59
- package/src/menu/create-object.js +1 -0
- package/src/menu/create-page.js +1 -0
- package/src/menu/create-script.js +1 -0
- package/src/menu/create-site.js +1 -0
- package/src/menu/docs/devguide.md +57 -131
- package/src/object/create.js +2 -1
- package/src/object/docs/devguide.md +1 -5
- package/src/pagelayout/create.js +2 -2
- package/src/pagelayout/delete.js +57 -0
- package/src/pagelayout/docs/devguide.md +17 -229
- package/src/pagelayout/get.js +9 -9
- package/src/pagelayout/index.js +1 -0
- package/src/plugin/docs/devguide.md +90 -17
- package/src/profile/docs/devguide.md +3 -258
- package/src/role/create.js +2 -1
- package/src/role/delete.js +1 -0
- package/src/role/docs/devguide.md +5 -311
- package/src/timer/docs/devguide.md +83 -1
- package/src/triggers/docs/devguide.md +108 -0
- package/src/user/create.js +502 -19
- package/src/user/docs/devguide.md +22 -534
- package/src/validationRule/create.js +153 -0
- package/src/validationRule/delete.js +60 -0
- package/src/validationRule/doc.js +46 -0
- package/src/validationRule/docs/devguide.md +76 -0
- package/src/validationRule/docs/introduction.md +122 -0
- package/src/validationRule/get.js +47 -0
- package/src/validationRule/index.js +10 -0
- package/build/component-CCPlugin1774500425584.common.js.map +0 -1
- package/build/component-CCPlugin1774500425584.css +0 -1
- package/build/component-CCPlugin1774500425584.umd.js.map +0 -1
- package/build/component-CCPlugin1774500425584.umd.min.js.map +0 -1
- package/tmp_customsetting_detail.json +0 -1
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
# CloudCC
|
|
1
|
+
# CloudCC 角色 CLI 命令说明
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 快速开始(CLI 命令)
|
|
8
|
-
|
|
9
|
-
### 支持的角色操作
|
|
3
|
+
## 支持的命令
|
|
10
4
|
|
|
11
5
|
| 操作 | 说明 |
|
|
12
6
|
|------|------|
|
|
@@ -14,14 +8,10 @@
|
|
|
14
8
|
| `get` | 查询角色列表 |
|
|
15
9
|
| `delete` | 删除角色 |
|
|
16
10
|
|
|
17
|
-
---
|
|
18
|
-
|
|
19
11
|
## CLI 命令详解
|
|
20
12
|
|
|
21
13
|
### 创建角色
|
|
22
14
|
|
|
23
|
-
创建一个新的 CloudCC 角色。
|
|
24
|
-
|
|
25
15
|
```bash
|
|
26
16
|
cc create role <path> <roleName> [parentRoleName] [description]
|
|
27
17
|
```
|
|
@@ -32,8 +22,8 @@ cc create role <path> <roleName> [parentRoleName] [description]
|
|
|
32
22
|
|------|------|------|
|
|
33
23
|
| `path` | 是 | 项目路径,`.` 表示当前目录 |
|
|
34
24
|
| `roleName` | 是 | 角色名称 |
|
|
35
|
-
| `parentRoleName` | 否 |
|
|
36
|
-
| `description` | 否 |
|
|
25
|
+
| `parentRoleName` | 否 | 直属上司角色名称(不传则交互式选择)|
|
|
26
|
+
| `description` | 否 | 角色描述 |
|
|
37
27
|
|
|
38
28
|
**示例:**
|
|
39
29
|
|
|
@@ -41,24 +31,15 @@ cc create role <path> <roleName> [parentRoleName] [description]
|
|
|
41
31
|
# 交互式选择直属上司
|
|
42
32
|
cc create role . "销售经理"
|
|
43
33
|
|
|
44
|
-
#
|
|
34
|
+
# 指定直属上司(非交互式)
|
|
45
35
|
cc create role . "销售经理" "CEO"
|
|
46
36
|
|
|
47
37
|
# 指定直属上司并添加描述
|
|
48
38
|
cc create role . "市场专员" "销售总监" "负责市场推广工作"
|
|
49
39
|
```
|
|
50
40
|
|
|
51
|
-
**创建流程说明:**
|
|
52
|
-
1. 调用 `role/addRole` 获取可用直属上司列表
|
|
53
|
-
2. 如果指定了 `parentRoleName`,自动匹配对应角色;否则进入交互式选择
|
|
54
|
-
3. 调用 `role/saveRole` 创建新角色
|
|
55
|
-
|
|
56
|
-
---
|
|
57
|
-
|
|
58
41
|
### 查询角色列表
|
|
59
42
|
|
|
60
|
-
获取当前环境中的所有角色列表。
|
|
61
|
-
|
|
62
43
|
```bash
|
|
63
44
|
cc get role <projectPath> [encodedCondJson]
|
|
64
45
|
```
|
|
@@ -80,12 +61,8 @@ cc get role .
|
|
|
80
61
|
cc get role . '%7B%22name%22%3A%22%E9%94%80%E5%94%AE%22%7D'
|
|
81
62
|
```
|
|
82
63
|
|
|
83
|
-
---
|
|
84
|
-
|
|
85
64
|
### 删除角色
|
|
86
65
|
|
|
87
|
-
删除指定的角色。
|
|
88
|
-
|
|
89
66
|
```bash
|
|
90
67
|
cc delete role <projectPath> <roleId>
|
|
91
68
|
```
|
|
@@ -100,288 +77,5 @@ cc delete role <projectPath> <roleId>
|
|
|
100
77
|
**示例:**
|
|
101
78
|
|
|
102
79
|
```bash
|
|
103
|
-
# 删除指定角色
|
|
104
80
|
cc delete role . a0I9D000000XXXXUAI
|
|
105
81
|
```
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
## 完整工作流示例
|
|
110
|
-
|
|
111
|
-
### 场景:为新部门创建 CloudCC 角色
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
# 1. 确认项目已初始化(有 cloudcc-cli.config.js)
|
|
115
|
-
cat cloudcc-cli.config.js
|
|
116
|
-
|
|
117
|
-
# 2. 查询现有角色
|
|
118
|
-
cc get role .
|
|
119
|
-
|
|
120
|
-
# 3. 创建新角色(交互式选择直属上司)
|
|
121
|
-
cc create role . "销售经理"
|
|
122
|
-
cc create role . "销售代表" "初级销售人员"
|
|
123
|
-
|
|
124
|
-
# 4. 验证角色创建成功
|
|
125
|
-
cc get role .
|
|
126
|
-
|
|
127
|
-
# 5. 如需删除
|
|
128
|
-
# cc delete role . <roleId>
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
### 创建角色流程说明
|
|
132
|
-
|
|
133
|
-
创建角色的完整流程包含以下步骤:
|
|
134
|
-
|
|
135
|
-
1. **获取直属上司列表** - 调用 `role/addRole` 接口获取可选的上级角色
|
|
136
|
-
2. **选择直属上司** - 通过交互式选择确定新角色的上级
|
|
137
|
-
3. **保存角色** - 调用 `role/saveRole` 接口创建角色
|
|
138
|
-
|
|
139
|
-
---
|
|
140
|
-
|
|
141
|
-
## API 接口详情
|
|
142
|
-
|
|
143
|
-
### 什么是角色?
|
|
144
|
-
|
|
145
|
-
**角色(Role)** 是 CloudCC 系统中用于定义职能分工的概念。角色与简档(Profile)结合使用,共同控制用户的系统访问权限。
|
|
146
|
-
|
|
147
|
-
### 核心属性
|
|
148
|
-
|
|
149
|
-
| 属性 | 说明 | 示例 |
|
|
150
|
-
|------|------|------|
|
|
151
|
-
| **名称(rolename)** | 角色显示名称 | "销售经理" |
|
|
152
|
-
| **描述(description)** | 角色描述 | "负责销售团队管理" |
|
|
153
|
-
| **父角色(parentroleId)** | 上级角色 ID | "2025238BCF0D98D52xUF" |
|
|
154
|
-
| **角色ID(roleid)** | 角色唯一标识 | "202608C20F87C90KRqZr" |
|
|
155
|
-
| **创建时间** | 角色创建时间戳 | 1757993089000 |
|
|
156
|
-
|
|
157
|
-
---
|
|
158
|
-
|
|
159
|
-
## 一、查询角色
|
|
160
|
-
|
|
161
|
-
### 1.1 查询角色列表
|
|
162
|
-
|
|
163
|
-
**接口**: `POST /api/role/queryRole`
|
|
164
|
-
|
|
165
|
-
**请求参数**:
|
|
166
|
-
|
|
167
|
-
| 参数名 | 类型 | 必填 | 说明 |
|
|
168
|
-
|--------|------|------|------|
|
|
169
|
-
| display | string | 否 | 显示模式,传 `"list"` 返回列表数据 |
|
|
170
|
-
|
|
171
|
-
**请求示例**:
|
|
172
|
-
|
|
173
|
-
```json
|
|
174
|
-
{
|
|
175
|
-
"display": "list"
|
|
176
|
-
}
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
**返回数据**:
|
|
180
|
-
|
|
181
|
-
```javascript
|
|
182
|
-
{
|
|
183
|
-
"result": true,
|
|
184
|
-
"data": {
|
|
185
|
-
"list": [
|
|
186
|
-
{
|
|
187
|
-
"id": "202608C20F87C90KRqZr",
|
|
188
|
-
"rolename": "销售经理",
|
|
189
|
-
"parentroleId": "2025238BCF0D98D52xUF"
|
|
190
|
-
}
|
|
191
|
-
]
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
## 二、创建角色
|
|
199
|
-
|
|
200
|
-
### 2.1 获取直属上司列表
|
|
201
|
-
|
|
202
|
-
**接口**: `POST /api/role/addRole`
|
|
203
|
-
|
|
204
|
-
**说明**:创建角色前需要调用此接口获取可选的直属上司(上级角色)列表。
|
|
205
|
-
|
|
206
|
-
**请求参数**:
|
|
207
|
-
|
|
208
|
-
| 参数名 | 类型 | 必填 | 说明 |
|
|
209
|
-
|--------|------|------|------|
|
|
210
|
-
| id | string | 是 | 固定值 `"bab2025F8B20EE4d4005"` |
|
|
211
|
-
|
|
212
|
-
**请求示例**:
|
|
213
|
-
|
|
214
|
-
```json
|
|
215
|
-
{
|
|
216
|
-
"id": "bab2025F8B20EE4d4005"
|
|
217
|
-
}
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
**返回数据**:
|
|
221
|
-
|
|
222
|
-
```javascript
|
|
223
|
-
{
|
|
224
|
-
"result": true,
|
|
225
|
-
"data": {
|
|
226
|
-
"flist": [
|
|
227
|
-
{
|
|
228
|
-
"id": "2025238BCF0D98D52xUF",
|
|
229
|
-
"name": "总经理"
|
|
230
|
-
},
|
|
231
|
-
{
|
|
232
|
-
"id": "2025238BCF0D98D52xUG",
|
|
233
|
-
"name": "销售总监"
|
|
234
|
-
}
|
|
235
|
-
]
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
### 2.2 保存新角色
|
|
241
|
-
|
|
242
|
-
**接口**: `POST /api/role/saveRole`
|
|
243
|
-
|
|
244
|
-
**说明**:选择直属上司后,调用此接口创建新角色。
|
|
245
|
-
|
|
246
|
-
**请求参数**:
|
|
247
|
-
|
|
248
|
-
| 参数名 | 类型 | 必填 | 说明 |
|
|
249
|
-
|--------|------|------|------|
|
|
250
|
-
| dataJson | string | 是 | JSON 字符串,包含 rolename 和 parentroleId |
|
|
251
|
-
|
|
252
|
-
**dataJson 结构**:
|
|
253
|
-
|
|
254
|
-
| 字段 | 类型 | 必填 | 说明 |
|
|
255
|
-
|------|------|------|------|
|
|
256
|
-
| rolename | string | 是 | 新角色名称 |
|
|
257
|
-
| parentroleId | string | 是 | 直属上司角色 ID |
|
|
258
|
-
|
|
259
|
-
**请求示例**:
|
|
260
|
-
|
|
261
|
-
```json
|
|
262
|
-
{
|
|
263
|
-
"dataJson": "{\"rolename\":\"新角色\",\"parentroleId\":\"2025238BCF0D98D52xUF\"}"
|
|
264
|
-
}
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
**返回数据**:
|
|
268
|
-
|
|
269
|
-
```javascript
|
|
270
|
-
{
|
|
271
|
-
"result": true,
|
|
272
|
-
"data": "202608C20F87C90KRqZr" // 新创建的角色 ID
|
|
273
|
-
}
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
### 2.3 创建流程总结
|
|
277
|
-
|
|
278
|
-
```
|
|
279
|
-
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|
280
|
-
│ 1. 调用 addRole │────▶│ 2. 选择直属上司 │────▶│ 3. 调用 saveRole│
|
|
281
|
-
│ 获取上司列表 │ │ (交互式选择) │ │ 创建新角色 │
|
|
282
|
-
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
---
|
|
286
|
-
|
|
287
|
-
## 三、删除角色
|
|
288
|
-
|
|
289
|
-
### 3.1 删除前检查
|
|
290
|
-
|
|
291
|
-
- [ ] 是否有用户关联此角色
|
|
292
|
-
- [ ] 是否有下级角色依赖此角色
|
|
293
|
-
- [ ] 级联影响确认
|
|
294
|
-
|
|
295
|
-
### 3.2 删除流程
|
|
296
|
-
|
|
297
|
-
**接口**: `POST /api/role/deleteRole`
|
|
298
|
-
|
|
299
|
-
**请求参数**:
|
|
300
|
-
|
|
301
|
-
| 参数名 | 类型 | 必填 | 说明 |
|
|
302
|
-
|--------|------|------|------|
|
|
303
|
-
| roleid | string | 是 | 角色 ID(注意是小写) |
|
|
304
|
-
|
|
305
|
-
**请求示例**:
|
|
306
|
-
|
|
307
|
-
```json
|
|
308
|
-
{
|
|
309
|
-
"roleid": "202608C20F87C90KRqZr"
|
|
310
|
-
}
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
---
|
|
314
|
-
|
|
315
|
-
## 四、角色数据结构
|
|
316
|
-
|
|
317
|
-
### 4.1 查询接口返回的角色数据
|
|
318
|
-
|
|
319
|
-
```javascript
|
|
320
|
-
{
|
|
321
|
-
id: "202608C20F87C90KRqZr",
|
|
322
|
-
rolename: "销售经理",
|
|
323
|
-
parentroleId: "2025238BCF0D98D52xUF"
|
|
324
|
-
}
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
### 4.2 addRole 接口返回的上司数据
|
|
328
|
-
|
|
329
|
-
```javascript
|
|
330
|
-
{
|
|
331
|
-
id: "2025238BCF0D98D52xUF",
|
|
332
|
-
name: "总经理"
|
|
333
|
-
}
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
---
|
|
337
|
-
|
|
338
|
-
## 五、最佳实践
|
|
339
|
-
|
|
340
|
-
### 命名规范
|
|
341
|
-
|
|
342
|
-
| 项目 | 规范 | 示例 |
|
|
343
|
-
|------|------|------|
|
|
344
|
-
| 角色名 | 使用职能名称 | `销售经理`、`市场专员` |
|
|
345
|
-
| 描述 | 简洁说明职责 | `负责华东区销售管理` |
|
|
346
|
-
|
|
347
|
-
### 角色层级设计
|
|
348
|
-
|
|
349
|
-
- **合理分层**:根据组织架构设计角色层级
|
|
350
|
-
- **避免循环**:确保角色层级无循环依赖
|
|
351
|
-
- **权限继承**:上级角色自动继承下级角色的权限
|
|
352
|
-
|
|
353
|
-
### 创建角色注意事项
|
|
354
|
-
|
|
355
|
-
- 创建角色时必须选择一个直属上司
|
|
356
|
-
- 直属上司决定了角色在组织架构中的位置
|
|
357
|
-
- 建议先规划好组织架构再批量创建角色
|
|
358
|
-
|
|
359
|
-
---
|
|
360
|
-
|
|
361
|
-
## 六、常见问题
|
|
362
|
-
|
|
363
|
-
**Q: 角色和简档的区别?**
|
|
364
|
-
|
|
365
|
-
A:
|
|
366
|
-
- **简档(Profile)**:控制用户的系统功能访问权限,决定用户能做什么
|
|
367
|
-
- **角色(Role)**:定义用户的组织架构位置,用于数据共享和审批流程
|
|
368
|
-
|
|
369
|
-
**Q: 创建角色时如何选择直属上司?**
|
|
370
|
-
|
|
371
|
-
A: 当前实现会自动调用 `addRole` 接口获取可用的直属上司列表,并通过交互式命令行让用户选择。如需特定来源,建议先调用 `cc get role .` 查看现有角色。
|
|
372
|
-
|
|
373
|
-
**Q: 删除角色会影响用户吗?**
|
|
374
|
-
|
|
375
|
-
A: 如果角色已被用户关联,删除前需要先解除关联或转移用户到其他角色。
|
|
376
|
-
|
|
377
|
-
**Q: 可以修改角色的父级吗?**
|
|
378
|
-
|
|
379
|
-
A: 可以,调用角色更新接口修改 `parentroleId` 字段,注意检查循环依赖。
|
|
380
|
-
|
|
381
|
-
**Q: addRole 接口中的 id 参数是什么?**
|
|
382
|
-
|
|
383
|
-
A: 这是固定值 `"bab2025F8B20EE4d4005"`,用于获取直属上司列表的上下文标识。
|
|
384
|
-
|
|
385
|
-
---
|
|
386
|
-
|
|
387
|
-
*文档版本:1.1 | 最后更新:2026-03-26*
|
|
@@ -4,6 +4,82 @@
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## CLI 与本地文件(必读)
|
|
8
|
+
|
|
9
|
+
本仓库中的**定时类**(与定时作业绑定的 Java 类)通过 **cloudcc-cli** 与平台同步,本地目录为 **`schedule/<类名>/`**(内含 `*.java` 与 `config.json`),源码中的 `// @SOURCE_CONTENT_START` … `// @SOURCE_CONTENT_END` 与发布、拉取逻辑一致。**必须通过下列命令** 完成新建目录、发布、拉取与删除;不要手工新建 `schedule/` 子目录、不要整包复制其他项目的定时类、不要私自篡改 `config.json` 中的 `id` 或版本字段。
|
|
10
|
+
|
|
11
|
+
**允许的做法**:在 CLI 已生成的主类中,仅在上述 SOURCE 标记之间编写业务逻辑;与云端列表、详情、拉取、删除、发布相关的操作一律走命令。
|
|
12
|
+
|
|
13
|
+
执行命令前请确认:已完成 `cc doc project devguide` 中的环境初始化,项目根目录配置可用且包含 `accessToken`。
|
|
14
|
+
|
|
15
|
+
### 命令总览(以代码实现为准)
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
cc create timer <name>
|
|
19
|
+
cc publish timer <name>
|
|
20
|
+
cc pull timer <name>
|
|
21
|
+
cc get timer [listQueryJson] [projectPath]
|
|
22
|
+
cc detail timer <name>
|
|
23
|
+
cc detail timer "" <id>
|
|
24
|
+
cc pullList timer <id> <projectPath>
|
|
25
|
+
cc delete timer <nameOrId> [projectPath]
|
|
26
|
+
cc doc timer <introduction|devguide>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
参数约定:
|
|
30
|
+
|
|
31
|
+
- `name`:定时类名,与 `schedule/<name>/` 目录名一致。
|
|
32
|
+
- `listQueryJson`:可选;列表查询 JSON 经 `encodeURI(JSON.stringify(...))` 编码后传入;不传则使用默认分页参数。
|
|
33
|
+
- `projectPath`:项目根路径,可选。
|
|
34
|
+
- `id`:线上定时类 ID。`detail` 仅查服务器时:`cc detail timer "" <id>`。`pullList` 必填。
|
|
35
|
+
- `nameOrId`:本地目录名或类 ID;若本地 `config.json` 含 `id`,删除时优先使用该 ID。
|
|
36
|
+
|
|
37
|
+
### 命令作用摘要
|
|
38
|
+
|
|
39
|
+
| 命令 | 作用 |
|
|
40
|
+
|------|------|
|
|
41
|
+
| `create` | 在 `schedule/<name>/` 生成继承 `CCSchedule` 的 Java 模板与 `config.json` |
|
|
42
|
+
| `publish` | 将 SOURCE 区域提交到服务器;首次成功后可写回 `config.json` 的 `id` |
|
|
43
|
+
| `pull` | 按本地 `id` 拉取远端源码,覆盖主类中 SOURCE 区域(需已发布) |
|
|
44
|
+
| `get` | 查询线上定时类列表(JSON 输出) |
|
|
45
|
+
| `detail` | 按类名优先读本地;或仅按 `id` 读服务器 |
|
|
46
|
+
| `pullList` | 按类 `id` 将线上定时类落到指定项目的 `schedule/<类名>/` |
|
|
47
|
+
| `delete` | 删除服务器上的定时类 |
|
|
48
|
+
| `doc` | 输出模块文档;`devguide` 含附录后端 Java SDK 速查 |
|
|
49
|
+
|
|
50
|
+
### 推荐操作顺序
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# 1) 查看线上已有定时类(可选)
|
|
54
|
+
cc get timer
|
|
55
|
+
|
|
56
|
+
# 2) 新建定时类(仅通过 create 生成目录与模板)
|
|
57
|
+
cc create timer MySchedule
|
|
58
|
+
|
|
59
|
+
# 3) 编辑 schedule/MySchedule/MySchedule.java 中 SOURCE 区域后发布
|
|
60
|
+
cc publish timer MySchedule
|
|
61
|
+
|
|
62
|
+
# 4) 与服务器对齐时拉取
|
|
63
|
+
cc pull timer MySchedule
|
|
64
|
+
|
|
65
|
+
# 5) 按已知线上 ID 拉到指定项目
|
|
66
|
+
cc pullList timer <线上类ID> <projectPath>
|
|
67
|
+
|
|
68
|
+
# 6) 删除
|
|
69
|
+
cc delete timer MySchedule
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 文档子命令
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
cc doc timer introduction
|
|
76
|
+
cc doc timer devguide
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
仅支持 `introduction` 与 `devguide`。
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
7
83
|
## 📌 什么是定时作业?
|
|
8
84
|
|
|
9
85
|
定时作业是一种**自动化任务调度系统**,允许你:
|
|
@@ -416,7 +492,13 @@ function main($CCDK, obj) {
|
|
|
416
492
|
|
|
417
493
|
## 📋 管理操作
|
|
418
494
|
|
|
419
|
-
###
|
|
495
|
+
### 定时类:使用 CLI 管理本地 `schedule/`(推荐)
|
|
496
|
+
|
|
497
|
+
与**定时类源码**的创建、同步、删除,请优先使用上文「CLI 与本地文件(必读)」中的命令,避免绕过 CLI 直接改目录或 `config.json`。
|
|
498
|
+
|
|
499
|
+
以下接口面向**定时作业配置**(调度时间、启用状态等在设置中的作业),与 `schedule/` 下定时类源码管理是不同层面;具体以你环境的管理后台与 OpenAPI 为准。
|
|
500
|
+
|
|
501
|
+
### 查询定时作业(平台接口示例)
|
|
420
502
|
|
|
421
503
|
```bash
|
|
422
504
|
# 获取列表
|
|
@@ -6,6 +6,113 @@
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
## CLI 与本地文件(必读)
|
|
10
|
+
|
|
11
|
+
本仓库中的触发器源码通过 **cloudcc-cli** 与平台同步,本地目录为 **`triggers/<对象 API 名小写>/<触发器名>/`**(内含 `*.java`、`config.json`),源码中的 `// @SOURCE_CONTENT_START` … `// @SOURCE_CONTENT_END` 与发布、拉取逻辑一致。**必须通过下列命令** 完成新建、发布、拉取与删除;不要手工拼目录、不要整包复制其他项目的触发器、不要私自篡改 `config.json` 中的 `id`、`apiname` 等字段。
|
|
12
|
+
|
|
13
|
+
**允许的做法**:在 CLI 已生成的主类中,仅在上述 SOURCE 标记之间编写业务逻辑;与云端列表、详情、拉取、删除、发布相关的操作一律走命令。
|
|
14
|
+
|
|
15
|
+
执行命令前请确认:已完成 `cc doc project devguide` 中的环境初始化,项目根目录配置可用且包含 `accessToken`。创建触发器前通常需要先通过 `cc get object ...` 等拿到目标对象的 `schemetableName`、`targetObjectId`(见下文物「创建」示例)。
|
|
16
|
+
|
|
17
|
+
### 命令总览(以代码实现为准)
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
cc create triggers <encodedCreateJson>
|
|
21
|
+
cc publish triggers <namePath>
|
|
22
|
+
cc pull triggers <namePath>
|
|
23
|
+
cc get triggers <listQueryJson> [projectPath]
|
|
24
|
+
cc detail triggers <namePath>
|
|
25
|
+
cc detail triggers "" <id>
|
|
26
|
+
cc pullList triggers <id> <projectPath>
|
|
27
|
+
cc delete triggers <namePathOrId> [projectPath]
|
|
28
|
+
cc doc triggers <introduction|devguide>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
参数约定:
|
|
32
|
+
|
|
33
|
+
- `encodedCreateJson`:`encodeURI(JSON.stringify({ ... }))`,其中至少包含:
|
|
34
|
+
- `schemetableName`:目标对象 API 名(如 `Account`)
|
|
35
|
+
- `targetObjectId`:目标对象 ID
|
|
36
|
+
- `triggerTime`:触发时机(如 `beforeInsert`、`beforeUpsert` 等,以平台为准)
|
|
37
|
+
- `name`:触发器类名(目录名)
|
|
38
|
+
- `apiname`:触发器 API 名(全局唯一)
|
|
39
|
+
- `namePath`:**对象目录/触发器名**,与本地路径一致,例如 `account/MyTrigger`(`schemetableName` 小写 + `/` + `name`)。`publish`、`pull`、`delete`(按路径删除时)均使用该形式。
|
|
40
|
+
- `listQueryJson`:列表查询 JSON,经 `encodeURI(JSON.stringify(...))` 编码后传入(**必填**,实现上无默认空查询)。
|
|
41
|
+
- `projectPath`:项目根路径,可选。
|
|
42
|
+
- `id`:线上触发器 ID。`detail` 仅查服务器:`cc detail triggers "" <id>`。
|
|
43
|
+
- `namePathOrId`:可为 `对象小写/触发器名` 形式的路径;若本地 `config.json` 含 `id`,删除时优先用该 ID。
|
|
44
|
+
|
|
45
|
+
### 命令作用摘要
|
|
46
|
+
|
|
47
|
+
| 命令 | 作用 |
|
|
48
|
+
|------|------|
|
|
49
|
+
| `create` | 在 `triggers/<对象小写>/<name>/` 生成继承 `CCTrigger` 的 Java 与 `config.json` |
|
|
50
|
+
| `publish` | 提交 SOURCE 区域等到服务器;首次成功后可写回 `config.json` 的 `id`、`apiname` 等 |
|
|
51
|
+
| `pull` | 按本地已发布 `id` 拉取远端源码,覆盖 SOURCE 区域 |
|
|
52
|
+
| `get` | 按条件查询线上触发器列表(JSON 输出) |
|
|
53
|
+
| `detail` | 按 `namePath` 优先读本地;或仅按 `id` 读服务器 |
|
|
54
|
+
| `pullList` | 按触发器 `id` 还原到指定项目的 `triggers/...` |
|
|
55
|
+
| `delete` | 删除服务器上的触发器 |
|
|
56
|
+
| `doc` | 输出模块文档;`devguide` 含附录后端 Java SDK 速查 |
|
|
57
|
+
|
|
58
|
+
### 创建示例(需先准备对象信息)
|
|
59
|
+
|
|
60
|
+
先构造对象(字段与平台约定一致),再整段做 `encodeURI(JSON.stringify(...))`,作为 `cc create triggers` 的**唯一参数**:
|
|
61
|
+
|
|
62
|
+
```json
|
|
63
|
+
{
|
|
64
|
+
"schemetableName": "Account",
|
|
65
|
+
"targetObjectId": "<目标对象 ID>",
|
|
66
|
+
"triggerTime": "beforeInsert",
|
|
67
|
+
"name": "MyTrigger",
|
|
68
|
+
"apiname": "NTrigger_unique_api_name"
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
在 Node 中生成编码后参数示例:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
node -p "encodeURI(JSON.stringify({schemetableName:'Account',targetObjectId:'<对象ID>',triggerTime:'beforeInsert',name:'MyTrigger',apiname:'NTrigger_xxx'}))"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
将命令输出的**一整行**传给:`cc create triggers '<粘贴>'`。
|
|
79
|
+
|
|
80
|
+
### 推荐操作顺序
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
# 1) 查询自定义对象,取得 schemetableName、targetObjectId(示例)
|
|
84
|
+
cc get object . custom
|
|
85
|
+
|
|
86
|
+
# 2) 创建本地触发器目录与模板(encodedCreateJson 见上文)
|
|
87
|
+
cc create triggers '<encodedCreateJson>'
|
|
88
|
+
|
|
89
|
+
# 3) 编辑 triggers/<对象小写>/<name>/<name>.java 中 SOURCE 后发布
|
|
90
|
+
cc publish triggers account/MyTrigger
|
|
91
|
+
|
|
92
|
+
# 4) 与服务器对齐
|
|
93
|
+
cc pull triggers account/MyTrigger
|
|
94
|
+
|
|
95
|
+
# 5) 列表(查询 JSON 需 encodeURI)
|
|
96
|
+
cc get triggers '<listQueryJson>' .
|
|
97
|
+
|
|
98
|
+
# 6) 按线上 ID 拉到指定项目
|
|
99
|
+
cc pullList triggers <线上触发器ID> <projectPath>
|
|
100
|
+
|
|
101
|
+
# 7) 删除
|
|
102
|
+
cc delete triggers account/MyTrigger
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 文档子命令
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
cc doc triggers introduction
|
|
109
|
+
cc doc triggers devguide
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
仅支持 `introduction` 与 `devguide`。
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
9
116
|
## 一、什么是触发器
|
|
10
117
|
|
|
11
118
|
CloudCC 触发器是完全符合 Java 语法规范的代码,在特定业务事件发生时自动执行,实现业务逻辑自动化处理。
|
|
@@ -292,6 +399,7 @@ System.out.println("记录 ID:" + record.get("id"));
|
|
|
292
399
|
|
|
293
400
|
### 8.3 触发器开发 Checklist
|
|
294
401
|
|
|
402
|
+
- [ ] 本地 `triggers/` 目录仅通过 `cc create` / `cc pull` / `cc pullList` / `cc publish` / `cc delete` 等命令维护,不手造路径、不手改 `config.json` 的 `id`
|
|
295
403
|
- [ ] 明确触发时机(before/after/approval)
|
|
296
404
|
- [ ] 评估并规避递归触发风险
|
|
297
405
|
- [ ] 添加异常处理与关键日志
|