I guess you're doing what we did at our beginning. David is a superman, we are not, so we have to do it in another way.
We decided to use OpenCms as the frontend several years ago, and then the developers can be divided into 3 groups: UI developers (require JSP only), OpenCms module developers (reusable GUIs and functions), OFBiz service developers (extend OFBiz RMI/data to support OpenCms modules). Now we also use portlets and flashes as UI. Fish-bone diagram is helpful to analyse a business and implement it in OFBiz. "Old OFBiz Standard Floating Layout" is more helpful to combine consultant works with the OFBiz UI. My 2 cents, Shi Yusen/Beijing Langhua Ltd. 在 2009-12-20日的 09:02 +0530,Vasanth Kamatgi写道: > You have summed it up well David. I am looking exactly at that problem. > > We had not seen these problems when we started out with Ofbiz, nor did we > visualize at that time (4 years back) that we would face problems like > these, in future. I think it is a typical scale-up stage issue that Ofbiz > doesn't solve well where functionality and UI throughput expected is > exponentially large and complete team is not as multi-disciplined as the > original team was. I also think that Ofbiz presentation layer is a legacy > of MVC-II paradigm, which was in vogue at the time of design of Ofbiz and > which is now being *contested* by Component based frameworks like JSF, Flex > and Wicket. > > 1) I would like to hear from others, their views on the subject > 2) How have other organizations handled this issue? Are there alternatives > within the existing Ofbiz framework, people have successfully employed? > 3) I am not aware, how to kick-off the analysis, requirement comparison, POC > etc. activities. Guidance by community gurus would be a great help. > > Cheers, > Vasanth > > -----Original Message----- > From: David E Jones [mailto:d...@me.com] > Sent: Sunday, December 20, 2009 2:09 AM > To: dev@ofbiz.apache.org > Subject: Re: Using Apache Wicket in Ofbiz presentation layer > > > To sum up: > > 1. you want a full separation of concerns for the different roles in your > organization, something that won't require additional training beyond their > existing skill set > > 2. you want no dependencies between different roles so they can't mess each > other up or slow each other down > > 3. Apache Wicket will provide these things > > Does that sound about right? > > This sounds amazing! I can't wait to the see the results of an analysis and > comparison for each requirement, and a proof of concept and per-activity > comparison between the different approaches. > > -David > > > On Dec 19, 2009, at 11:55 AM, Vasanth Kamatgi wrote: > > > Hi all, > > > > > > > > Firstly I would like to thank David E. Jones > > <http://www.blogger.com/profile/07283017166339658819> , for his > > encouragement to use the community process. > > > > I had previously posted a question in this community at > > > http://n4.nabble.com/Application-framework-technology-set-tp195713p963334.ht > > ml as a very terse summary of my thoughts. After having a private > > conversation with David, I thought a much in-depth discussion on the > > presentation layer would be beneficial to me as well as the community and > > consequently I am starting a new thread of discussion. > > > > > > > > Here is my primary complaint of Ofbiz presentation Layer - "There isn't a > > STRICT separation of UI / Code in the presentation layer. Due to this > > deficiency, for any revamp in the UI, even though there is no associated > > change in the functionality / business logic, it takes substantial amount > of > > developer time. I see this as a major hindrance to a typical ecommerce > > website, where UI changes are frequent as well as significant." > > > > > > > > To give more insight into why I have this complaint, let me raise some > > questions (and answer them): > > > > > > > > What I think a presentation Layer does? > > > > ============================= > > > > I believe presentation layer can be divided into 6 areas of concern: > > > > Data Preparation - Events / Service (a.k.a actions) generate data that > need > > to be processed to result into a *shape* that can be directly used by a > > view. Eg., only product category id exists in context, we need to display > > category name as well - fetch it. > > > > Layout - It controls the relative position of each of the components > inside > > a page. Wireframes used to build the page. > > > > Page composition - Different areas of the page can be generated by a > > separate component / screen, and the generated output needs to be stitched > > together to result into a complete response > > > > Look and Feel - Visual properties of components of the page (css?) > > > > View Logic - The logic that controls the initial state of each elements of > > the output - like enabling, disabling, non-display etc., of specific > output > > elements. Eg., if sale price exists, show it in large red font, strike > > through the list price, else show list price in large font. > > > > Rich dynamic behaviour - the dynamic behaviour that each of the generated > > output needs to provide inside user-agent's environment (javascript / > dhtml) > > > > > > > > How have I set the things up in Ofbiz? > > > > =========================== > > > > 1. I have created my primary page layout a.k.a. decorator in > > common-screens.xml using sections, actions, widgets, html-templates, > > containers, etc. > > 2. I have abstracted out the common section contents as say, > > includes/header.ftl etc. > > 3. I have created components of a page such as choose catalog, keyword > > search box, etc. as screens (non-top level) using actions and html > templates > > in, say, catalog-screens.xml > > 4. I create a complete response page as a screen in catalog-screens.xml > > using actions, widgets, decorator-screen, decorator-section, > include-screen, > > etc. in, say, catalog-screens.xml > > 5. I specify this top-level page as view, which I link to the > > associated event / service via request map in controller.xml > > > > The actual response out is defined in html fragments in various files > > defined in #2, #3 & #4 > > > > > > > > Exactly what is it that I find cumbersome? > > > > ============================== > > > > UI Designer prepares the prototype, hands it over to the Ofbiz developer, > > who splits it into different fragments, and creates ftls for each of those > > sections. Then, adds page composition, view logic and rich dynamic > > behaviour to those ftls. This complete sequence of steps is irreversible. > > Once handover happens from UI designer to Ofbiz developer, the html / css > > ceases to exist in its native form, making it impossible for the UI > designer > > to "maintain" it. Any UI bug / change request cannot be fixed by UI > > designer. UI designer first analyses the problem reports the possible > > causes to Ofbiz developer, who figures out which ftl file to edit and goes > > and edits it. If a drop down box needs to move from one widget to > another, > > Ofbiz developer employs a cut+paste job that can be so error-prone with > > missing tag closures, quotes, duplicates etc. There have been so many > > instances of Ofbiz developer trying to fix UI issues, but failing to do so > > because he / she is good at writing java-like, jsp-like and > javascript-like > > code and not standards-compliant html / css code. He can't use visual > tools > > like a UI designer to improve his productivity. Throw into this mix the > > cross-browser compatibility issue - the whole effort becomes very > > unproductive with UI designer, Ofbiz developer working together to fix it, > > when it should actually be handled by UI designer alone. > > > > Ofbiz supports data preparation, page composition, view logic well. But > > other areas are a little troublesome. > > > > > > > > How would I like it to work? > > > > ==================== > > > > Different areas of concern, as listed in my previous paragraph, are best > > worked at by different types of resources. Assuming we are using java > > platform for development: > > > > Data Preparation - java coder > > > > Layout - UI designer / business analyst / SEO specialist > > > > Page composition - java / jsp coder > > > > Look and Feel - User Experience expert > > > > View Logic - java / jsp coder > > > > Rich dynamic behaviour - script coder / java coder > > > > Given these different areas of expertise, a software development / > > maintenance model needs to be employed to enable these types of resources > to > > work at full productivity without tripping each other. Cutting a long > story > > short, I believe, Ofbiz should enable html, css, multi-media & view logic > to > > be developed and managed independently. UI designer should continue to > fix > > UI bugs by just editing his / her html code. There should be no pollution > > of html and css code. View logic should be written without using tags. > > > > I have dived into wicket and wrote my first hello world recently and > believe > > wicket-like rendering would be a good enhancement to Ofbiz. I am not > > claiming to be an expert of wicket, but based on the documentation I have > > read, it seems to fit the scheme well. > > > > > > > > I hope I have given enough details for the community to start a > > conversation. I understand that, the question begs of not only an > > architectural discussion, but also of a software development / maintenance > > model. > > > > > > > > Cheers, > > > > Vasanth >