Not just the punchline to an indelicate lawyer joke and a memorable quote from a 90's movie, “a good start” also describes the BPEL tooling that is offered as part of the recent release of JBossTools. While this release focuses mainly on stabilizing existing tools and the addition of new features, the BPEL Editor User Experience (as I'm sure the JBossTools team will agree) still leaves much to be desired.
Besides having an incredibly non-intuitive user interface bordering on the user hostile, the eclipse BPEL Editor still has quite a few serious bugs and gaps in functionality. After having played with Riftsaw and the JBossTools for about a month, I came up with a list of fixes and enhancements I'd like to see implemented within the next few releases. Some of these are “nice to have”, others are a definite “must have”.
“Must have” Features:
Validation: While there has been a great deal of work already done to improve the BPEL validation, I still ran across some compilation errors that the in-built validator did not catch. My recommendation would be to run the Riftsaw bpelc compiler during a project build to ensure the bpel will compile. Compilation is relatively fast and I don't anticipate this being a huge problem if the user has “Build Automatically” enabled on the eclipse Project.
Refactoring: Often times I find myself changing the names of variables, port types, partner links, etc. either in the Property sheet or directly on the editor canvas without thinking; what I really wanted to do was refactor the name change and have it propagate through to the WSDL or XSD where the element is defined. It would be simple enough to provide a change listener that prompts you with “Hey, I noticed you changed the name of this <thing> - did you intend to refactor instead?” possibly with a “Don't ask me again!” checkbox. The same functionality should be provided for the WSDL and XSD editor. This would go a long way to better integration within the tooling.
Better synchronization between design & source views and Property sheets.
“Nice to have” Features:
Complex variable initialization within Assign: this could easily be solved with the addition of a button to the Assign Properties/Details tab which displays a variables selection dialog. The editor could then generate the appropriate XML to initialize complex variables. Apparently, the Riftsaw engine requires the structure of complex variables to be set before they can be accessed.
Debugging (really, really nice to have): At the least I would like to be able to set breakpoints and inspect variables at runtime; of course a full-featured interactive debugger, which allows single-stepping, changing variables, watchpoints, etc. would be nice to have.
“Follow link” capabilities from the BPEL editor to WSDL/XSD and from WSDL editor to XSD for messages, port types and partner links.
Must fix Bugs:
The namespace cache is not being refreshed correctly when editing in source view. This causes some strange validation errors, as message parts and variables may no longer be resolved correctly.
The validator does not understand return types of xpath functions; e.g. starts-with() returns boolean, but when used in a condition, the validator reports this as “not a boolean expression”
The concat() function argument validation appears to have a bug; not all arguments are recognized correctly as variable references.
There appears to be some kind of caching problem in the validator (unrelated to namespaces) which prevents it from correctly resolving variable parts. Sometimes the only way to remove Error Markers is to close and reopen a project.
I'd like to use this wiki document as a "wish list" for new features, so please feel free to add your $0.02 worth!