В: Встраивает ли Java в BPEL плохую практику? - PullRequest
0 голосов
/ 05 февраля 2019

Вопрос: Является ли использование Java-встраивания в BPEL плохой практикой, и почему если так?

В своей работе я часто использую Java-вложения в качестве компонентов BPEL для получения определенной работы.сделанный.Это могут быть очень простые вещи, которые мне просто удобны в Java, или вещи, которые невозможно (насколько я знаю) сделать с другими компонентами в BPEL.

Пример простого внедрения Javaв 12c BPEL source:

<bpelx:exec name="TruncateBlankNamespace" language="java" version="1.5">
  <![CDATA[String origHeader = (String)getVariableData("randomHeader"); try { String replacedvalue = origHeader.replaceAll(" xmlns=\"\"", ""); setVariableData("randomHeader_something", replacedvalue) ;} catch (Exception exception) { exception.printStackTrace(); }]]>
</bpelx:exec>

Другой пример, для которого я его использую, - это кодирование и декодирование полезных нагрузок в base64 и обратно,

Пример внедрения кодирования base64 в 11c BPEL-источник:

 <bpelx:exec import="oracle.soa.common.util.Base64Encoder"/>
 <variables> 
      <variable name="DecodedMessage" type="xsd:string"/>
      <variable name="EncodedMessage" type="xsd:base64Binary"/>
 <variables/>
 <bpelx:exec name="EncodePayload" language="java" version="1.5">String decodedMessage = (String)getVariableData("DecodedMessage"); try { String encodedMessage = Base64Encoder.encode(decodedMessage.getBytes()); setVariableData("EncodedMessage", encodedMessage);} catch (Exception exception) { exception.printStackTrace(); }</bpelx:exec>

Теперь я считаю, что вложения являются очень полезными инструментами для решения определенных проблем и быстрого устранения проблем без необходимости выполнять дополнительную домашнюю работу винструмент, который вы используете.Однако мое внимание было обращено на то, что использование java-вложений в Oracle Soa suite / BPEL - плохая практика.

Я начинающий разработчик промежуточного программного обеспечения и новичок в переполнении стека, поэтому извините, если я неТщательно, пожалуйста, укажите все неправильно в этом посте, и не стесняйтесь редактировать: D!

Большое спасибо!

Jesper

1 Ответ

0 голосов
/ 05 февраля 2019

Если это плохая практика, то какую же практику вы должны использовать вместо нее?

Я вижу, как встраивание реального кода Java в XML может показаться уродливым.Но встраивание этого языка в этот язык - это то, что разработчики делают постоянно.

  • Мы все знакомы с встраиванием JavaScript в значения атрибутов HTML, потому что мы делали это всегда, например, <button onclick="getElementById('date').innerHTML = Date()">.
  • Язык ReactJS JSX позволяет встраивать JavaScript в любое место HTML.
  • Встраивание команд SQL в строки Java абсолютно нормально и приемлемо.
  • Запросы Elasticsearch могут внедрять сценарии, написанные на«Безболезненный» язык.
  • Каждое регулярное выражение - это мини-программа, написанная на языке регулярных выражений, встроенном в более крупную программу.
  • Сценарии оболочки и, в частности, системы сборки, как правило, являются путаницей языков.

Эти возможности существуют, потому что они необходимы.В какой-то момент они позволили кому-то что-то сделать.Добиться успеха очень важно.

Я хотел бы задать себе несколько вопросов:

  • Является ли встраивание Java в ваш BPEL самой простой вещью, которая могла бы работать?Люди, возражающие против вашей встроенной Java, могут ожидать, что вы вместо этого будете вызывать службы.Но если логика тривиальна и у вас она есть только в одном или двух местах, то затраты на создание и обслуживание отдельного сервера только для обеспечения этой логики могут не сделать ее практической альтернативой.
  • Есть ли тенденция к внедрению Javaсделать ваше приложение сложнее - или проще - поддерживать?
  • Какие есть альтернативы?Будут ли они требовать меньше усилий или больше?Если альтернативы требуют гораздо больше усилий, тогда вам нужно спросить, действительно ли они лучше.Какова окупаемость дополнительных усилий?
  • Внедряет ли Java внедрение в BPEL, что вы теряете некоторые преимущества вашего процесса SDLC?Например, находится ли встроенная Java вне системы контроля версий?Совпадает ли SDLC логики Java с BPEL, в который он встроен?
  • Какие плохие вещи произойдут, если вы просто оставите его в покое?

Люди, которые ссылаются на лучшие практики (илиплохие практики или "антипаттерны") должны быть в состоянии объяснить их аргументацию.В конце концов, это инженерия.

...