Update And Trigger Flow

使用新的参数触发一次任务流调度(不改变原任务流的信息,仅使用新的参数生成一个任务流实例)。

前提条件

  1. 用户必须为任务流的负责人

  2. 用户和任务流都没有被锁定

请求格式

POST https://{apigw-address}/batch-processing-service/v2.1/flows

请求参数(URI)

名称

位置(Path/Query)

必需/可选

数据类型

描述

userId

Query

必需

String

用户ID。如何获取userId信息>>

orgId

Query

必需

String

用户所属的组织ID。如何获取orgId信息>>

请求参数(Body)

名称

必需/可选

数据类型

描述

flowId

必需

Integer

任务流ID。

triggerTime

必需

Long

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

  • 若触发时间选择当前时间之前,则立即触发实例,且实例运行时,该时间将会被传入时间参数中用于计算。

  • 任务流同一时间只允许一个实例运行,若预跑实例与正在运行实例冲突,则依次执行。

parameters

必需

List<Map<key,value>>

调度参数。作为统一配置的全局参数,可以在节点内使用这些参数,以使任务运行时能动态适配环境变化(参数需要以key=value的格式表达)。有关使用参数的详细信息,参见 设置任务流或SHELL类型任务的参数>>

响应参数

名称

数据类型

描述

data

JSONObject

包含返回的任务流实例ID。详见 FlowInstanceId结构体

错误码

代码

错误信息

描述

62104

This workflow has no task, you cannot trigger it!

任务流中没有创建任务

62109

Server internal exception

服务器内部异常

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

示例

请求示例

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

method: POST

requestBody:
{
    "flowId": 3377,
    "triggerTime": 1574385824000,
  "parameters": [{"key":"REPLACE","value":"ddee"}]
}

返回示例

{
  "code": 0,
  "msg": "OK",
  "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 updateAndtriggerTest(){
        //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);
        hashMap.put("parameters", "[{\"key\":\"REPLACE\",\"value\":\"ddee\"}]");
        request.setBodyParam(hashMap );
        request.setMethod("POST");
        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("action", "updateAndTrigger")
                    .getResponse(request, JSONObject.class);

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