0

我正在使用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 方法。

JBPM流程

所以在那个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()
4

1 回答 1

0

ReadTimeout - 读取超时 - 默认为 60 秒。

默认为 60 秒。有什么理由设置30秒吗?

于 2021-12-07T06:08:03.487 回答