Soap IBM集成总线:找不到指定应用程序的PIF数据

Soap IBM集成总线:找不到指定应用程序的PIF数据,soap,ibm-integration-bus,dfdl,Soap,Ibm Integration Bus,Dfdl,我正在使用IBM集成总线v10(以前称为IBM MessageBroker)将COBOL例程公开为SOAP Web服务。 COBOL例程通过MQ队列集成到IIB中 我们已经在IIB中导入了一些COBOL副本作为DFDL模式,SOAP消息和DFDL消息之间的映射工作正常 但是,当消息到达必须进行消息树序列化的节点(例如,文件输出或MQ请求)时,它将失败,并出现以下错误: "The PIF data could not be found for the specified application"

我正在使用IBM集成总线v10(以前称为IBM MessageBroker)将COBOL例程公开为SOAP Web服务。 COBOL例程通过MQ队列集成到IIB中

我们已经在IIB中导入了一些COBOL副本作为DFDL模式,SOAP消息和DFDL消息之间的映射工作正常

但是,当消息到达必须进行消息树序列化的节点(例如,文件输出或MQ请求)时,它将失败,并出现以下错误:

"The PIF data could not be found for the specified application"
这是异常堆栈跟踪的最后一部分:

RecoverableException
文件:字符:F:\build\slot1\S000\u P\src\DataFlowEngine\TemplateNodes\ImbOutputTemplateNode.cpp
行:整数:303
函数:字符:ImbOutputTemplateNode::processMessageAssemblyToFailure
类型:字符:ComIbmFileOutputNode
名称:字符:MyCustomFlow#FCMComposite_1_5
标签:字符:MyCustomFlow.File输出
目录:字符:BIPmsgs
严重性:整数:3
数字:整数:2230
文本:字符:捕获异常并重新刷新
插入
类型:整数:14
文本:字符:Kcilmw20Flow.File输出
解析异常
文件:字符:F:\build\slot1\S000\u P\src\MTI\MTIforBroker\DfdlParser\imbdfddlwriter.cpp
行:整数:315
函数:字符:IMBDDLWriter::getDFDLSerializer
类型:字符:ComIbmSOAPInputNode
名称:字符:MyCustomFlow#FCMComposite_1_7
标签:字符:MyCustomFlow.SOAP输入
目录:字符:BIPmsgs
严重性:整数:3
数字:整数:5828
Text:CHARACTER:找不到指定应用程序的PIF数据
插入
类型:整数:5
文本:字符:MyCustomProject
我的可部署BAR文件中似乎缺少某些内容。重要的是,我的应用程序有消息流,它依赖于一个包含所有.xsd文件(dfdl)的共享库

我假设模式是正常的,因为我已经使用Toolkit向导生成了它们,并且消息解析工作得很好。问题只在于序列化


有人知道这里可能缺少什么吗?

听起来好像OutputRoot.Properties没有指向共享库。我记不起哪个子字段执行该任务-它是OutputRoot.Properties.MessageType或OutputRoot.Properties.MessageSet。
您可以轻松地检查—只需在使用相同共享库的输入节点之后检查InputRoot.Properties的内容。

OutputRoot.Properties.MessageType必须在DFDL架构中包含消息的名称。此外,当DFDL架构位于共享库中时,OutputRoot.Properties.MessageSet必须包含库的名称。

面临类似问题。在我的例子中,带有HttpRequest节点的消息流使用DFDL域解析器/格式解析来自远程系统的HTTP响应时抛出了此错误(无法找到指定应用程序的PIF数据)。在节点上“重新选择”相同的解析器域和消息类型,然后构建/重新部署解决了问题。似乎是IIB工具包中与项目参考相关的问题。

您需要创建静态库并参考应用程序。
在计算节点中,ur编码基于dfdl主体

这是正确的。在我的例子中,以下内容有帮助:SET OutputRoot.Properties.MessageType='{}:ElectronicCredentials';SET OutputRoot.Properties.MessageSet='{DFDL}';其中“ElectronicDictionals”是我的消息的名称,{}是因为它位于默认的代理模式中。花括号中的“DFDL”是消息集库的名称。下面是我从使用kimberts建议中发现的值。这在IBM知识库中没有很好的记录。