我有一个传出 Web 服务,可以将数据从 Siebel 7.8 发送到外部系统。为了使集成起作用,在发送数据之前,我必须更改其中一个字段值,将每次出现的 替换"old"
为"new"
。如何使用 EAI 数据映射做到这一点?
在理想的世界中,我只会使用集成源表达式,例如Replace([Description], "old", "new")
. 然而,Siebel 远非理想,并且没有替换功能(或者如果有,也没有记录)。我可以使用所有不需要执行上下文的Siebel 查询语言函数。我还可以使用可用于计算字段的函数(理智的人可能期望两个列表相同,但 Siebel 文档也远非理想)。
我的第一次尝试是使用该InvokeServiceMethod
功能并自己在 eScript 中替换文本。所以,这是我的字段映射源表达式:
InvokeServiceMethod('MyBS', 'MyReplace', 'In="' + [Description] + '"', 'Out')
经过一些配置步骤后,它工作正常......除非我的描述字段包含"
字符:Error parsing expression 'In="This is a "test" with quotes"' for field '3' (SBL-DAT-00481)
我知道为什么会这样。我的双引号破坏了表达式,我必须通过加倍字符来转义它们,如This is a ""test"" with quotes
. 但是,如何替换每个"
以""
调用我的业务服务......如果我没有替换功能?:)
Oracle 的支持网站对于 SBL-DAT-00481 错误只有一个结果,作为一种解决方法,建议将整个参数放在双引号内(我已经有了)。有一个链接的文档,他们在其中承认该解决方法对逗号或单引号等几个字符有效,但由于 Siebel 7.7-7.8 中的错误(8.0+ 中不存在),它不适用于双引号. 他们建议将行 ID 作为参数传递给业务服务,然后直接从 BC 检索数据。
在我这样做并最终得到一个影响性能的解决方法(仅传递 ID)之前,对于解决方法(使用双引号)对于没有替换功能的解决方法(使用 InvokeServiceMethod)......我在这里发疯了吗?难道没有一种简单的方法可以在 Siebel 数据映射中进行简单的文本替换吗?