【问题标题】:How can I replace text in a Siebel data mapping?如何替换 Siebel 数据映射中的文本?
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 我不明白你在暗示什么......除非它是一个 IIF 计算表达式?那行不通,我的字段没有“新”作为值,它包含它。可能是“新希望”,或者“纽卡斯尔的最新消息”之类的,我需要把它们改成“旧的希望”,“旧堡的最古老的人”等等。
    • 我刚刚注意到我在之前的评论中说反了。 “旧希望”将成为“新希望”,而不是相反:)。无论如何没关系,这只是我实际需要的一个简化示例......
    猜你喜欢
    • 1970-01-01
    • 2016-10-26
    • 2020-08-23
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多