Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 1048646

Summary: Certain variable names result in a corruption of business process
Product: [Retired] JBoss BPMS Platform 6 Reporter: Babak Mozaffari <bmozaffa>
Component: jBPM DesignerAssignee: Tihomir Surdilovic <tsurdilo>
Status: CLOSED CURRENTRELEASE QA Contact: Sona Mala <smala>
Severity: high Docs Contact:
Priority: high    
Version: 6.0.0CC: kverlaen, lpetrovi
Target Milestone: CR1   
Target Release: 6.0.0   
Hardware: All   
OS: All   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-08-06 20:07:41 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:
Description Flags
Unzip and use the .git directory in it as a repository to clone
none
Server log showing the error during save/build as well as the error when attempting to reopen the process
none
Screenshot when trying to reopen the process
none
Screenshot of details when trying to reopen the process none

Description Babak Mozaffari 2014-01-06 02:05:17 UTC
Created attachment 845874 [details]
Unzip and use the .git directory in it as a repository to clone

Description of problem:

The use of "applicationInput" as a task input variable name allows the process to be saved in the web designer with no apparent error, but the server log shows an error and the process is corrupted so that it cannot be opened again.

Version-Release number of selected component (if applicable):

BPMS 6.0 ER7 on EAP 6.1.1

How reproducible:

Consistent

Steps to Reproduce:
1. Clone attached repository.
2. Open the process (TestFormProcess)
3. On the third node (user task node), add "applicationInput" and "applicationOutput" as input and output data set respectively, of type "com.redhat.bpms.examples.mortgage.Application".
4. Create an assignment from process variable called application, mapped to applicationInput.
5. Create an assignment from applicationOutput to the application process variable.
6. Save the process and observer the server log as it appears to successfully save.
7. Try to reopen the process.

Actual results:
Process cannot be reopened. Error in server log says "cvc-id.1: There is no ID/IDREF binding for IDREF 'applicationInput'.". Process is corrupted.

Expected results:
If applicationInput is a reversed keyword, this should be documented and the designer should prevent its use.


Additional info:

Comment 1 Babak Mozaffari 2014-01-06 02:06:06 UTC
Created attachment 845875 [details]
Server log showing the error during save/build as well as the error when attempting to reopen the process

Comment 2 Babak Mozaffari 2014-01-06 02:06:34 UTC
Created attachment 845876 [details]
Screenshot when trying to reopen the process

Comment 3 Babak Mozaffari 2014-01-06 02:06:59 UTC
Created attachment 845877 [details]
Screenshot of details when trying to reopen the process

Comment 5 Tihomir Surdilovic 2014-01-07 17:22:01 UTC
Yes this is a global problem that has been carried over from the ruleflow days - we add "Input" and "Output" at the end of data input and output names. This is done to help resolve issues with naming conventions but in this case it actually causes problem because of the applicationOutput data output name. If you look at the generated bpmn2 what happens is that both assignments end up being data output assignments because of it which causes the problem. 

I would suggest that we document this (I will add to documentation and commit) rather than trying to resolve this problem because it helps in most cases (except this one :) )

Comment 6 Tihomir Surdilovic 2014-01-07 17:23:11 UTC
I would suggest to use "In" and "Out" rather than "Input" and "Output". I think that should be the overall suggestion in the documentation too.

Comment 7 Tihomir Surdilovic 2014-01-08 19:10:38 UTC
we have changed the default behavior of designer to use "InputX" and "OutputX" instead of Input/Output. This should make this use case a lot less possible to establish by users. fix in designer master and 6.0.x branches

Comment 9 Sona Mala 2014-01-22 12:34:48 UTC
I verify that keywords "Input" and "Output" was changed to "InputX" and "OutputX" in 6.0.0 CR1. Step to reproduce does not fail.

But a problem with using the keywords is still present. I will create more complex bugzilla about this issue.