Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[smila-dev] BPEL wont instantiate pipelet of same class 2x in certain circumstances

Hi folks,

 

I have come over a probable bug of ODE/BPEL,  in that it doesn’t instantiate a 2nd instance of the same Pipelet in certain cases.

 

Plz have a look @ org.eclipse.smila.processing.worker.test.BpelWorkerTestPipelet3 and the associated pipeline3, which very simple and in this it works, as the test chose when run.

 

I have attached another simple bpel which test fails, even though semantically it is the same, as I just do

if (1=1) {

                instance 1

                instance 2

}

 

For quick testing just replace the content of the pipline3 with this one and run the test -> it fails.

If you put a breakpoint into the configure() of the Pipelet it will only halt once but obviously it should be 2x!

 

Any one has a clue if I make smth. Wrong in my bpel or if this is a genuine bug?

 

Thomas Menzel @ brox IT-Solutions GmbH

 

 

Taglocity Tags: smila, bug

<?xml version="1.0" encoding="utf-8" ?>
<process name="TestPipeline3" targetNamespace="http://www.eclipse.org/smila/processor";
  xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"; xmlns:xsd="http://www.w3.org/2001/XMLSchema";
  xmlns:proc="http://www.eclipse.org/smila/processor"; xmlns:rec="http://www.eclipse.org/smila/record";
>

  <import location="processor.wsdl" namespace="http://www.eclipse.org/smila/processor";
    importType="http://schemas.xmlsoap.org/wsdl/"; />

  <partnerLinks>
    <partnerLink name="Pipeline" partnerLinkType="proc:ProcessorPartnerLinkType" myRole="service" />
  </partnerLinks>

  <extensions>
    <extension namespace="http://www.eclipse.org/smila/processor"; mustUnderstand="no" />
  </extensions>

  <variables>
    <variable name="request" messageType="proc:ProcessorMessage" />
    <variable name="result" messageType="proc:ProcessorMessage" />
  </variables>

  <sequence name="AddPipeline">
    <receive name="start" partnerLink="Pipeline" portType="proc:ProcessorPortType"
      operation="process" variable="request" createInstance="yes" />


    <forEach counterName="index" parallel="no" name="iterateRecords">
      <startCounterValue>1</startCounterValue>
      <finalCounterValue>count($request.records/rec:Record)</finalCounterValue>
      <scope>
        <sequence>

          <!-- if content is not text/html then the content is base64 encoded => decode it first! -->
          <if name="test">
            <condition>1=1
            </condition>
            <extensionActivity name='a'>
              <proc:invokePipelet name="invokeTestPipelet1">
                <proc:pipelet class="org.eclipse.smila.processing.worker.test.BpelWorkerTestPipelet3" />
                <proc:variables input="request" output="result" index="index" />
                <proc:configuration>
                  <rec:Val key="param">bpel pos 1</rec:Val>
                </proc:configuration>
              </proc:invokePipelet>
            </extensionActivity>
            <extensionActivity name='b'>
              <proc:invokePipelet name="invokeTestPipelet2">
                <proc:pipelet class="org.eclipse.smila.processing.worker.test.BpelWorkerTestPipelet3" />
                <proc:variables input="request" output="result" index="index" />
                <proc:configuration>
                  <rec:Val key="param">bpel pos 2</rec:Val>
                </proc:configuration>
              </proc:invokePipelet>
            </extensionActivity>
          </if>
        </sequence>
      </scope>
    </forEach>

    <reply name="end" partnerLink="Pipeline" portType="proc:ProcessorPortType" operation="process"
      variable="result" />
    <exit />
  </sequence>
</process>

Back to the top