Я обнаружил, что движок Oracle Oracle BPEL позволяет игнорировать пропущенные данные.Этот флаг можно добавить к элементу копирования следующим образом:
<copy bpelx:ignoreMissingFromData="yes|no"/>
Дополнительная информация о том, как установить его в JDeveloper: http://download.oracle.com/docs/cd/E17904_01/integration.1111/e10224/bp_manipdoc.htm#SOASE87087
Это решает проблему с сообщением об ошибке, котороеброшенОднако это все еще не показывает желаемое поведение.Мое намерение состояло в том, что никакое назначение не сделано, если выражение xpath не может быть оценено.Однако с помощью флага bpelx: ignoreMissingFromData назначается целевая пустая строка "".
В моем случае я хочу объединить два XML-документа.Я хочу назначить новое значение для элемента в document1, только если этот элемент отображается в document2.Если нет, оставьте элемент в document1 без изменений.
Я решил проблему, используя преобразование вместо назначения BPEL.В xsl я использую следующее утверждение.Преобразование получает два XML-документа на вход.На Document1 ссылается параметр $ parameter_referenceDocument1.
<elementName>
<xsl:if test="xpathInDocument2">
<xsl:value-of select="xpathInDocument2"/>
</xsl:if>
<xsl:if test="not(xpathInDocument2)">
<xsl:value-of select="$parameter_referenceDocument1.xpathInDocument1"/>
</xsl:if>
</elementName>
Я знаю, это ужасно, но решает проблему.Если у кого-то есть лучшее решение, пожалуйста, дайте мне знать.