# Condition配置(工作流流程校验)
# 关键配置
conditions: # 条件扩展
- code: demo_condition2 # 条件对象code (特殊校验任务condition)
type: progress # 需要执行type,固定为progress
data: # 返回任务结果
handler: progress.data
desc: 这是一个condition demo对象 # 条件对象描述
icon: progress # 扩展显示的图标,固定为: progress
name: 插件condiiton Demo2 #条件对象名
related:
- story
- bug
- task
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 数据接口
示例中的condition.data.handler表示在项目文件中的modules/autotasks/progress.js文件定义了一个data方法,TAPD进行条件判断前,会调用这个方法获取数据,然后与规则配置的数据进行比对,得出条件判断结果。
- 数据格式
1.调用参数
参数 | 类型 | 说明 |
---|---|---|
workspace_id | integer | tapd项目ID |
object_code | string | 对象名(story,bug,task) |
object_id | integer | 对象ID |
2.返回数据
参数 | 类型 | 说明 |
---|---|---|
status | integer | 状态,候选值:1(成功)2(执行中)0(失败) |
msg | string | 错误信息 |
data | object | 自定义显示字段,支持text和link |
示例1:
/**
* 返回数据,用于条件比对
* @returns {Object} 组件配置JSON
*/
module.exports.data = function () {
return {
status: 1,
msg : '',
data: [ // 自定义显示字段
{
field: '执行详情',
type: 'link',
value: 'https://www.qq.com',
},
{
field: '执行时间',
type: 'text',
value: '2022-09-20 12:30:30',
},
],
};
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
示例2(任务异步校验):
const tapd = require("@tencent/tplugin-core/src/tapd")
/**
* 执行自定义任务
*/
function executeTask(taskCode) {
// todo 这里实现触发任务的逻辑
}
/**
* 查询任务某次执行结果
*/
function queryTask(taskCode, buildId) {
// todo 这里实现查询任务结果的逻辑
}
function getResult(pipelineResult){
switch (pipelineResult) {
case 'success':
return 1;
case 'processing':
return 2;
case 'fail':
return 0;
}
return 2;
}
/**
* 返回任务执行结果数据,用于条件比对
* @returns {Object} 状态JSON
*/
module.exports.data = function (data) {
// todo 这里是示例代码,请根据实际情况修改
const storyId = data['object_id'];
const storageDocument = 'story_pipeline_record_cache';
const taskCode = 'task1';
// 这里用缓存记录任务异步执行结果
const result = await tapd.storageQuery({
document: storageDocument,
condition: {
storyId: storyId,
},
})
// 如果之前执行过校验任务,则查询执行结果
if(result){ // 如果查到缓存,查一下任务是否执行完了
const buildId = result['buildId'];
// 调用接口查询流水线执行结果
const pipelineResult = queryTask(taskCode,buildId);
return {
status: getResult(taskCode,buildId),
msg : '',
data: [ // 自定义显示字段
{
field: '执行详情',
type: 'link',
value: 'https://www.qq.com',
},
{
field: '执行时间',
type: 'text',
value: '2022-09-20 12:30:30',
},
],
};
}else{ // 如果查不到缓存,则执行一下任务,缓存需求对应的构建ID
// 调用接口执行任务
const pipelineResult = executeTask(taskCode);
// 记录一下任务buildId和需求对象的关联关系
const result = await tapd.storageSave({
document: storageDocument,
data: {
storyId: storyId,
buildId: pipelineResult['buildId'],
},
});
// 返回:校验任务正在执行中
return {
status: 2,
msg : '',
data: [ // 自定义显示字段
{
field: '执行详情',
type: 'link',
value: 'https://www.qq.com',
},
{
field: '执行时间',
type: 'text',
value: '2022-09-20 12:30:30',
},
],
};
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# 关联配置
related字段用来指定哪些对象可以配置自定义condition。
- 附常用对象:
story
task
bug
1
2
3
2
3