如何替换Siebel数据映射中的文本?

时间:2016-11-07 15:06:47

标签: siebel eai data-mapping

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

1 个答案:

答案 0 :(得分:0)

我想到的第一件事(很可能 - 远非最佳的一件事)是在源BC创建的计算字段,即(NEW_VALUE),它变为" NEW"对于每个记录,其中原始字段具有值" OLD"。并在集成图中简单地使用此字段。