SOA Suite on WebLogic 12c中BPEL调用TaskService生成额外人工任务问题
问题原因
WebLogic 12c对SOA Suite的BPEL与Human Workflow服务交互逻辑做了默认行为调整,和11g存在差异:11g中BPEL调用TaskService的非initiateTask接口时,不会自动为当前BPEL实例创建关联任务上下文;但12c默认开启了BPEL流程自动关联人工任务上下文特性,只要BPEL流程发起任何TaskService接口调用,服务端会自动检查当前BPEL实例是否绑定了关联任务,未绑定则自动生成一个空白的关联任务实例,就是你观察到的多余Running状态空白任务。
解决方案
可根据场景选择以下任意一种方案修复:
- 方案1:全局关闭当前BPEL流程的自动任务关联
在JDeveloper中打开不需要生成自身任务的BPEL流程(如你案例中的CompleteTask流程),在流程属性配置页找到参数bpel.prefer.human.workflow.association,将值设置为false后重新部署即可。该参数为12c新增,默认值为true,关闭后不会再自动生成关联任务。 - 方案2:单次调用跳过自动任务创建
如果不需要全局修改流程属性,可在BPEL调用TaskService的SOAP请求头中添加参数oracle.soa.services.task.disableAutoTaskCreation,将值设为true,仅对当前单次调用生效,不会影响其他接口调用逻辑。 - 方案3:安装官方补丁修复
如果你使用的是12.1.3及之前的早期12c版本,该行为属于已知产品bug,可安装Oracle官方补丁20178923修复,补丁会修正TaskService的逻辑判断,仅在调用initiateTask接口时才会创建新任务。
修改后重新测试即可恢复到和11g一致的行为,CompleteTask流程运行完成后不会生成多余空白任务,两个流程均可正常结束。
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

