Save Flow¶
Save the information of the current workflow.
Prerequisites¶
The user must be the owner of the workflow.
Request Format¶
POST https://{apigw-address}/dataflow-batch-service/v2.0/flows?action=save&userId={}&orgId={}
Request Parameters (URI)¶
Name |
Location (Path/Query) |
Required or Not |
Data Type |
Description |
---|---|---|---|---|
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>> |
Request Parameters (Body)¶
Name |
Required or Not |
Data Type |
Description |
---|---|---|---|
id |
true |
Integer |
Workflow ID |
type |
true |
Integer |
Scheduling type of the workflow (0: Manual; 1: Periodic; 2: Temporary) |
name |
true |
String |
Name of the workflow |
freq |
true |
String |
Use the CronTab syntax to specify the time to start the workflow in a scheduling cycle (specify a 7-character CronTab expression). For more information about CronTab, see http://cron.qqe2.com/ |
cycle |
true |
String |
Scheduling cycle (M: Month; W: Week; D: Day; H: Hour; mi: Minute) |
alert_mode |
true |
Integer |
Alert mode (0: Not enabled; 1: Email; 2: SMS; 3: Email and SMS) |
do_as |
true |
String |
OU account which the workflow belongs to |
owners |
true |
String |
Owner of the workflow |
visitors |
true |
String |
Users who can access the workflow (separated by semicolon) |
start_time |
true |
String |
Effective date of the workflow |
active |
true |
Integer |
Scheduling status of the workflow (0: Pause; 1: Start) |
parameters |
false |
List<Map<key,value>> |
Parameters that are configured for the workflow to dynamically adapt to the environment changes (by the format of key=value) |
desc |
false |
String |
Description of the workflow |
queue |
false |
String |
Computing queue |
tasks |
false |
List<TaskSimpleInfo> |
Collection of all task nodes in the workflow, with each element representing a TaskSimpleInfo struct, which contains basic information of a task node. See TaskSimpleInfo Struct |
flows |
false |
List<FlowSimpleInfo> |
Collection of workflows that have dependency relation with the workflow. See FlowSimpleInfo Struct |
relations |
false |
List<Relation> |
Collection of task relations, with each element representing the upstream and downstream dependency between tasks in the workflow. See Relation Struct |
Response Parameters¶
Name |
Data Type |
Description |
---|---|---|
data |
FlowID Struct |
ID of the workflow that is saved |
Error Code¶
Code |
Message |
Description |
---|---|---|
62102 |
graph not found |
Format of the graph parameter is invalid |
62105 |
Your account has been locked |
User account is locked. Please contact the administrator. |
Sample¶
Request Sample¶
url: https://{apigw-address}/dataflow-batch-service/v2.0/flows?action=save&userId=***&orgId=***
method: POST
requestBody:
{
"id":"2515",
"type":1,
"name":"fpostm",
"freq":"0 0 0 * * ? *",
"cycle":"D",
"alert_mode":3,
"do_as":"data_oxxxx",
"parameters":"[]",
"owners":";xxxxx;",
"desc":"e",
"start_time":"2019-07-23",
"visitors":";xxxxx;",
"active":0,
"queue":"",
"tasks":[
{
"task_name":"tass",
"x":0.0132,
"y":0.008100000381469727,
"task_id":"104575",
"node_id":"t_104575"
},
{
"task_name":"gg",
"x":0.0084,
"y":0.014199999237060546,
"task_id":"104590",
"node_id":"t_104590"
},
{
"task_name":"dff",
"x":0.0352,"y":0.008300002288818359,
"task_id":"104901","node_id":"t_104901"
}
],
"flows":
[
{
"is_virtual":false,
"flow_id":"2788",
"x":0.0186,
"flow_name":"jin",
"y":0.0016999999046325683,
"node_id":"f_2788"},
{"flow_id":"2819",
"flow_name":"104891(tass)",
"node_id":"f_2819",
"is_virtual":true,
"x":0.0125,
"y":0.023800001525878908}],
"relations":
[
{
"cycle_gap":"D0",
"source":"t_104575",
"rerun":true,
"target":"t_104590"
},
{
"cycle_gap":"D0",
"source":"f_2788",
"rerun":false,
"target":"t_104575"
}
]
}
Return Sample¶
{
"status": 0,
"msg": "Success",
"data": {
"flowId": 2841
}
}
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 saveFlowTest(){
//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();
HashMap<String,Object> hashMap = new HashMap<String, Object>(2);
hashMap.put("type",1);
hashMap.put("name","testWorkflow");
hashMap.put("cycle","D");
hashMap.put("freq","0 0 0 * * ? *");
hashMap.put("parameters","[]");
hashMap.put("alert_mode",3);
hashMap.put("alert_to","");
hashMap.put("id","2515");
hashMap.put("do_as","yourDoas");
hashMap.put("visitors","yourVisitors");
hashMap.put("owners","yourOwners");
hashMap.put("active",0);
hashMap.put("queue","");
hashMap.put("start_time","2019-07-25");
JSONArray jsonArrayTasks = new JSONArray();
JSONObject jsonObject = new JSONObject();
jsonObject.put("task_name","tass");
jsonObject.put("x",0.0132);
jsonObject.put("y",0.008100000381469727);
jsonObject.put("task_id","104575");
jsonObject.put("node_id","t_104575");
jsonArrayTasks.add(jsonObject);
hashMap.put("tasks",jsonArrayTasks);
JSONArray jsonArray = new JSONArray();
hashMap.put("relations",jsonArray);
hashMap.put("flows",jsonArray);
request.setQueryParam("userId","your_userId");
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?action=save")
.getResponse(request, JSONObject.class);
System.out.println(response);
} catch (Exception e) {
e.printStackTrace();
}
}