1

我有一个传出 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 数据映射中进行简单的文本替换吗?

4

1 回答 1

0

我想到的第一件事(很可能 - 远非最佳) - 是在源 BC 计算字段中创建,又名(NEW_VALUE),对于每条记录,它都变为“NEW”,其中 origin 字段的值为“OLD” . 并简单地在集成图中使用此字段。

于 2016-11-07T21:23:53.887 回答