Trigger Flow From Task

手动触发一次任务调度(仅运行指定的节点及其下游所有节点)。

前提条件

  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信息>>

action

Query

必需

String

固定值:triggerFromTask

请求参数(Body)

名称

必需/可选

数据类型

描述

flowId

必需

Integer

任务流ID。

taskId

必需

Integer

任务节点ID(将运行该节点及其下游所有节点)。

triggerTime

必需

Long

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

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

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

响应参数

名称

数据类型

描述

data

FlowInstanceId结构体

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

错误码

代码

错误信息

描述

62102

Invalid request body.

请求体格式错误或参数不合法

62102

Cannot create workflow instance. Please check if the workflow or task exist, and do not trigger the same workflow repeatedly in 1 minute.

创建任务流实例失败。请检查任务流或任务是否存在,且不要在1分钟内重复触发任务流。

62109

Server internal exception

服务器内部异常

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

示例

请求示例

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

method: POST

{
  "flowId": 3377,
  "taskId":108580,
  "triggerTime": 1594016819108
}

返回示例

{
  "code": 0,
  "msg": "OK",
  "data": {
    "flowInstanceId": "3377-20200706062600"
  }
}

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 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("taskId", 108580);
        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}/batch-processing-service/v2.1/flows")
                    .queryParam("orgId", "yourOrgId")
                    .queryParam("userId", "yourUserId")
                    .queryParam("action", "triggerFromTask")
                    .getResponse(request, JSONObject.class);

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