2016-11-07 8 views
1

Siebel 7.8から外部システムにデータを送信するための発信Webサービスがあります。統合が機能するには、データを送信する前に、フィールド値のいずれかを変更して、すべての出現を"old"の代わりに"new"に置き換える必要があります。 これをEAIデータマッピングでどうやって行うことができますか?Siebelデータマッピングのテキストをどのように置き換えることができますか?


は理想的な世界では、私はちょうど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でテキストを置き換えてみました。これがなぜ起こるか私が知っているError parsing expression 'In="This is a "test" with quotes"' for field '3' (SBL-DAT-00481)

:それは私の説明フィールドが"文字が含まれている場合を除いて...うまく動作

InvokeServiceMethod('MyBS', 'MyReplace', 'In="' + [Description] + '"', 'Out') 

some configuration steps後:だから、これは私のフィールドマップソース式です。私の二重引用符は表現を壊しているので、私はThis is a ""test"" with quotesのように、文字を倍にしてエスケープする必要があります。ただし、ビジネスサービスを呼び出すために、"""にそれぞれ置き換えるにはどうすればよいですか。置換機能がない場合はどうすればいいですか? :)

オラクル社のサポートWebにはone result for the SBL-DAT-00481 errorしかありません。回避策として、パラメータ全体を二重引用符で囲むことをお勧めします。回避策がカンマや一重引用符などのいくつかの文字に対して有効であることを確認するa linked documentがありますが、Siebel 7.7-7.8(8.0以降は存在しません)のバグにより、二重引用符では機能しません。彼らは、行IDをビジネスサービスの引数として代わりに渡し、BCから直接データを取得することを提案します。

置き換え機能を持たないために回避策(二重引用符を使用)を使用する(InvokeServiceMethodを使用)のパフォーマンスに影響を与える回避策(IDのみを渡す)ここで狂ってる? 単純な Siebelデータマッピングで単純なテキスト置換を行う方法はありませんか?

答えて

0

私の頭に浮かぶ最初のもの(かなり可能性がありますが遠いものから)は、元のフィールドにaがあるすべてのレコードに対して「NEW」になる元BC計算フィールド、別名(NEW_VALUE)値 "OLD"。単にこのフィールドを統合マップで使用します。

+0

私は 'IIF'計算式でない限り、あなたが示唆していることを理解していませんか?それはうまくいかず、私のフィールドは値として「新しい」ものを持っていません。それは "新しい希望"、または "ニューキャッスルの最新ニュース"などで、 "古い希望"、 "古いお年寄りの古い年"などに変更する必要があります。 – AJPerez

+0

私はそれを言ったことに気づきました私の前のコメントでは後ろ向きです。 "古い希望"は "新しい希望"になり、それ以外の方法ではありません:)。とにかくそれは問題ではない、それは私が実際に必要とするものの単なる単純な例だった... – AJPerez

関連する問題