我有一个传出的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数据映射中进行简单的文本替换?
答案 0 :(得分:0)
我想到的第一件事(很可能 - 远非最佳的一件事)是在源BC创建的计算字段,即(NEW_VALUE),它变为" NEW"对于每个记录,其中原始字段具有值" OLD"。并在集成图中简单地使用此字段。