Get Flow

获取指定ID的任务流信息。

前提条件

用户必须属于目标任务流所属的OU。

请求格式

GET https://{apigw-address}/batch-processing-service/v2.1/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": "outuser",
        "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,
        "graph": {
            "creator": "yourCreator",
            "freq": "0 0 0 * * ? *",
            "owners": "yourOwners",
            "type": 1,
            "cycle": "D",
            "alertMode": 3,
            "visitors": "yourVisitors",
            "doAs": "your_bd_account",
            "flows": [],
            "name": "outuser1",
            "startTime": "2019-07-25",
            "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

可访问者名称(多个visitor以 ; 隔开)。

doAs

String

任务流所属组织的大数据账号。

alertMode

Integer

告警模式(0:无, 1:仅邮件告警, 2:仅短信告警, 3:邮件与短信告警)。

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": [],
    "name": "outuser1",
    "startTime": "2019-07-25",
    "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结构体

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"}] )。

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表示重跑时,下游节点不会被执行。

错误码

代码

错误信息

描述

62102

flow not found

未找到任务流

有关其他错误码的描述,参见 通用错误码

示例

请求示例

url: https://{apigw-address}/batch-processing-service/v2.1/flows?action=get&flowId=2479&userId={}&orgId={}

method: GET

返回示例

{
    "code": 0,
    "msg": "OK",
    "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": "yourOwners",
        "visitor": "yourVisitors",
        "doAs": "yourDoAs",
        "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}/batch-processing-service/v2.1/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();
        }
    }
}