Export Flow

Export a workflow configuration.

Prerequisite

The user must belong to the organization (OU) which the target workflow belongs to.

Request Format

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

Request Parameters (URI)

Name Location (Path/Query) Mandatory/Optional Data Type Description
flowId Query Mandatory Integer The workflow ID.
userId Query Mandatory String The user ID. How to get userId>>
orgId Query Mandatory String The organization ID which the user belongs to. How to get orgId>>
action Query Mandatory String Fixed value: export

Response Parameters

Name Data Type Description
data Flow Struct The detailed information of the workflow. For more information, see Flow Struct

Flow Struct

Sample

{
    "name": "workflow1",
    "cycle": "D",
    "cron": "0 0 0 * * ? *",
    "parameters": "[]",
    "alertMode": 3,
    "submitter": "yourSubmitter",
    "owners": "yourOwners",
    "visitors": "yourVisitors;",
    "type": 1,
    "syncType": 1,
    "desc": "",
    "startTime": "2019-07-25",
    "tasks": [
      {
        "name": "tass",
        "resource": "default",
        "type": "COMMAND",
    "runMode": "{\"taskMode\":1,\"cpu\":0.5,\"memory\":1,\"maxParallel\":0,\"keyType\":0,\"datasourceId\":0,\"path\":\"\",\"content\":\"\"}",
        "syncType": 1,
        "cmd": "echo "hello"",
        "submitter": "",
        "filePackage": "",
        "cron": "",
        "priorityLevel": 0,
        "timeout": 300,
        "retryLimit": 3,
        "retryInterval": 0,
        "successCode": "0",
        "asLink": false
      }
    ],
    "flowLinks": [],
    "taskLinks": [],
    "relations": [],
    "linkRelations": []
}

Parameters

Name Data Type Description
name String The name of the workflow.
cycle String

The scheduling cycle.

  • M: Month
  • W: Week
  • D: Day
  • H: Hour
  • mi: Minute
cron String If CronTab syntax is used when specifying the time to start the workflow in a scheduling cycle, a 7-character CronTab expression is used. For more information about CronTab, see the Cron Expression Explainer
parameters Map The global parameters that are configured for the workflow to dynamically adapt to the environment changes (in the format of key=value).
alertMode Integer

The alert mode.

  • 0: Not enabled
  • 1: Email
  • 2: SMS
  • 3: Email and SMS
submitter String The workflow submission account (the big data account corresponding to the organization).
owners String The username of the owners of the workflow. The semicolon (;) is used to separate each owner, for example, owners=”userNameA;userNameB”.
visitors String The username of the vistors who can access the workflow. The semicolon (;) is used to separate each visitor, for example, visitors=”userNameA;userNameB”.
type Integer

The scheduling type of the workflow.

  • 0: Manual
  • 1: Periodic
  • 2: Temporary
syncType Integer

The sync type of the workflow.

  • 0: File synchronization
  • 1: Data synchronization
desc String The workflow description.
startTime String The effective date of the workflow.
tasks Array of Task Structs The collection of task nodes in the workflow, with each element representing a task in the workflow. For more information, see Task Struct
flowLinks Array of FlowLink Structs The collection of workflow references, with each element representing a source workflow that the current workflow depends on. (Using the linkId in the FlowLink Struct, you can find the related link relation in the linkRelations collection. The link relation represents the relationship between a specific task in the current workflow with the source workflow).
taskLinks Array of TaskLink Structs The collection of task references, with each element representing a task in a source workflow that a task in the current workflow depends on. (Using the linkId in the TaskLink Struct, you can find the related link relation in the linkRelations collection. The link relation represents the relationship between a specific task in the current workflow with the source workflow).
relations Array of Relation Structs The collection of relations between tasks, with each element representing the upstream and downstream dependency. For more information, see Relation Struct
linkRelations Array of LinkRelation Structs The collection of link relations. For more information, see LinkRelation Struct

Task Struct

Sample

{
    "name": "tass",
    "resource": "default",
    "type": "Shell",
    "runMode": "{\"taskMode\":1,\"cpu\":0.5,\"memory\":1,\"maxParallel\":0,\"keyType\":0,\"datasourceId\":0,\"path\":\"\",\"content\":\"\"}",
    "syncType": 1,
    "cmd": "echo 'hello'",
    "submitter": "",
    "filePackage": "",
    "cron": "",
    "priorityLevel": 0,
    "timeout": 300,
    "retryLimit": 3,
    "retryInterval": 0,
    "successCode": "0",
    "asLink": false
 }

Parameters

Name Data Type Description
name String The task name.
resource String The task resource.
type Integer The task type (3: SHELL; 7: Data Synchronization; 8: PYTHON; 9: External APP)
syncType Integer

