求解答,解决问题有偿支付!
需求:在java中调dolphinscheduler 接口并传递参数,在海豚node中能够接收到参数
dolphinscheduler api
在java程序中调用projects/{projectCode}/executors/start-process-instance这个接口传参数
可以这么做:
json
{
"processDefinitionCode": "process_code", // 流程定义code
"commandType": "START_PROCESS", // 命令类型
"scheduleTime": "", // 任务调度时间
"source": "", // 来源
"processInstanceName": "实例名称", // 实例名称
"globalParams": [ // 全局参数
{
"prop": "param1",
"direct": "IN",
"value": "value1"
}
],
"tasks": [ // 任务参数
{
"taskCode": "task1",
"taskParams": [
{
"prop": "param2",
"direct": "IN",
"value": "value2"
}
]
}
]
}
3. 使用任意Java HTTP客户端(如OkHttp),调用DolphinScheduler的API,传递上述参数:
java
String url = "http://dolphinscheduler-server/projects/project1/executors/start-process-instance";
MediaType JSON = MediaType.get("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
RequestBody body = RequestBody.create(JSON, processInstanceJson);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
Response response = client.newCall(request).execute();
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
public class DolphinSchedulerClient {
public static void main(String[] args) {
String url = "http://your-dolphinscheduler-url/api/projects/{projectCode}/executors/start-process-instance";
String projectCode = "your-project-code";
String executorId = "your-executor-id";
String processDefinitionKey = "your-process-definition-key";
String businessKey = "your-business-key";
String processInstanceId = "your-process-instance-id";
String variables = "{\"var1\":\"value1\",\"var2\":\"value2\"}"; // 传递的变量
try {
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader("Content-Type", "application/json");
httpPost.setEntity(new StringEntity(variables));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
String responseBody = EntityUtils.toString(httpEntity);
System.out.println(responseBody);
} catch (Exception e) {
e.printStackTrace();
}
}
}