在使用java 调用dolphinscheduler的API接口时要注意的事项:
1:官方文档中写的是使用ui界面创建token,然后将token设置在header中,但是如果没有这个token怎么办?因为在一个陌生的环境中,一般没人会记这个token,而是使用账号密码登录,所以我们可以使用账号密码登录,dolphinscheduler源码中的拦截器没有对这一步进行token校验,所以可以登陆,登陆完了后会返回一个sessionId字符串,将这个字符串设置到header中,key为sessionId,value为刚刚返回的那个字符串。
2:使用save task功能无法在相应的ui界面中查看到怎么办?
这个我也查不到,而且使用swagger中的查询任务的功能也查不到save 的task,那要怎么样在不使用taskCode的情况下才可以查询到这个task呢?
我们只需要在创建好task后,将获取到的taskCode再进行工作流关系中的修改工作流关系,将taskCode设置到一个任务的preTaskCode中,就可以使用查询project下的task中看到该task
3:创建project时,参数问题:
1:locations,taskRelationJson与taskDefinitionJson是list形式的json,与普通的{"key": "value"}这种形式来说,这三个参数需要的是[{"key":"value"}]的形式,没有[]会报错参数无效
2:taskDefinition的taskCode与taskRelationJson的postTaskCode,与Locations中的taskCode要一样,这三个参数的形式可以看源码中的Test,里面有,这里给大家分别贴出来一个合格的形式
带yigetask的taskDefinitionJson:
[
{
"code": 15465156156265,
"name": "test1",
"version": 1,
"description": "",
"delayTime": 0,
"taskType": "SHELL",
"taskParams": {
"resourceList": [],
"localParams": [],
"rawScript": "echo 1",
"dependence": {},
"conditionResult": {
"successNode": [],
"failedNode": []
},
"waitStartTimeout": {},
"switchResult": {}
},
"flag": "YES",
"taskPriority": "MEDIUM",
"workerGroup": "default",
"failRetryTimes": 0,
"failRetryInterval": 1,
"timeoutFlag": "CLOSE",
"timeoutNotifyStrategy": null,
"timeout": 0,
"environmentCode": -1
}
]
这个code是自己写的一个随机14位随机数。
locations:
[
{
"taskCode": 15465156156265,
"x": 332,
"y": 62
}
]
taskRelations:
[ { "name": "", "preTaskCode": 0, "preTaskVersion": 0, "postTaskCode": 15465156156265, "postTaskVersion": 1, "conditionType": "NONE", "conditionParams": "{}" } ]
3:剩下的projectCode去项目的那一套方法中去找,tenantCode去租户那一套方法中去找,这些都是只需要登上就可以直接查看的那种
4:重名问题:
dolphinshceduler中project和process是不可以重名的,这样就可以使用java制造一个根据名字查看code的功能,但是task的名字是可以重复的,这点就很烦,所以在查找task的具体信息时,只能使用taskCode。