0

这是在将应用程序从 WebLogic 11g 移动到 WebLogic 12c 之后开始出现的问题,我使用 JDeveloper 12c 和 2 BPEL 流程重现了它。

我已经创建了 BPEL 流程 CreateTask,它向 TaskService 发送一个initiateTask 请求来创建一个人工任务,然后等待任务完成。此屏幕截图中的流号 4,在等待任务完成时处于运行状态:

在此处输入图像描述

我打开那个流,可以看到 CreateTask 已经创建了人工任务,BPEL 流程和工作流都处于运行状态:

在此处输入图像描述

我单击人工任务并获取工作流编号:

在此处输入图像描述

现在我可以使用该工作流编号向 TaskService 发送 updateTaskOutcome 请求以完成任务(在 SoapUI 中完成):

在此处输入图像描述

我回到企业管理器,看到流程 4 现已完成:

在此处输入图像描述

到目前为止一切都很好。

我创建了第二个 BPEL 流程 CompleteTask,它将与我从 SoapUI 发送的相同请求发送到 TaskService。再次运行 CreateTask 然后使用新的工作流编号运行 CompleteTask 后,我们有流程 5 是 CreateTask 和流程 6 是 CompleteTask:

在此处输入图像描述

流程 5 已按预期更改为已完成,但流程 6 没有等待任何内容,因此它也应该完成。

查看流程 6 的详细信息,BPEL 流程已完成,但其下还有一项人工任务仍在运行:

在此处输入图像描述

该人工任务不应该存在,因为此过程仅完成已创建的任务。如果我打开该任务,它完全是空白的:

在此处输入图像描述

从 BPEL 流程对 TaskService 进行其他调用,即使只是 requestInfoForTask,也会做同样的事情。

这在 WebLogic 11g 中不会发生。未创建空人工任务,两个流程均已完成。为什么它会在 12c 中发生,可以做些什么呢?

4

1 回答 1

0

解决此问题的一种方法是将 TaskService 作为外部服务调用,而不是作为人工任务组件的一部分。

将新的 SOAP 引用添加到您的复合材料中:

在此处输入图像描述

TaskService.wsdl 中的 URL 用于 localhost:8888,请按照您的项目示例在部署时正确配置它。(例如,更改组合中的引用以使用 WSDL 的项目副本并用配置计划替换该值)

对于任何使用非initialTask​​ 操作的BPEL 流程,将它们链接到外部TaskService 而不是人工任务(或如果需要,两者都链接)。我已经完全替换了链接,因为我的过程只使用了 updateTaskOutcome。

在此处输入图像描述

在此处输入图像描述

在 BPEL 流程中,将调用步骤上的 partnerLink 从 HumanTask.TaskService 更改为 TaskService。

现在完成任务的过程将正确完成:

在此处输入图像描述

于 2021-09-07T22:01:56.547 回答