Get Flow¶
Get the information of a specified workflow.
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=get&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¶
{
"virtual": false,
"freq": "0 0 0 * * ? *",
"type": 1,
"cycle": "D",
"alertMode": 3,
"appId": "",
"hasEditPri": true,
"startTime": "2019-07-18",
"locked": false,
"flowId": 2430,
"owner": " owner",
"creator": " creator",
"active": 0,
"updateUser": "xxxxxxx",
"updateTime": "2019-07-18 07:50:36.0",
"flowName": "yu",
"graph": "{
"queue":"","cycle":"D","desc":"","do_as":"db_xxxx","freq":"0 0 0 * * ? *","visitors":"","tasks":[{"task_name":"hello","task_id":"104443","y":0.0071,"x":0.0096,"node_id":"t_104443"}],"type":1,"creator":"xxxx","flows":[],"alert_mode":3,"relations":[],"name":"yu","start_time":"2019-07-18","active":0,"parameters":"[]","owners":";xxx;"
}",
"isUserLocked": false,
"entry": 2,
"doAs": "db_xxxxx",
"createTime": "2019-07-18 07:49:10.0",
"alertTo": "",
"visitor": ";xxxxx;",
"syncType": 1,
"parameters": "[]",
"hasReadPri": true,
"desc": ""
}
Parameters¶
Name |
Data Type |
Description |
---|---|---|
flowId |
Integer |
Workflow ID |
flowName |
String |
Name of the workflow |
active |
Integer |
Scheduling status of the workflow (0: Pause; 1: Start) |
creator |
String |
User who created the workflow |
createTime |
String |
Time when the workflow is created |
updateUser |
String |
User who updated the workflow |
updateTime |
String |
Time when the workflow is updated |
freq |
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/ |
cycle |
String |
Scheduling cycle (M: Month; W: Week; D: Day; H: Hour; mi: Minute) |
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). |
owner |
String |
Owner of the workflow |
visitor |
String |
Users who can access the workflow (separated by semicolon) |
doAs |
String |
OU account which the workflow belongs to |
alertMode |
Integer |
Alert mode (0: Not enabled; 1: Email; 2: SMS; 3: Email and SMS) |
alertTo |
String |
Receiver of alerts |
appId |
String |
Null string |
graph |
FlowGraph Struct |
Workflow dependency of the workflow. See FlowGraph Struct |
entry |
Integer |
Method used for creating the workflow (0: Portal; 1: API; 2: eos) |
type |
Integer |
Scheduling type of the workflow (0: Manual; 1: Periodic; 2: Temporary) |
syncType |
Integer |
Sync type of the workflow (0: File synchronization; 1: Data synchronization) |
desc |
String |
Description of the workflow |
startTime |
String |
Effective date of the workflow |
virtual |
Boolean |
Whether the workflow is a virtual workflow |
locked |
Boolean |
Whether the workflow is locked |
hasEditPri |
Boolean |
Whether the user has editing permission to the workflow |
hasReadPri |
Boolean |
Whether the user has reading permission to the workflow |
isUserLocked |
Boolean |
Whether the user is locked |
FlowGraph Struct¶
Sample¶
{
"creator":"xxxxx",
"freq":"0 0 0 * * ? *",
"alert_mode":3,
"type":1,
"owners":"xxxxx",
"visitors":";xxx; ",
"start_time":"2019-07-25"
"cycle":"D",
"do_as":"data_oxxxxx",
"flows":[],
"alert_to":"",
"name":"21",
"syncType":1,
"relations":[],
"parameters":"[]",
"app_id":"",
"tasks":
[{
"task_name":"tass",
"task_inst_id":"104890-20190812080700",
"x":0.002,
"y":0.002,
"task_id":104890,
"node_id":"t_104890",
"status":"CANCEL"}]
"queue":"",
"desc":"ga"
}
Parameters¶
Name |
Data Type |
Description |
---|---|---|
creator |
String |
User who created the workflow instance |
freq |
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/ |
alert_mode |
Integer |
Alert mode (0: Not enabled; 1: Email; 2: SMS; 3: Email and SMS) |
type |
Integer |
Scheduling type of the workflow (0: Manual; 1: Periodic; 2: Temporary) |
owners |
String |
Owner of the workflow instance |
visitors |
String |
Users who can access the workflow (separated by semicolon) |
start_time |
String |
Effective date of the workflow |
cycle |
String |
Scheduling cycle (M: Month; W: Week; D: Day; H: Hour; mi: Minute) |
do_as |
String |
OU account which the workflow belongs to |
flows |
List<FlowSimpleInfo> |
Collection of workflows that have dependency relation with the workflow. See FlowSimpleInfo Struct |
alert_to |
String |
Receiver of alerts |
name |
String |
Workflow name |
syncType |
Integer |
Sync type of the workflow (0: File synchronization; 1: Data synchronization) |
relations |
List<Relation> |
Collection of task relations, with each element representing the upstream and downstream dependency between tasks in the workflow. See Relation Struct |
parameters |
List<Map<key,value>> |
Parameters that are configured for the task to dynamically adapt to the environment changes (by the format of key=value) |
app_id |
String |
Null string |
tasks |
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 |
queue |
String |
Computing queue |
desc |
String |
Description of the workflow |
FlowSimpleInfo Struct¶
Sample¶
{
"flow_id":"2809",
"flow_name":"21",
"node_id":"f_2809",
"is_virtual":false,
"x":0.0125,
"y":0.0015
}
Parameters¶
Name |
Data Type |
Description |
---|---|---|
flow_id |
String |
Workflow ID |
flow_name |
String |
Name of workflow |
node_id |
String |
ID of the node that is part of other workflows |
is_virtual |
Boolean |
Whether the workflow is a virtual workflow |
x |
Double |
X-axis of the node on the configuration panel of the workflow |
y |
Double |
Y-axis of the node on the configuration panel of the workflow |
TaskSimpleInfo Struct¶
Sample¶
{
"task_name":"tass",
"x":0.0132,
"y":0.008100000381469727,
"task_id":"104575",
"node_id":"t_104575"
}
Parameters¶
Name |
Data Type |
Description |
---|---|---|
task_name |
String |
Name of task |
x |
Double |
X-axis of the task on the configuration panel |
y |
Double |
Y-axis of the task on the configuration panel |
task_id |
String |
Task ID |
node_id |
String |
Node ID (Note: Node ID is not the same with task ID, because there are task nodes and workflow nodes that have dependency relations in a workflow) |
Relation Struct¶
Sample¶
{
cycle_gap: "D0",
rerun: true,
source: "t_105048",
target: "t_104575"
}
Parameters¶
Name |
Data Type |
Description |
---|---|---|
cycle_gap |
String |
Scheduling time difference between upstream and downstream tasks, by the format of {cycle}{offset} (cycle is the unit of time different, and offset is value) |
source |
String |
Node ID of the upstream task |
target |
String |
Node ID of the downstream task |
rerun |
Boolean |
Whether the downstream task will be started when rerunning (effective only for task-level rerunning) |
Error Code¶
See Common Error Codes.
Sample¶
Request Sample¶
url: https://{apigw-address}/dataflow-batch-service/v2.0/flows?action=get&flowId=2479&userId={}&orgId={}
method: GET
Return Sample¶
{
"status": 0,
"msg": " Success",
"data": {
"flowId": 2479,
"flowName": "test0722-1",
"active": 0,
"creator": "xxxx",
"createTime": "2019-07-22 08:56:35.0",
"updateUser": "xxxx",
"updateTime": "2019-07-22 08:56:58.0",
"freq": "0 0 0 * * ? *",
"cycle": "D",
"parameters": "[{"key":"ouids","value":"oxxxxxxxx"},{"key":"path","value":"/user/db_henglin/test_0722-1/"},{"key":"overwrite","value":"true"}]",
"owner": "xxxx",
"visitor": ";xxxx;",
"doAs": "db_xxxx",
"alertMode": 1,
"alertTo": "",
"appId": "",
"graph": "{"queue":"","cycle":"D","desc":"","do_as":"db_xxxx","freq":"0 0 0 * * ? *","visitors":"","tasks":[{"task_name":"MDM-Sync","task_id":"104506","y":0.002,"x":0.002,"node_id":"t_104506"},{"task_name":"MDMHive","task_id":"104507","y":0.009,"x":0.002,"node_id":"t_104507"}],"type":0,"creator":"xxxx","flows":[],"alert_mode":1,"relations":[{"cycle_gap":"D0","rerun":true,"source":"t_104506","target":"t_104507"}],"name":"test0722-1","start_time":"2019-07-22","active":0,"parameters":"[{"key":"ouids","value":"oxxxxxxxxxxx"},{"key":"path","value":"/user/db_henglin/test_0722-1/"},{"key":"overwrite","value":"true"}]","owners":";xxxxx;"}",
"entry": 0,
"type": 0,
"syncType": 1,
"desc": "",
"startTime": "2019-07-22",
"virtual": false,
"locked": false,
"hasEditPri": false,
"hasReadPri": true,
"isUserLocked": false
}
}
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 getFlowTest(){
//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 = "xxxxxxxxxxxxxxx";
String secretKey = "xxxxxxxxxxxxxxx";
//Create a request and save the required parameters in the map of the Query.
Request request = new Request();
request.setQueryParam("flowId",2791);
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=get")
.getResponse(request, JSONObject.class);
System.out.println(response);
} catch (Exception e) {
e.printStackTrace();
}
}