Trigger Flow

手动触发一次任务调度。

前提条件

  1. 用户必须为任务流的负责人
  2. 用户和任务流都没有被锁定

请求格式

POST https://{apigw-address}/dataflow-batch-service/v2.0/flows

请求参数(URI)

名称 位置(Path/Query) 必需/可选 数据类型 描述
userId Query 必需 String 用户ID。如何获取userId信息>>
orgId Query 必需 String 用户所属的组织ID。如何获取orgId信息>>
action Query 必需 String 固定值:trigger

请求参数(Body)

名称 必需/可选 数据类型 描述
flowId 必需 Integer 任务流ID。
triggerTime 必需 Long

任务流计划运行时刻,时间戳格式,单位为毫秒。规则如下:

  • 若触发时间选择当前时间之前,则立即触发实例,且实例运行时,该时间将会被传入时间参数中用于计算。
  • 任务流同一时间只允许一个实例运行,若预跑实例与正在运行实例冲突,则依次执行。

响应参数

名称 数据类型 描述
data JSONObject 包含返回的任务流实例ID。详见 FlowInstanceId结构体

FlowInstanceId结构体

示例

{
  "flowInstanceId": "2430-20190718075000"
}

参数

名称 数据类型 描述
flowInstanceId String 任务流实例的ID。

错误码

代码 错误信息 描述
62104 This workflow has no task, you cannot trigger it! 任务流中没有创建任务
62109 Server internal exception 服务器内部异常

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

示例

请求示例

url: https://{apigw-address}/dataflow-batch-service/v2.0/flows?action=trigger&userId={}&orgId={}

method: POST

requestBody:
{
  "flowId": 3377,
  "triggerTime": 1574385824000
}

返回示例

{
  "status": 0,
  "msg": " Success",
  "data": {
    "flowInstanceId": "2791-19700101000000"
  }
}

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 triggerImmediatelyTest(){
        //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();
        HashMap<String,Object> hashMap = new HashMap<String, Object>(2);
        hashMap.put("flowId", 3377);
        hashMap.put("triggerTime",System.currentTimeMillis()+60*1000);
        request.setBodyParam(hashMap);
        request.setMethod("POST");

        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("action", "trigger")
                    .getResponse(request, JSONObject.class);

            System.out.println(response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}