2013-12-18 3 views
1

Я использую приведенную ниже строку в JAVA Embedding для назначения значения входной переменной адаптера BPEL Invoke DB.setVariableData для назначения коллекции переменных ввода Invoke из вставки java

setVariableData("S2C_insert_InputVariable","TmpInvStoc3Collection","/ns8:TmpInvStoc3Collection/ns8:TmpInvStoc3/ns8:batchid","12345"); 

Теперь я хочу поставить это утверждение в цикле в то время как в Java и хочу повторить это для п итераций. Я хочу поместить переменную цикла в коллекцию, но я не знаю, как это сделать.

Я ищу что-то вроде ниже.

setVariableData("S2C_insert_InputVariable","TmpInvStoc3Collection","/ns8:TmpInvStoc3Collection/ns8:TmpInvStoc3[$loop_variable]/ns8:batchid","12345"); 

Пожалуйста, дайте мне знать, как достичь этого

С уважением Мурали

ответ

0

Это основано на предположении, что value является функцией i и не может быть вычислена в BPEL.

String qry = ""; 
for (int i = 0; i < n; i++) 
{ 
    value = SomeFunctionThatRequiresJavaRatherThanBPEL(i); 
    qry = "/ns8:TmpInvStoc3Collection/ns8:TmpInvStoc3[" + i + "]/ns8:batchid"; 
    setVariableData("S2C_insert_InputVariable","TmpInvStoc3Collection",qry,value); 
} 

Код может быть более эффективным, но он должен делать то, что вы хотите.

+0

Спасибо Dan. Это сработало, но небольшая проблема. TmpInvStoc3Collection содержит только один элемент TmpInvStoc3, и во второй итерации я получаю исключение с ошибкой выбора. Есть ли способ добавить элемент TmpInvStoc3 из java в S2C_Insert_InputVariable? Большое спасибо – user3005980

+0

В назначении BPEL у вас есть возможность автоматически добавлять пустые элементы. Я не уверен, как воспроизвести эту функциональность на Java, хотя. –