I am happy to report that our first full featured (integrated workflow, cool typeAheads, fantastic validation, dynamic tables and many more features) is fully productive!
Thanks to all readers and commenters on my blog and all other bloggers out-there giving me help and insight into the deeper workings of the xPages.
Summarized main difficulties:
- getting the validation to work the way we required (ie. without needing ExtensionLibrary tabbed tables, all fields should be validated, even if currently invisible and the validation should be customizable by the customer himself)
- Solution was: not using validators at all, simply prevent the save with a condition on the action group in the save buttons, the condition is a “result” from our custom validator which sets JSF messages where appropriate
- customized typeAheads (see this blog)
- workflow integration (we can continue to use the LN client based code, which is important as the interface is now working on both “clients”, notes and web)
- certain parts of the form stored in different documents (see this blog)
- dynamic tables which lets the user add new rows to tables of data
- simple yet full featured and customizable views, using the DynamicViewPanel with different filter options per selected view, customizable (via styles) view columns
- fancy field help (see this blog)
Result:
What we now have is a full featured framework which will help us create future xPage applications in a fraction of the time spent on this one! As a matter of fact we could create a simple form/view db with full featured workflow within one day!!!!!!!!!!!!! Most of the work actually could even be “outsourced” to the customer, work such as “defining” field help, column customizations, validations etc.
Best features in xPages (imho):
- CustomControls!!! change in one place an all occurrences are updated! Subforms in the old LN days were no match at all!!!
- typeAheads
Worst feature in xPages (imho):
- error messages from server: an HTML 500 error is of no use, sometimes I needed to dissect the whole app again to find where the problem was
- OneUI: it’s a pain in the ass, but we did it, to figure out how to properly change certain GUI elements look and feel (such as typeAheads)
Recommendation:
- don’t use JavaScript (or only to call backend Java code) !!!! debugging JavaScript is a pain in the ass where as debugging Java is so straight forward (see this blog) and the speed of the code execution is SOOOOOOOOOOOOOOOOOOOOO freaking fast!!!
- use where ever possible “static” methods so you don’t need to instantiate the class, eg. our StandardUtil class has ONLY static methods such as: getKeywordValues, searchUser (for typeAhead), getSortedDocumentCollection, getEmptyDocumentCollection, hasAccess, hasRole etc.
I now need some rest. The past few weeks were mostly sleepless. Any recommendation for a nice “get-well-again” resort close to Switzerland are welcome 😉 ! (can be south Germany or Austria as well)
Congratulations!!!!
Hi David. thanks.. the relieve is great…
few things are open.. do you happen to know how I can fix the multiple value separator in the dynamicViewPanel? it always creates spaces as separators