Вызвать класс Java и получить возвращаемое значение в WSO2 BPS 3.2.0

Я знаю, что можно вызвать класс JAVA в процессе BPEL в WSO2 BPS 3.2.0. Исходники и руководство можно найти здесь: http://hasithaa.github.io/java4bpel/

Мой вопрос: возможно ли не только вызывать класс JAVA, но и получать возвращаемое значение из вызванного класса/метода?

Заранее спасибо!


person tyfyh    schedule 20.02.2015    source источник


Ответы (1)


Да, это возможно. Есть два способа его достижения.

1) Написав пользовательскую функцию xpath. Обратитесь к этому для более подробной информации. (Я думаю, вы ищете это) http://ode.apache.org/custom-xpath-functions.html

2) Написав расширение, похожее на Java4bpel. Но вы должны установить свой вывод в переменную.

person Hasitha Aravinda    schedule 20.02.2015
comment
Спасибо за ваш ответ! 1) Я следовал инструкциям в ссылке - создал jar с классом Random в пакете com.example.xpath.Random, скопировал его в каталог репозитория/компонентов и создал процесс с назначением активности, как в примере. Но я получаю сообщение об ошибке: net.sf.saxon.trans.XPathException: Cannot find a matching 0-argument function named {java:com.example.xpath.Random}random(). Note that direct calls to Java methods are not available under Saxon-HE. WSO2 bps 3.2.0 использует saxon.he_9.4.0.wso2v1.jar 2) Можете ли вы описать, как я могу установить вывод extensionActivity в переменную? - person tyfyh; 20.02.2015
comment
1) Проблема возникла из-за использования Saxon-HE, а не Saxon professional или enterprise edition. Как заменить Saxon хорошо описано здесь: nandikajayawardana.blogspot .cz/2012/12/ Но это не очень хорошее решение для моего проекта, потому что я использую только открытые/бесплатные библиотеки. 2) Я до сих пор не знаю, как установить вывод extensionActivity в переменную. - person tyfyh; 24.02.2015
comment
2) Я понял. Речь идет не о настройке вывода extensionActivity на переменную, а об установке значения переменной внутри класса java. if(variable.equals("tmpVar")) { log.info("Setting value"); node.setTextContent("dummy value"); data.writeVariable(variable, node); log.info("Logging Variable " + variable + " = " + DOMUtils.domToString(node)); } - person tyfyh; 25.02.2015