Bug 1134711
| Summary: | Using JBDS process designer, user can set boundary error event without validation error, but the process will throw Exception at runtime | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | [Retired] JBoss BPMS Platform 6 | Reporter: | Hisao Furuichi <hfuruich> | ||||||
| Component: | Eclipse Tooling | Assignee: | Kris Verlaenen <kverlaen> | ||||||
| Status: | CLOSED EOL | QA Contact: | Jozef Marko <jomarko> | ||||||
| Severity: | high | Docs Contact: | |||||||
| Priority: | medium | ||||||||
| Version: | 6.0.2 | CC: | bpms-support, mbaluch, pleacu | ||||||
| Target Milestone: | --- | ||||||||
| Target Release: | --- | ||||||||
| Hardware: | Unspecified | ||||||||
| OS: | Unspecified | ||||||||
| Whiteboard: | |||||||||
| Fixed In Version: | Doc Type: | Bug Fix | |||||||
| Doc Text: | Story Points: | --- | |||||||
| Clone Of: | Environment: | ||||||||
| Last Closed: | 2020-03-27 20:01:30 UTC | Type: | Bug | ||||||
| Regression: | --- | Mount Type: | --- | ||||||
| Documentation: | --- | CRM: | |||||||
| Verified Versions: | Category: | --- | |||||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||||
| Embargoed: | |||||||||
| Attachments: |
|
||||||||
Created attachment 931756 [details]
resources for this ticket
This is fixed in communit BPMN2 Modeler - Diagram Editor 1.1.1.201409261846 Note: In community the problem was solved by implementing option 2/ Retested with JBDSIS-8.0.0.Beta2a and JBDS -8.0.1.GA and validation does not work. I played a bit more with this issue and it seems that it works on an older project which I have created while testing the fix on a community version. If I create a new project with 8.0.0.Beta2a and copy the process definition (jbds_bad.bpmn) into the project then validation will not catch the error. Paul, can you please let me know which version of the editor was used to build JBDS 8.0.0? Looks like these changes didn't make it in there... JBDSIS 8.0.0 has not gone GA yet. It's currently scheduled to go out with Data Virtualization in February. When it does though BPMN2 Modeler will be available through Early Access only (since it's not .Final and JDV is the only features being officially released). QE should verify that the fix is there by testing this p2 site: http://www.qa.jboss.com/binaries/RHDS/updates/development/luna/integration-stack/aggregate/8.0.0.CR1/earlyaccess/ Thanks Paul! I'll put this on the QE queue then ;) It is still reproducible on jbds-8.0.2.GA_jbdsis-8.0.0.CR1.earlyaccess. Both bpmn2 processes from the attachment was validated without error and both processes was started without exception with given output. Created attachment 985948 [details]
processes, source code and output
Sorry folks, my bad... There's a User Preference toggle called "Perform Core BPMN 2.0 validation" which enables/disables the core validation. The problem reported here happens to be caught by one of those core validation constraints. To change this setting, select Window->Preferences from main menu, then select the BPMN2->jBPM Runtime page. I'll change the default value for this to TRUE to prevent future problems. Please retest with these builds: Kepler: http://download.eclipse.org/bpmn2-modeler/updates/kepler/1.0.4/ build# 1.0.4.201502062220 Luna: http://download.eclipse.org/bpmn2-modeler/updates/luna/1.1.2/ build# 1.1.2.201502062220 Verified on: jbds-8.0.2.GA_jbdsis-8.0.0.CR2 With turned on BPMN2 core validation, there appears error about missing target for file 'BoundaryErrorWithoutTarget.bpmn2' from my attachment. |
Description of problem: Using JBDS process designer, user can set a boundary error event without validation error. However when user starts the process, following ERROR is thrown: === java.lang.IllegalArgumentException: Cannot add asset: unable to parse xml : Exception class java.lang.NullPointerException : null, at org.jbpm.runtime.manager.impl.SimpleRuntimeEnvironment.addAsset(SimpleRuntimeEnvironment.java:111) at org.jbpm.runtime.manager.impl.RuntimeEnvironmentBuilder.addAsset(RuntimeEnvironmentBuilder.java:281) at org.jbpm.runtime.manager.impl.RuntimeEnvironmentBuilder.addAsset(RuntimeEnvironmentBuilder.java:56) at org.jbpm.test.JbpmJUnitBaseTestCase.createRuntimeManager(JbpmJUnitBaseTestCase.java:308) at org.jbpm.test.JbpmJUnitBaseTestCase.createRuntimeManager(JbpmJUnitBaseTestCase.java:235) at org.jbpm.test.JbpmJUnitBaseTestCase.createRuntimeManager(JbpmJUnitBaseTestCase.java:217) at com.sample.ProcessTest.testProcess(ProcessTest.java:17) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) === The business process is attached as jbds_bad.bpmn. Also please take a look at attached screenshot, evidence1.png. The root cause of the Exception was "Target" should be defined for boundary error event. If user set it, business process is executed without any error. I attached modified one as jbds_good.bpmn, and screenshot as evidence2.png. This is quite hard for user to realize it. If none of process variable is defined, select bar named "Target" is blank. So user thinks they don't have to set it. In addition to it, process validation doesn't alert it. One of Red Hat customer suggests following choice to avoid this trouble: 1: If "Target" is not selected by user, designer will automatically define and set variable 2: Process validation will alert that "Target" is not selected 3: Run time error will explain that "Target" is not set. ("Cannot add asset: unable to parse xml : Exception class java.lang.NullPointerException" is hard to realize the root cause) 4: As "Error" table has, add clickable "plus button" next with "Target". So user can realize that it is necessary to define it. Also usability will be improved Version-Release number of selected component (if applicable): - JBoss Developer Studio 7.1.1 - jbdevstudio-integration-stack-updatesite-7.0.2.GA - JBoss BPM Suite 6.0.2 Steps to Reproduce: 1. Define business process like attached files(jbds_bad.bpmn, evidence1.png) 2. Start process Actual results: NullPointerException will be thrown Expected results: Request one of those fix: 1: If "Target" is not selected by user, designer will automatically define and set variable 2: Process validation will alert that "Target" is not selected 3: Run time error will explain that "Target" is not set. ("Cannot add asset: unable to parse xml : Exception class java.lang.NullPointerException" is hard to realize the root cause) 4: As "Error" table has, add clickable "plus button" next with "Target". So user can realize that it is necessary to define it. Also usability will be improved Additional info: Web designer has different user interface. Although I only set "error ref", it works fine. I attached the business process as web_good.bpmn.