Get Flow¶
获取指定ID的任务流信息。
前提条件¶
用户必须属于目标任务流所属的OU。
请求格式¶
GET https://{apigw-address}/dataflow-batch-service/v2.0/flows
请求参数(URI)¶
名称 |
位置(Path/Query) |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|---|
flowId |
Query |
必需 |
Integer |
任务流ID。 |
userId |
Query |
必需 |
String |
用户ID。如何获取userId信息>> |
orgId |
Query |
必需 |
String |
用户所属的组织ID。如何获取orgId信息>> |
action |
Query |
必需 |
String |
固定值:get |
响应参数¶
名称 |
数据类型 |
描述 |
---|---|---|
data |
List<JSONObject> |
包含任务流的详细信息。详见 Flow结构体 |
Flow结构体¶
示例¶
{
"flowId": 3560,
"flowName": "outuser1",
"active": 0,
"creator": "yourCreator",
"createTime": "2019-12-09 07:19:52.0",
"updateUser": "yourUpdateUser",
"updateTime": "2019-12-09 07:19:52.0",
"freq": "0 0 0 * * ? *",
"cycle": "D",
"parameters": "[]",
"owner": "yourOwners",
"visitor": "yourVisitors",
"doAs": "yourDoAs",
"alertMode": 3,
"alertTo": "",
"appId": "",
"graph": {
"creator": "yourCreator",
"freq": "0 0 0 * * ? *",
"owners": "yourOwners",
"type": 1,
"cycle": "D",
"alertMode": 3,
"visitors": "yourVisitors",
"doAs": "your_bd_account",
"flows": [],
"appId": "",
"name": "outuser1",
"startTime": "2019-07-25",
"alertTo": "",
"syncType": 1,
"relations": [],
"parameters": "[]",
"tasks": [
{
"x": 0.002,
"y": 0.002,
"taskName": "tass",
"nodeId": "t_106089",
"taskId": 106089
}
],
"queue": "",
"desc": ""
},
"entry": 1,
"type": 1,
"syncType": 1,
"desc": "",
"queue": "",
"startTime": "2019-07-25",
"locked": false,
"virtual": false,
"hasEditPri": true,
"hasReadPri": true,
"isUserLocked": false
}
参数¶
名称 |
数据类型 |
描述 |
---|---|---|
flowId |
Integer |
任务流ID。 |
flowName |
String |
任务流名称。 |
active |
Integer |
任务流调度状态(0:暂停;1:运行)。 |
creator |
String |
任务流创建者名称。 |
createTime |
String |
任务流创建时间。 |
updateUser |
String |
任务流更新者。 |
updateTime |
String |
任务流更新时间。 |
freq |
String |
任务流调度周期。调度中使用的是七位的Crontab,概括而言,Crontab可以指定某个事件在其指定的时间点被触发,比如: |
cycle |
String |
调度周期(M:月;W:周;D:天;H:小时;mi:分钟)。 |
parameters |
List<Map<key,value>> |
调度参数。作为统一配置的全局参数,可以在节点内使用这些参数,以使任务运行时能动态适配环境变化(参数需要以 |
owner |
String |
任务流所有者名称(负责人)。 |
visitor |
String |
可访问者名称。 |
doAs |
String |
任务流所属组织的大数据账号。 |
alertMode |
Integer |
告警模式(0:无, 1:仅邮件告警, 2:仅短信告警, 3:邮件与短信告警)。 |
alertTo |
String |
告警对象。 |
appId |
String |
N/A,通常为空字符串。 |
graph |
List<JSONObject> |
任务流中任务依赖关系描述信息,详见 FlowGraph结构体 |
entry |
Integer |
通过何种方式创建的任务流(0:portal;1:API;2:eos)。 |
type |
Integer |
任务流调度类型(0:手动调度任务;1:周期调度任务;2:临时任务)。 |
syncType |
Integer |
同步类型(0:文件同步;1:数据同步)。 |
desc |
String |
任务流描述信息。 |
queue |
String |
计算队列。 |
startTime |
String |
任务流生效日期(即开始调度日期)。 |
virtual |
Boolean |
是否为虚任务流。 |
locked |
Boolean |
任务流是否被锁定。 |
hasEditPri |
Boolean |
是否有编辑权限。 |
hasReadPri |
Boolean |
是否有读取权限。 |
isUserLocked |
Boolean |
用户是否被锁定。 |
FlowGraph结构体¶
示例¶
{
"creator": "yourCreator",
"freq": "0 0 0 * * ? *",
"owners": "yourOwners",
"type": 1,
"cycle": "D",
"alertMode": 3,
"visitors": "yourVisitors",
"doAs": "your_bd_account",
"flows": [],
"appId": "",
"name": "outuser1",
"startTime": "2019-07-25",
"alertTo": "",
"syncType": 1,
"relations": [],
"parameters": "[]",
"tasks": [
{
"x": 0.002,
"y": 0.002,
"taskName": "tass",
"nodeId": "t_106089",
"taskId": 106089
}
],
"queue": "",
"desc": ""
}
参数¶
名称 |
数据类型 |
描述 |
---|---|---|
creator |
String |
任务流实例创建者名称。 |
freq |
String |
任务流调度周期。调度中使用的是七位的Crontab,概括而言,Crontab可以指定某个事件在其指定的时间点被触发,比如: |
alertMode |
Integer |
告警模式(0:无, 1:仅邮件告警, 2:仅短信告警, 3:邮件与短信告警)。 |
type |
Integer |
任务流调度类型(0:手动调度任务;1:周期调度任务;2:临时任务)。 |
owners |
String |
任务流实例所有者(负责人)的用户名(多个owner之间以 ; 分开,例如owners=“userNameA;userNameB”)。 |
visitors |
String |
可访问者的用户名(多个visitor之间以 ; 分开,例如visitors=“userNameA;userNameB”)。 |
startTime |
String |
任务流生效日期(即开始调度日期)。 |
cycle |
String |
调度周期(M:月;W:周;D:天;H:小时;mi:分钟)。 |
doAs |
String |
任务流所属组织的大数据账号。 |
flows |
JSONObject |
与当前任务流相关联的其他任务流的集合。详见 FlowSimpleInfo结构体 |
alertTo |
String |
告警目标。 |
name |
String |
任务流名称。 |
syncType |
Integer |
同步类型(0:文件同步;1:数据同步)。 |
relations |
List<Relation> |
任务关连线集合,集合中每个元素表示任务流中两个任务具有上下游数据关系。详见 Relation结构体 |
parameters |
List<Map<key,value>> |
调度参数。作为统一配置的全局参数,可以在节点内使用这些参数,以使任务运行时能动态适配环境变化(参数需要以 |
appId |
String |
N/A,通常为空字符串。 |
tasks |
JSONObject |
任务流中包含的任务节点的集合。集合中每个元素是一个TaskSimpleInfo结构体,该结构体包含了任务节点的简要信息。详见 TaskSimpleInfo结构体 |
queue |
String |
计算队列。 |
desc |
String |
任务流描述信息。 |
FlowSimpleInfo结构体¶
示例¶
{
"flowId": 2809,
"flowName": "21",
"nodeId": "f_2809",
"isVirtual": false,
"x": 0.0125,
"y": 0.0015
}
参数¶
名称 |
数据类型 |
描述 |
---|---|---|
flowId |
Integer |
任务流ID。 |
flowName |
String |
任务流名称。 |
nodeId |
String |
作为其他任务流节点的节点ID。 |
isVirtual |
Boolean |
是否为虚任务流。 |
x |
Double |
作为节点在当前任务流配置面板中的位置,x坐标。 |
y |
Double |
作为节点在当前任务流配置面板中的位置,y坐标。 |
TaskSimpleInfo结构体¶
示例¶
{
"taskName": "tass",
"x": 0.0132,
"y": 0.008100000381469727,
"taskId": 104575,
"nodeId": "t_104575"
}
参数¶
名称 |
数据类型 |
描述 |
---|---|---|
taskName |
String |
任务名称。 |
x |
Double |
任务在面板中的位置信息,x坐标。 |
y |
Double |
任务在面板中的位置信息,y坐标。 |
taskId |
Integer |
任务ID。 |
nodeId |
String |
节点ID(注意:不同于任务ID。任务流中既可以有任务节点,也可以有相依赖的任务流节点,都作为该任务流的一个节点,具有唯一的节点ID)。 |
Relation结构体¶
示例¶
{
cycleGap: "D0",
rerun: true,
source: "t_105048",
target: "t_104575"
}
参数¶
名称 |
数据类型 |
描述 |
---|---|---|
cycleGap |
String |
上下游任务调度时间差(格式为:{cycle}{offset},cycle表示时间差单位,参见`cycle`字段的描述;offset为调度时间差具体数值)。 |
source |
String |
上游任务节点ID。 |
target |
String |
下游任务节点ID。 |
rerun |
Boolean |
true和false仅在任务级联重跑时生效。true表示重跑时,下游节点会被执行;false表示重跑时,下游节点不会被执行。 |
错误码¶
参见 通用错误码。
示例¶
请求示例¶
url: https://{apigw-address}/dataflow-batch-service/v2.0/flows?action=get&flowId=2479&userId={}&orgId={}
method: GET
返回示例¶
{
"status": 0,
"msg": "SUCCESS",
"data": {
"flowId": 2479,
"flowName": "test0722-1",
"active": 0,
"creator": "yourCreator",
"createTime": "2019-07-22 08:56:35.0",
"updateUser": "yourUpdateUser",
"updateTime": "2019-07-22 08:56:58.0",
"freq": "0 0 0 * * ? *",
"cycle": "D",
"parameters": "[{\"key\":\"overwrite\",\"value\":\"true\"}]",
"owner": "yourOwner",
"visitor": "yourVisitor",
"doAs": "your_bd_account",
"alertMode": 1,
"graph": "{\"queue\":\"\",\"cycle\":\"D\",\"desc\":\"\",\"doAs\":\"yourDoAs\",\"freq\":\"0 0 0 * * ? *\",\"visitors\":\"yourVisitors\",\"tasks\":[{\"taskName\":\"MDM-Sync\",\"taskId\":104506,\"y\":0.002,\"x\":0.002,\"nodeId\":\"t_104506\"},{\"taskName\":\"MDMHive\",\"taskId\":\"104507\",\"y\":0.009,\"x\":0.002,\"nodeId\":\"t_104507\"}],\"type\":0,\"creator\":\"yourCreator\",\"flows\":[],\"alertMode\":1,\"relations\":[{\"cycleGap\":\"D0\",\"rerun\":true,\"source\":\"t_104506\",\"target\":\"t_104507\"}],\"name\":\"test0722-1\",\"startTime\":\"2019-07-22\",\"active\":0,\"parameters\":\"[{\\\"key\\\":\\\"overwrite\\\",\\\"value\\\":\\\"true\\\"}]\",\"owners\":\"yourOwners\"}",
"entry": 0,
"type": 0,
"syncType": 1,
"desc": "",
"startTime": "2019-07-22",
"virtual": false,
"locked": false,
"hasEditPri": false,
"hasReadPri": true,
"isUserLocked": false
}
}
Java SDK调用示例¶
import com.alibaba.fastjson.JSONObject;
import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.envision.apim.poseidon.request.PoseidonRequest;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
public class SampleCode{
public static class Request extends PoseidonRequest {
public void setQueryParam(String key, Object value){
queryParams().put(key, value);
}
public void setHeaderParam(String key, String value){
headerParams().put(key, value);
}
public void setBodyParam(Map<String, Object> bodyPara){
bodyParams().putAll(bodyPara);
}
public void setMethod(String method) {
this.method = method;
}
private String method;
public String baseUri() {
return "";
}
public String method() {
return method;
}
}
@Test
public void getFlowTest(){
//1.在EnOS Console的左边导航栏中点击应用注册。
//2.点击需调用API的应用,查看基本信息中的AccessKey即为accessKey、SecretKey即为secretKey
String accessKey = "AccessKey of your APP";
String secretKey = "SecretKey of your APP";
//新建一个request 然后把需要的参数传进去存在Query的map中,key是参数名字,value是参数值
Request request = new Request();
request.setMethod("GET");
try {
JSONObject response = Poseidon.config(PConfig.init().appKey(accessKey).appSecret(secretKey).debug())
.url("https://{apigw-address}/dataflow-batch-service/v2.0/flows")
.queryParam("orgId", "yourOrgId")
.queryParam("userId", "yourUserId")
.queryParam("flowId", "2479")
.queryParam("action", "get")
.getResponse(request, JSONObject.class);
System.out.println(response);
} catch (Exception e) {
e.printStackTrace();
}
}
}