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可以指定某个事件在其指定的时间点被触发,比如:c1 (0 1 * * * ? *) 定义了事件在每个小时的1分0秒触发,c2 (59 59 23 * * ? *) 定义了事件在每天的23时59分59秒触发。有关Crontab的更多配置,详见 http://cron.qqe2.com/
cycle String 调度周期(M:月;W:周;D:天;H:小时;mi:分钟)。
parameters List<Map<key,value>> 调度参数。作为统一配置的全局参数,可以在节点内使用这些参数,以使任务运行时能动态适配环境变化(参数需要以 key-value 的格式表达,例如:[{"key":"env","value":"product"},{"key":"task_id","value":"123456"}] )。
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可以指定某个事件在其指定的时间点被触发,比如:c1 (0 1 * * * ? *) 定义了事件在每个小时的1分0秒触发,c2 (59 59 23 * * ? *) 定义了事件在每天的23时59分59秒触发。有关Crontab的更多配置,详见 http://cron.qqe2.com/
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>> 调度参数。作为统一配置的全局参数,可以在节点内使用这些参数,以使任务运行时能动态适配环境变化(参数需要以 key-value 的格式表达,例如:[{"key":"env","value":"product"},{"key":"task_id","value":"123456"}] )。
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();
        }
    }
}