海豚调度器调用api接口启动工作流(java版本实现)
海豚调度器调用api接口启动工作流(亲试可用),详细介绍怎样用python代码启动工作流,不过后来有的生成环境是安装在docker,不通外网,python环境不支持requests。
方案1:离线安装requests
方案2:改成用java语言现实,所有依赖包打包成jar。
import java.net.URI;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpRequest;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.json.JSONArray;
import org.json.JSONObject;
public static void startWorkflow(String token, String projectName, String processDefinitionName, String processDefinitionId, String startNode) {
// 构建请求URL和参数
String url = DOLPHIN_SCHEDULER_URL + "/projects/" + projectName + "/executors/start-process-instance";
List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("processDefinitionName", processDefinitionName));
params.add(new BasicNameValuePair("processDefinitionId", processDefinitionId));
params.add(new BasicNameValuePair("failureStrategy", "CONTINUE"));
params.add(new BasicNameValuePair("warningType", "NONE"));
params.add(new BasicNameValuePair("warningGroupId", "0"));
params.add(new BasicNameValuePair("scheduleTime", ""));
params.add(new BasicNameValuePair("runMode", "RUN_MODE_SERIAL"));
params.add(new BasicNameValuePair("processInstancePriority", "MEDIUM"));
params.add(new BasicNameValuePair("workerGroup", "default"));
params.add(new BasicNameValuePair("timeout", "100"));
params.add(new BasicNameValuePair("startNodeList", startNode));
params.add(new BasicNameValuePair("taskDependType","TASK_ONLY" ));
CloseableHttpClient client = null;
try {
URI uri = new URIBuilder(url)
.addParameters(params)
.build();
client = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(uri);
httpPost.setHeader("Content-Type", "application/json");
httpPost.setHeader("token", token);
CloseableHttpResponse response = client.execute(httpPost);
HttpEntity entity = response.getEntity();
String responseString = EntityUtils.toString(entity, "UTF-8");
if (response.getStatusLine().getStatusCode() == 200) {
System.out.println("Workflow started successfully: " + responseString);
} else {
System.out.println("Failed to start workflow: " + response.getStatusLine().getStatusCode());
}
} catch (Exception e) {
System.out.println("Error starting workflow: " + e.getMessage());
} finally {
try {
client.close();
} catch (Exception e) {
System.out.println("Error closing HttpClient: " + e.getMessage());
}
}
}