The sync type of the task.

  • 0: File synchronization
  • 1: Data synchronization
cmd String The command line.
submitter String The workflow submission account (the big data account corresponding to the organization).
filePackage String The file location.
cron String The time for scheduling the task.
priorityLevel Integer The priority level of the task.
timeout Integer The timeout value.
retryLimit Integer The number of retries.
retryInterval Integer The interval for retry.
successCode String The success returned code.
asLink Boolean
  • true = the task has a dependency relation with other tasks
  • false = the task does not have a dependency relation with other tasks
runMode String Task running mode. For more information, see Run Mode Struct

Run Mode Struct

Sample

{
    "taskMode": 1,
    "cpu": 0.5,
    "memory": 1,
    "maxParallel": 0,
    "keyType": 0,
    "datasourceId": 0,
    "path": "",
    "content": ""
}

Parameters

Name Data Type Description
taskMode Integer Task running mode (1: Single Task; 2: Multiple Tasks).
cpu Float CPU (unit: core; minimun: 0.1; maximum 2) that is required by running each task (single task or sub-task of multiple tasks).
memory Float Memory (unit: G; minimun: 0.3; maximum 4) that is required by running each task (single task or sub-task of multiple tasks).
maxParallel Integer In multiple tasks mode, the maximum concurrency of sub-tasks.
keyType Integer In multiple tasks mode, the source of the distribution key (1: external files; 2: custom key, specified by the content parameter).
datasourceId Integer When the source of the distribution key is from external files, the data source ID (generated when registering the data source through the Data Source Registration service).
path String When the source of the distribution key is from external files, the path of external data source that stores the distribution key file.
content String When the source of the distribution key is custom key, the content of the distribution key.

Relation Struct

Sample

{
    "sourceTaskName": "tass",
    "targetTaskName": "rf",
    "rerun": true
}

Parameters

Name Data Type Description
sourceTaskName String The name of the upstream task.
targetTaskName String The name of the downstream task.
rerun Boolean

Effective only for task-level re-running.

  • true = the downstream task will be started when re-running
  • false = the downstream task will not be started when re-running

LinkRelation Struct

Sample

{
    "linkId": "0",
    "targetTaskName": "tass",
    "rerun": false
}

Parameters

Name Data Type Description
linkId String The link ID.
targetTaskName String The name of the downstream task.
rerun Boolean
  • true = the downstream task will be started when re-running
  • false = the downstream task will not be started when re-running

Error Code

Code Message Description
62102 Flow validation exception The format of the request body is invalid.
62109 Internal server exception Internal server exception.

For other error codes, see Common Error Codes.

Samples

Request Sample

url: https://{apigw-address}/batch-processing-service/v2.1/flows?action=export&flowId=2924&userId=yourUserId&orgId=yourUserId
method: GET

Return Sample

{
  "code": 0,
  "msg": "OK",
  "data": {
    "name": "nFlow",
    "cycle": "D",
    "cron": "0 0 0 * * ? *",
    "parameters": "[]",
    "alertMode": 3,
    "submitter": "yourSubmitter",
    "owners": "yourOwners",
    "visitors": ";yourVisitors;",
    "type": 1,
    "syncType": 1,
    "desc": "ga",
    "startTime": "2019-07-24",
    "tasks": [
      {
        "name": "tass",
        "resource": "default",
        "type": "COMMAND",
        "syncType": 1,
        "cmd": "echo 'hello'",
        "submitter": "",
        "filePackage": "",
        "cron": "",
        "priorityLevel": 0,
        "timeout": 300,
        "retryLimit": 3,
        "retryInterval": 0,
        "successCode": "0",
        "asLink": false,
        "runMode": "{\"taskMode\":1,\"cpu\":0.5,\"memory\":1,\"maxParallel\":0,\"keyType\":0,\"datasourceId\":0,\"path\":\"\",\"content\":\"\"}"
      }
    ],
    "flowLinks": [],
    "taskLinks": [],
    "relations": [],
    "linkRelations": []
  }
}

Java SDK Sample

import com.alibaba.fastjson.JSONObject;
import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;

public 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;
    }
}

public void exportFlowTest(){
        //1. Select Application Registration from the left navigation bar of EnOS Console.
        //2. Open the App Detail page to get the AccessKey and SecretKey of the application.

        String accessKey = "yourAppAccessKey";
        String secretKey = "yourAppSecretKey";

        //Create a request and save the required parameters in the map of the Query.
        Request request = new Request();
        request.setQueryParam("flowId","2924");
        request.setQueryParam("userId","yourUserId");
        request.setQueryParam("orgId","yourOrgId");
        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?action=export")
                    .getResponse(request, JSONObject.class);
            System.out.println(response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }