Как просмотреть список целых в процессе BPEL - PullRequest
1 голос
/ 30 марта 2012

Я создаю процесс BPEL в Netbeans 6.8 и вызываю веб-службу, которая возвращает список целых чисел.

<xs:complexType name="getHotelsResponse">
<xs:sequence>
<xs:element name="return" type="xs:int" minOccurs="0" maxOccurs="unbounded"></xs:element>
</xs:sequence>
</xs:complexType>

Я хочу (если возможно - больше не уверен ...) перебиратьвсе эти целые и вызывают разные веб-службы для каждого из них.

Я пытался использовать действие ForEach, но не могу понять, как его использовать.Для этого требуются начальное значение и конечное значение (если бы я мог каким-то образом получить количество возвращаемых целых чисел), но даже тогда внутри действия ForEach, если, скажем, я поместил действие назначения, как получить текущий элемент списка в каждом цикле?

1 Ответ

7 голосов
/ 30 марта 2012

Я использовал следующий фрагмент BPEL, чтобы объединить содержимое списка в строку через запятую. Вы можете использовать тот же код с вызовом для вызова внешней службы.

<bpel:forEach parallel="no" counterName="Counter" name="ForEach">
        <bpel:startCounterValue>
            <![CDATA[1]]>
        </bpel:startCounterValue>
        <bpel:finalCounterValue><![CDATA[count($input.payload/tns:return)]]></bpel:finalCounterValue>
        <bpel:scope>
            <bpel:assign validate="no" name="AppendItem">
                <bpel:copy>
                    <bpel:from>

                        <![CDATA[concat($Response, $input.payload/tns:return[round($Counter)], ", ")]]>
                    </bpel:from>
                    <bpel:to variable="Response"></bpel:to>
                </bpel:copy>
            </bpel:assign>
        </bpel:scope>
    </bpel:forEach>

Количество элементов можно узнать из следующего XPath

count($input.payload/tns:return)

Вы можете получить доступ к значению i-го элемента, используя следующий XPath

$input.payload/tns:return[round($Counter)]

Вы можете избавиться от функции round (), но мне пришлось воспользоваться, чтобы избавиться от проблемы в Apache ODE.

...