Uploaded image for project: 'Red Hat Process Automation Manager'
  1. Red Hat Process Automation Manager
  2. RHPAM-4604

BPMN file contaning (Java) ServiceTask created using VSCode BPMN Editor causes parser errors in maven build

XMLWordPrintable

    • False
    • None
    • False
    • CR1
    • +
    • Hide
      1. Unzip example_servicetask_1a.zip and example_servicetask_1a_support.zip respectively.
      2. Build example_servicetask_1a_support.
        • cd example_servicetask_1a_support
        • mvn clean install
      3. Build example_servicetask_1a.
        • cd example_servicetask_1a
        • mvn clean package  // Build will succeed at this time because process1.bpmn is a file created using Business Central.
      4. Open process1.bpmn using VSCode with BPMN Editor v0.25.0.
        • cd example_servicetask_1a
        • code src/main/resources/com/example/example_servicetask_1a/process1.bpmn
      5. Once process1.bpmn file opened, save the file without modifying anything.
      6. Build example_servicetask_1a again.
        • mvn clean package  // Build will fail with the error (1) at this time.
      7. Modify the 2nd line of process1.bpmn (starting with <bpmn2:definitions> element) like below.  ..... (*1-1)
        • From
                
          xmlns:xsi="xsi"      
          
        • To
          xmlns:xsi="[http://www.w3.org/2001/XMLSchema-instance]" xmlns="[http://www.omg.org/bpmn20]"
          
      8. Build example_servicetask_1a again.
        • mvn clean package  // Build will fail with the error (2) in question this time.

      Actual result

      Build ends up with failures.

      Expected result

      Build finishes successfully without any failures.

      Show
      Unzip example_servicetask_1a.zip and example_servicetask_1a_support.zip respectively. Build example_servicetask_1a_support. cd example_servicetask_1a_support mvn clean install Build example_servicetask_1a. cd example_servicetask_1a mvn clean package  // Build will succeed at this time because process1.bpmn is a file created using Business Central. Open process1.bpmn using VSCode with BPMN Editor v0.25.0. cd example_servicetask_1a code src/main/resources/com/example/example_servicetask_1a/process1.bpmn Once process1.bpmn file opened, save the file without modifying anything. Build example_servicetask_1a again. mvn clean package  // Build will fail with the error (1) at this time. Modify the 2nd line of process1.bpmn (starting with <bpmn2:definitions> element) like below.  ..... (*1-1) From       xmlns:xsi= "xsi"       To xmlns:xsi= "[http: //www.w3.org/2001/XMLSchema-instance]" xmlns= "[http://www.omg.org/bpmn20]" Build example_servicetask_1a again. mvn clean package  // Build will fail with the error (2) in question this time. Actual result Build ends up with failures. Expected result Build finishes successfully without any failures.
    • ---
    • ---
    • 2023 Week 12-14 (from Mar 20), 2023 Week 15-17 (from Apr 10)

      Component: VSCode BPMN Editor extension

      Error description

      Using BPMN Editor VSCode extention (0.25.0) for designing/editing processes, when we create a (Java) Service Task by reference to our product documentation [1] using the BPMN Editor, the bpmn file for the process causes a specific parser error in maven build.

      I created a reproducer for the same error as the user encountered, and attached it in this JIRA.
      Also, for the steps to reproduce the error, please see (*1) below.
      By following the steps, you can see 2 issues/errors below, and (2) is the error actually reported by the user.

      Error (1)

      [ERROR] Node Info: id: name:
      Parser message: (null: 2, 718): cvc-elt.1.a: Cannot find the declaration of element 'bpmn2:definitions'.
      java.lang.NullPointerException
      

      Error (2)

      [ERROR] Node Info: id:_ABEE9B1C-4D57-47FA-8ABC-E69DA5F0FD95_ServiceOperation name:sayHello
      Parser message: (null: 8, 128): cvc-complex-type.2.4.b: The content of element 'bpmn2:operation' is not complete. One of '
      
      {"[http://www.omg.org/spec/BPMN/20100524/MODEL]":documentation, "[http://www.omg.org/spec/BPMN/20100524/MODEL]":extensionElements, "[http://www.omg.org/spec/BPMN/20100524/MODEL]":inMessageRef}
      
      ' is expected.
      java.lang.NullPointerException
      
      

       

      [1] Red Hat Process Automation Manager > 7.13 > Developing process services in Red Hat Process Automation Manager - 5.3. Creating service tasks
          https://access.redhat.com/documentation/en-us/red_hat_process_automation_manager/7.13/html-single/developing_process_services_in_red_hat_process_automation_manager/index#create-service-task-proc

          ==> In Section 5.3. "Creating service tasks", the user referred to Procedure 1. to 9. and the steps in "Example of creating Java service task"

      Error details

      (1) Error detail

      [ERROR] Node Info: id: name:
      Parser message: (null: 2, 718): cvc-elt.1.a: Cannot find the declaration of element 'bpmn2:definitions'.
      java.lang.NullPointerException
          at org.jbpm.bpmn2.xml.ServiceTaskHandler.handleNode(ServiceTaskHandler.java:75)
          at org.jbpm.bpmn2.xml.TaskHandler.end(TaskHandler.java:165)
          .....
      [ERROR] Unable to build KieBaseModel:defaultKieBase
      ProcessLoadError: unable to parse xml : Exception class java.lang.NullPointerException : null
      

      (2) Error detail (the error reported by the user)

      [ERROR] Node Info: id:_ABEE9B1C-4D57-47FA-8ABC-E69DA5F0FD95_ServiceOperation name:sayHello
      Parser message: (null: 8, 128): cvc-complex-type.2.4.b: The content of element 'bpmn2:operation' is not complete. One of '
      
      {"[http://www.omg.org/spec/BPMN/20100524/MODEL]":documentation, "[http://www.omg.org/spec/BPMN/20100524/MODEL]":extensionElements, "[http://www.omg.org/spec/BPMN/20100524/MODEL]":inMessageRef}
      
      ' is expected.
      java.lang.NullPointerException
          at org.jbpm.bpmn2.xml.ServiceTaskHandler.handleNode(ServiceTaskHandler.java:75)
          at org.jbpm.bpmn2.xml.TaskHandler.end(TaskHandler.java:165)
      .....
      [ERROR] Unable to build KieBaseModel:defaultKieBase
      ProcessLoadError: unable to parse xml : Exception class java.lang.NullPointerException : null
      

      (*1) Steps to reproduce

      I created the following 2 projects by following the documentation [1]. On Business Central, these projects can be run normally:

      To reproduce the errors (1) and (2), please follow the steps in jira's "Steps to Reproduce" section.

      Issue details and possible fixes

      Generated processes

      (2) *process1.bpmn created using Business Central process designer

      <?xml version="1.0" encoding="UTF-8"?>
      <bpmn2:definitions xmlns:xsi="[http://www.w3.org/2001/XMLSchema-instance]" xmlns="[http://www.omg.org/bpmn20]" xmlns:bpmn2="[http://www.omg.org/spec/BPMN/20100524/MODEL]" xmlns:bpmndi="[http://www.omg.org/spec/BPMN/20100524/DI]" xmlns:bpsim="[http://www.bpsim.org/schemas/1.0]" xmlns:dc="[http://www.omg.org/spec/DD/20100524/DC]" xmlns:di="[http://www.omg.org/spec/DD/20100524/DI]" xmlns:drools="[http://www.jboss.org/drools]" id="_d3NyQGSWEe2izM122jbhSg" xsi:schemaLocation="[http://www.omg.org/spec/BPMN/20100524/MODEL] BPMN20.xsd [http://www.jboss.org/drools] drools.xsd [http://www.bpsim.org/schemas/1.0] bpsim.xsd [http://www.omg.org/spec/DD/20100524/DC] DC.xsd [http://www.omg.org/spec/DD/20100524/DI] DI.xsd " exporter="jBPM Process Modeler" exporterVersion="2.0" targetNamespace="[http://www.omg.org/bpmn20]">    <---------- (*2-1)
        <bpmn2:itemDefinition id="_nameItem" structureRef="String"/>
        <bpmn2:itemDefinition id="_messageItem" structureRef="String"/>
        <bpmn2:itemDefinition id="_ABEE9B1C-4D57-47FA-8ABC-E69DA5F0FD95_InMessageType" structureRef=""/>                                <---------- (*2-2)
        <bpmn2:itemDefinition id="_ABEE9B1C-4D57-47FA-8ABC-E69DA5F0FD95_OutMessageType" structureRef=""/>                               <---------- (*2-2)
        <bpmn2:itemDefinition id="__ABEE9B1C-4D57-47FA-8ABC-E69DA5F0FD95_ParameterInputXItem" structureRef="String"/>
        <bpmn2:itemDefinition id="__ABEE9B1C-4D57-47FA-8ABC-E69DA5F0FD95_ResultOutputXItem" structureRef="String"/>
        <bpmn2:message id="_ABEE9B1C-4D57-47FA-8ABC-E69DA5F0FD95_InMessage" itemRef="_ABEE9B1C-4D57-47FA-8ABC-E69DA5F0FD95_InMessageType"/>
        <bpmn2:message id="_ABEE9B1C-4D57-47FA-8ABC-E69DA5F0FD95_OutMessage" itemRef="_ABEE9B1C-4D57-47FA-8ABC-E69DA5F0FD95_OutMessageType"/>
        <bpmn2:interface id="_ABEE9B1C-4D57-47FA-8ABC-E69DA5F0FD95_ServiceInterface" name="com.example.example_servicetask_1a_support.HelloWorld" implementationRef="com.example.example_servicetask_1a_support.HelloWorld">
          <bpmn2:operation id="_ABEE9B1C-4D57-47FA-8ABC-E69DA5F0FD95_ServiceOperation" name="sayHello" implementationRef="sayHello">    <---------- (*2-3)
            <bpmn2:inMessageRef>_ABEE9B1C-4D57-47FA-8ABC-E69DA5F0FD95_InMessage</bpmn2:inMessageRef>                                    <---------- (*2-4)
            <bpmn2:outMessageRef>_ABEE9B1C-4D57-47FA-8ABC-E69DA5F0FD95_OutMessage</bpmn2:outMessageRef>                                 <---------- (*2-4)
          </bpmn2:operation>                                                                                                            <---------- (*2-3)
        </bpmn2:interface>
        <bpmn2:process id="example_servicetask_1a.process1" drools:packageName="com.example.example_servicetask_1a" drools:version="1.0" drools:adHoc="false" name="process1" isExecutable="true" processType="Public">
          :
          :
        </bpmn2:process>
        :
        :
      </bpmn2:definitions>
      

      (3) *process1.bpmn which was saved using BPMN Editor VSCode extension without any changes

      <?xml version="1.0" encoding="UTF-8"?>
      <bpmn2:definitions xmlns:bpmn2="[http://www.omg.org/spec/BPMN/20100524/MODEL]" xmlns:bpmndi="[http://www.omg.org/spec/BPMN/20100524/DI]" xmlns:bpsim="[http://www.bpsim.org/schemas/1.0]" xmlns:dc="[http://www.omg.org/spec/DD/20100524/DC]" xmlns:di="[http://www.omg.org/spec/DD/20100524/DI]" xmlns:drools="[http://www.jboss.org/drools]" xmlns:xsi="xsi" id="_cH5OwUbLEDucBtbC4N5jEw" xsi:schemaLocation="[http://www.omg.org/spec/BPMN/20100524/MODEL] BPMN20.xsd [http://www.jboss.org/drools] drools.xsd [http://www.bpsim.org/schemas/1.0] bpsim.xsd [http://www.omg.org/spec/DD/20100524/DC] DC.xsd [http://www.omg.org/spec/DD/20100524/DI] DI.xsd " exporter="jBPM Process Modeler" exporterVersion="2.0" targetNamespace="[http://www.omg.org/bpmn20]">    <---------- (*3-1)
        <bpmn2:itemDefinition id="_nameItem" structureRef="String"/>
        <bpmn2:itemDefinition id="_messageItem" structureRef="String"/>
                                                                                                                                         <---------- (*3-2)
                                                                                                                                         <---------- (*3-2)
        <bpmn2:itemDefinition id="__ABEE9B1C-4D57-47FA-8ABC-E69DA5F0FD95_ParameterInputXItem" structureRef="String"/>
        <bpmn2:itemDefinition id="__ABEE9B1C-4D57-47FA-8ABC-E69DA5F0FD95_ResultOutputXItem" structureRef="String"/>
        <bpmn2:interface id="_ABEE9B1C-4D57-47FA-8ABC-E69DA5F0FD95_ServiceInterface" name="com.example.example_servicetask_1a_support.HelloWorld" implementationRef="com.example.example_servicetask_1a_support.HelloWorld">
          <bpmn2:operation id="_ABEE9B1C-4D57-47FA-8ABC-E69DA5F0FD95_ServiceOperation" name="sayHello" implementationRef="sayHello"/>    <---------- (*3-3)
        </bpmn2:interface>
        <bpmn2:collaboration id="_F761F4B5-28F8-457C-9D53-03329C2B42B8" name="Default Collaboration">
          <bpmn2:participant id="_14B4F30D-4F2E-4113-AE32-935B16CC6BD5" name="Pool Participant" processRef="example_servicetask_1a.process1"/>
        </bpmn2:collaboration>
        <bpmn2:process id="example_servicetask_1a.process1" drools:packageName="com.example.example_servicetask_1a" drools:version="1.0" drools:adHoc="false" name="process1" isExecutable="true" processType="Public">
          :
          :
        </bpmn2:process>
        :
        :
      </bpmn2:definitions>
      

      (*4) Differences between the processes (*2) and (*3):

      The issue causing error (1):
          - xmlns:xsi="[http://www.w3.org/2001/XMLSchema-instance]" xmlns="[http://www.omg.org/bpmn20]"
      

      in Line (*2-1) was modified to:

      xmlns:xsi="xsi"
      

      in Line (*3-1).

      The issue causing error (2):

      Lines at (*2-2) were removed in (*3), and also lines at (*2-4) were removed in (*3).

      Possible root cause and notes

      You can see the error (1) first after saving the bpmn file using BPMN Editor.
      I think (1) is the issue reported in KOGITO-5714 Stunner - every process shows error messages during compilation.

      We can avoid the error (1) by modifying the bpmn file like (*1-1), but every time we save the bpmn file, we need to modify it manually.

      After avoiding the error (1) by modifying like (*1-1) manually, then you can see the error (2) in question.
      Regarding (2), it looks for me like that inMessageRef and outMessageRef in bpmn2:operation are actually not used in (Java) Service Task. As far as I look at (*2), (*3), (*4), in BC process designer, however, both inMessageRef and outMessageRef remain in bpmn2:operation as dummy data so as to conform to the BPMN specification (inMessageRef must exist in bpmn2:operation). On the other hand, in BPMN Editor VSCode extension, neither inMessageRef nor outMessageRef are added in bpmn2:operation, so I am suspecting that the issue (2) is a bug in BPMN Editor VSCode extension.

      Acceptance criteria

      It is possible to successfully build the attached projects without failures.
      See the Steps to reproduce for more details.

              kgaevski@redhat.com Kirill Gaevskii
              rhn-support-myoshida Masato Yoshida
              Lubomir Terifaj Lubomir Terifaj
              Lubomir Terifaj Lubomir Terifaj
              Votes:
              0 Vote for this issue
              Watchers:
              11 Start watching this issue

                Created:
                Updated:
                Resolved: