我正在使用JBPM 7.59,我在 JBPM 上创建了一个无头进程并通过 Rest API 调用运行它。我在这里有一个场景,我陷入了GET Rest Api Call并最终获得了Read Timeout。
所以,我的流程运行顺利,我达到了我的 JBPM 流程调用 REST API(在 JAVA 中实现)以执行特定业务的特定点,并且在该业务中我想要该正在运行的流程实例的一些细节,所以我在下面调用 Rest JBPM的服务,
GET
/server/admin/containers/{containerId}/processes/instances/{processInstanceId}/nodes
返回指定流程实例中的所有节点。
这显然意味着它将返回指定流程实例的所有节点,但是当我调用上面的服务时它卡住了,最终我的 Rest Client 抛出Read time out Exception。我为 Timeout 设置了 30 秒,但在实际情况下,此服务通常不会超过 35 毫秒,但在这种情况下它卡住了,我可以理解这是PUT 或 POST调用的情况,但我不明白为什么它会发生在GET称呼。
谁能帮我解决这个问题?
TIA
编辑:
下面是我的 JBPM 流程的场景,我的流程卡住了。因此,当我从 API 调用完成这个cas 签名确认任务时,我的下一个节点执行签名确认,这基本上是一个自定义 REST API 调用,它最终调用一个 Java 方法。
所以在那个Java方法中我在API下面调用
GET /server/admin/containers/{containerId}/processes/instances/{processInstanceId}/nodes
返回指定流程实例中的所有节点
最终卡住了,没有给我任何回应。
下面是我用来调用上述 API 的 java 代码(okHttp)
public static final OkHttpClient client = new OkHttpClient.Builder().connectTimeout(60, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS).readTimeout(60, TimeUnit.SECONDS).build();
Request req = new Request.Builder().url("http://localhost:8090/kie-server/services/rest/server/admin/containers/Signing_1.0.0-SNAPSHOT/processes/instances/213/nodes")
.addHeader(HttpHeaders.AUTHORIZATION, "Basic d2JhZG1pbjp3YmFkbWlu")
.addHeader(HttpHeaders.ACCEPT, "application/json")
.addHeader(HttpHeaders.CONTENT_TYPE, "application/json")
.addHeader(HttpHeaders.ACCEPT_ENCODING, "gzip, deflate, br");
String response = null;
try (Response res = client.newCall(req).execute()) {
String responseBody = res.body().string();
if (res.isSuccessful()) {
response = responseBody;
} else {
int responseCode = res.code();
}
} catch (IOException e) {
throw new JBPMClientException(JBPMClientException.COMMUNICATION_ERROR, e);
}
return response;
卡在这条线上
Response res = client.newCall(req).execute()