Export Flow¶
Export the workflow configuration.
Prerequisites¶
The user must belong to the OU which the target workflow belongs to.
Request Format¶
GET https://{apigw-address}/dataflow-batch-service/v2.0/flows?action=export&flowId={}&userId={}&orgId={}
Request Parameters (URI)¶
Name |
Location (Path/Query) |
Required or Not |
Data Type |
Description |
---|---|---|---|---|
flowId |
Query |
true |
Integer |
Workflow ID |
userId |
Query |
true |
String |
User ID. How to get userId>> |
orgId |
Query |
true |
String |
Organization ID which the user belongs to. How to get orgId>> |
Response Parameters¶
Name |
Data Type |
Description |
---|---|---|
data |
Flow Struct |
Detailed information of the workflow. See Flow Struct |
Flow Struct¶
Sample¶
{
"name": "workflow1",
"cycle": "D",
"cron": "0 0 0 * * ? *",
"parameters": "[]",
"alert_mode": 3,
"alert_to": "",
"app_id": "",
"submitter": "data_oxxxxxx",
"owners": "xxxx",
"visitors": "xxxx;",
"type": 1,
"sync_type": 1,
"desc": "",
"start_time": "2019-07-25",
"tasks": [
{
"name": "tass",
"resource": "default",
"type": "COMMAND",
"sync_type": 1,
"cmd": "echo "hello"",
"submitter": "",
"filePackage": "",
"cron": "",
"priorityLevel": 0,
"timeout": 300,
"retryLimit": 3,
"retryInterval": 0,
"successCode": "0",
"waitCode": "",
"asLink": false
}
],
"flow_links": [],
"task_links": [],
"relations": [],
"link_relations": []
}
Parameters¶
Name |
Data Type |
Description |
---|---|---|
name |
String |
Name of the workflow |
cycle |
String |
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 http://cron.qqe2.com/ |
parameters |
List<Map<key,value>> |
Global parameters that are configured for the workflow to dynamically adapt to the environment changes (in the format of key=value). |
alert_mode |
Integer |
Alert mode (0: Not enabled; 1: Email; 2: SMS; 3: Email and SMS) |
alert_to |
String |
Receiver of alerts |
app_id |
String |
Null string |
submitter |
String |
User who submitted the workflow |
owners |
String |
Owner of the workflow |
visitors |
String |
Users who can access the workflow (separated by semicolon) |
type |
Integer |
Scheduling type of the workflow (0: Manual; 1: Periodic; 2: Temporary) |
sync_type |
Integer |
Sync type of the workflow (0: File synchronization; 1: Data synchronization) |
desc |
String |
Description of the workflow |
start_time |
String |
Effective date of the workflow |
tasks |
List<Task> |
Collection of task nodes in the workflow, with each element representing a task in the workflow. See Task Struct |
flow_links |
List<FlowLink> |
Collection of workflow references, with each element representing a source workflow that the current workflow depends on (Using the link_id field in the FlowLink Struct, you can find the related link relation in the link_relations collection. The link relation represents the relationship between a specific task in the current workflow with the source workflow). |
task_links |
List<TaskLink> |
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 link_id field in the TaskLink Struct, you can find the related link relation in the link_relations collection. The link relation represents the relationship between a specific task in the current workflow with the source workflow). |
relations |
List<Relation> |
Collection of relations, with each element representing the upstream and downstream dependency between tasks. See Relation Struct |
link_relations |
List<LinkRelation> |
Collection of link relations. See LinkRelation Struct |
Task Struct¶
Sample¶
{
"name": "tass",
"resource": "default",
"type": "COMMAND",
"sync_type": 1,
"cmd": "echo "hello"",
"submitter": "",
"filePackage": "",
"cron": "",
"priorityLevel": 0,
"timeout": 300,
"retryLimit": 3,
"retryInterval": 0,
"successCode": "0",
"waitCode": "",
"asLink": false
}
Parameters¶
Name |
Data Type |
Description |
---|---|---|
name |
String |
Name of the task |
resource |
String |
Task resource |
type |
Integer |
Task type (0: Data Integration; 1: WORMHOLE; 2: CALCULATE; 3: SHELL: 4: CANAAN; 5: HIVE; 6: MR) |
sync_type |
Integer |
Sync type of the task (0: File synchronization; 1: Data synchronization) |
cmd |
String |
Command line |
submitter |
String |
User who submitted the task |
filePackage |
String |
File location |
cron |
String |
Time for task scheduling |
priorityLevel |
Integer |
Priority level of the task |
timeout |
Integer |
Timeout value |
retryLimit |
Integer |
Retry times |
retryInterval |
Integer |
Interval for retry |
successCode |
String |
Returned code for success |
waitCode |
String |
Null string |
asLink |
Boolean |
Whether the task has dependency relation with other tasks |
FlowLink Struct¶
Sample¶
{
"link_id": "0",
"source_flow_name": "jin"
}
Parameters¶
Name |
Data Type |
Description |
---|---|---|
link_id |
String |
Link ID |
source_flow_name |
String |
Name of the upstream workflow |
TaskLink Struct¶
Sample¶
{
"link_id": "0",
"source_flow_name": "dw",
"source_task_name": "tass"
}
Parameters¶
Name |
Data Type |
Description |
---|---|---|
link_id |
String |
Link ID |
source_flow_name |
String |
Name of the upstream workflow |
source_task_name |
String |
Name of the upstream task (with source_flow_name, the exact upstream task can be found) |
Relation Struct¶
Sample¶
{
"source_task_name": "tass",
"target_task_name": "rf",
"rerun": true
}
Parameters¶
Name |
Data Type |
Description |
---|---|---|
source_task_name |
String |
Name of the upstream task |
target_task_name |
String |
Name of the downstream task |
rerun |
Boolean |
Whether the downstream task will be started when rerunning (effective only for task-level rerunning) |
LinkRelation Struct¶
Sample¶
{
"link_id": "0",
"target_task_name": "tass",
"rerun": false
}
Parameters¶
Name |
Data Type |
Description |
---|---|---|
link_id |
String |
Link ID |
target_task_name |
String |
Name of the downstream task |
rerun |
Boolean |
Whether the downstream task will be started when rerunning |
Error Code¶
Code |
Message |
Description |
---|---|---|
62102 |
Flow validation exception |
Format of the request body is invalid |
62109 |
Server internal exception |
Server internal exception |
Sample¶
Request Sample¶
url: https://{apigw-address}/dataflow-batch-service/v2.0/flows?action=export&flowId={}&userId={}&orgId={}
method: GET
Return Sample¶
{
"status": 0,
"msg": "Success",
"data": {
"name": "nFlow",
"cycle": "D",
"cron": "0 0 0 * * ? *",
"parameters": "[]",
"alert_mode": 3,
"alert_to": "",
"app_id": "",
"submitter": "xxxx",
"owners": "xxxx",
"visitors": ";xxxx;",
"type": 1,
"sync_type": 1,
"desc": "ga",
"start_time": "2019-07-24",
"tasks": [
{
"name": "tass",
"resource": "default",
"type": "COMMAND",
"sync_type": 1,
"cmd": "echo "hello"",
"submitter": "",
"filePackage": "",
"cron": "",
"priorityLevel": 0,
"timeout": 300,
"retryLimit": 3,
"retryInterval": 0,
"successCode": "0",
"waitCode": "",
"asLink": false
}
],
"flow_links": [],
"task_links": [],
"relations": [],
"link_relations": []
}
}
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 = "******************";
String secretKey = "******************";
//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","your_userId");
request.setQueryParam("orgId","your_orgId");
request.setMethod("GET");
try {
JSONObject response = Poseidon.config(PConfig.init().appKey(accessKey).appSecret(secretKey).debug())
.url("https://{apigw-address}/dataflow-batch-service/v2.0/flows?action=export")
.getResponse(request, JSONObject.class);
System.out.println(response);
} catch (Exception e) {
e.printStackTrace();
}
}