У меня есть исходящая веб-служба для отправки данных от Siebel 7.8 во внешнюю систему. Для того, чтобы интеграция работала, перед отправкой данных я должен изменить одно из значений поля, заменив каждое обнаружение "old"
на "new"
. Как это сделать с помощью сопоставлений данных EAI?Как заменить текст в сопоставлении данных Siebel?
В идеальном мире я бы просто использовать выражение в источник интеграции как Replace([Description], "old", "new")
. Однако Siebel далеко не идеален и не имеет функции замены (или, если это так, он не документирован). Я могу использовать all the Siebel query language functions, который don't need an execution context. Я также могу использовать 442407305908000794771418888 (здравомыслящий человек мог ожидать, что оба списка будут одинаковыми, но документация 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+), он не работает с двойными кавычками. Они предлагают передать вместо этого идентификатор строки в качестве аргумента для бизнес-службы, а затем получить данные непосредственно из BC.
Прежде чем я это сделаю и в итоге обходное решение (передайте только идентификатор) для обходного пути (используйте двойные кавычки) для обходного пути (используйте InvokeServiceMethod) для отсутствия функции замены ... Я иду здесь сумасшедший? Разве нет простых способов простой замены текста в сопоставлении данных Siebel?
Я не понимаю, что вы предлагаете ... разве это не выражение 'IIF'? Это не сработает, мое поле не имеет «нового» в качестве значения, оно содержит его. Это может быть «новая надежда» или «новейшие новости в Ньюкасле» или что-то еще, и мне нужно изменить их на «старую надежду», «старшие старики в старой жизни» и т. Д. – AJPerez
Я только заметил, что я это сказал назад в моем предыдущем комментарии. «старая надежда» станет «новой надеждой», а не наоборот :). Во всяком случае, это не имеет значения, это был просто упрощенный пример того, что мне действительно нужно ... – AJPerez