【发布时间】:2017-03-20 23:40:07
【问题描述】:
我有一个传出 Web 服务,用于将数据从 Siebel 7.8 发送到外部系统。为了使集成起作用,在我发送数据之前,我必须更改其中一个字段值,将每次出现的"old" 替换为"new"。 如何使用 EAI 数据映射做到这一点?
在理想情况下,我只会使用像 Replace([Description], "old", "new") 这样的集成源表达式。然而,Siebel 远非理想,并且没有替换功能(或者如果有,也没有记录)。我可以使用all the Siebel query language functions 其中don't need an execution context。我也可以使用functions available for calculated fields(理智的人可能期望两个列表相同,但 Siebel 文档也远非理想)。
我的第一次尝试是使用 InvokeServiceMethod 函数并自己替换 eScript 中的文本。所以,这是我的字段映射源表达式:
InvokeServiceMethod('MyBS', 'MyReplace', 'In="' + [Description] + '"', 'Out')
在some configuration steps 之后它工作正常...除非我的描述字段包含" 字符:Error parsing expression 'In="This is a "test" with quotes"' for field '3' (SBL-DAT-00481)
我知道为什么会这样。我的双引号破坏了表达式,我必须通过加倍字符来转义它们,如This is a ""test"" with quotes。但是,如何将每个" 替换为"" 以调用我的业务服务......如果我没有替换功能? :)
Oracle 的支持网站只有one result for the SBL-DAT-00481 error,作为一种解决方法,它建议将整个参数放在双引号内(我已经有了)。在a linked document 中,他们承认该变通方法适用于一些字符,例如逗号或单引号,但由于 Siebel 7.7-7.8 中的一个错误(8.0+ 中不存在),它不适用于双引号.他们建议将行 ID 作为参数传递给业务服务,然后直接从 BC 检索数据。
在我这样做并最终得到一个影响性能的解决方法(仅传递 ID)对于解决方法(使用双引号)对于解决方法(使用 InvokeServiceMethod)因为没有替换功能......我要疯了吗这里?难道没有一种简单方法可以在 Siebel 数据映射中进行简单的文本替换吗?
【问题讨论】:
标签: siebel eai data-mapping