这是在将应用程序从 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 中发生,可以做些什么呢?