海豚调度器调用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());
            }
        }
    }

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。更多免费资源在http://www.gitweixin.com/?p=2627

发表评论

邮箱地址不会被公开。 必填项已用*标注