如何确定某个特定的 BluePrism 是否已在 Java 内完成?

How to find out whether a particular BluePrism has completed or not in Java?

我需要

  1. 启动 BluePrism 进程并
  2. 等到它完成

在没有 BluePrism 客户端的机器上运行的 Java 应用程序中。

我知道可以使用 SOAP 调用启动进程。

如何查看启动的进程是否完成以及是否成功完成?

我的一位同事说,可以通过在 SOAP 请求中传递一个特殊参数来从 BluePrism 获得通知,但我在 Web Services User Guide.[=16= 中找不到任何相关信息]

更新 1: 一种解决方案是调整 this software 以便它通过 REST API.

公开 BluePrism 队列

更新 2: This page 建议 运行 针对 BluePrism 数据库进行如下查询。

SELECT
    [BPAProcess].[name],
    [BPAProcess].[description],
    [BPASession].[sessionid],
    [BPASession].[startdatetime],
    [BPASession].[enddatetime],
    [BPASession].[statusid],
    [BPAStatus].[description]
FROM [BPAProcess]
JOIN [BPASession] ON
    [BPASession].[processid] = [BPAProcess].[processid]
JOIN [BPAStatus] ON
    [BPASession].[statusid] = [BPAStatus].[statusid]
WHERE [BPAStatus].[description] IN ('Completed', 'Stopped', 'Terminated')
    AND [BPASession].[sessionid] = 'Your session id'

更新3:BluePrism版本为6.4.2。

更新 4: BluePrism community.

中提供了更多信息

如果您将有问题的流程公开为 Web 服务(系统 -> 流程 -> 公开)并以这种方式调用它,SOAP 响应将不会 returned 直到流程完成 运行。您的 Java 代码可以简单地等待来自端点的响应 returned 以确保您调用的过程已经完成。

虽然我似乎无法找到有关此行为的任何正式文档,但这符合预期的设计以启用 process/object 的输出值 return 被调用回 SOAP呼叫者。 (如果请求在进程完成执行之前解决,则不可能知道输出值。)