Maybe I'm not understanding what you propose in this message... but how is this 
different from the current common practice?

-David


On Dec 22, 2009, at 1:47 AM, Abdullah Shaikh wrote:

> Hi All,
> 
> When I was working on ecommerce I also found it difficult/troublesome to
> change the UI, so regarding having separation of UI / Code in the
> presentation layer, below are my thoughts, but I hadn't implemented them,
> because I needed to complete the project and had no time for this.
> 
> What I feel is we can have all the data preparation in Groovy itself and
> just the displaying part in FTL page, this would reduce the complexity in
> FTL pages and would I guess provide the UI separation from code.
> 
> For example, currently FTL pages are some what like this,
> 
> if(this == that ) {
>    <table>data goes here</table>
> } else {
>   <table>data goes here</table>
> }
> 
> What we can do is, put this logic in groovy and let the ftl display the
> data.
> 
> Groovy :
> if(this == that) {
>    context.put("data", data goes here);
> } else {
>    context.put("data", other data goes here);
> }
> 
> FTL :
> 
> <table> data from context </table>
> 
> This way the FTL pages will be free of any logic and will just render the
> data provided through context from Groovy.
> 
> If using this technique,
> 
> 1) Every FTL page will require a Groovy file for data preparation logic
> 2) Any changes can be does easily as Groovy won't require server restart
> 3) Changes in the UI can be done easily as we just need to paste the new UI
> code and get appropriate data from context and display it where ever you
> require.
> 
> We can decide on a model for passing data to FTL pages, for example
> 
> Groovy :
> 
> data.put("userdetails", userdetails);
> data.put("paymentsinfo" paymentinfo);
> data.put"shoppingcart", shoppingcart);
> context.put("data", data);
> 
> FTL :
> 
> <table data.get("userdetails")</table>
> <table>data.get("paymentinfo", paymentinfo)</table>
> <table>data.get("shoppingcart" shoppintcart);
> 
> 
> This are just my thoughts on how can we separate UI from Code (display
> logic), I haven't seen or used Apache Wicket so no idea about how that will
> work or integrate in OFBiz.
> 
> But this approach wont require any new integration or any POC as Groovy &
> FTL are already part of OFBiz.
> 
> Let me know your thoughts or anything that I am missing.
> 
> - Abdullah
> 
> On Mon, Dec 21, 2009 at 11:06 PM, David E Jones <d...@me.com> wrote:
> 
>> 
>> On Dec 21, 2009, at 8:12 AM, Ean Schuessler wrote:
>> 
>>> David E Jones wrote:
>>>> 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.
>>>> 
>>> Just a touch Snarky there, Mr. Jones. :-)
>> 
>> You're right, I was a bit snarky there. I apologize if I offended anyone. I
>> guess I should have said something like: That sounds a little bit too
>> amazing to be true.
>> 
>>> Vasanth, I have spent some time examining Wicket and its not clear to me
>> that it is able to remove the problems in all but the most simple cases.
>> HTML for complicated multi-state widgets would still need to be divided into
>> many fragments, which are hard for the HTML designer to understand. It would
>> also still not be very clear to the designer where those fragments need to
>> be delineated because they do not understand the control flow.
>>> 
>>> The deep set problem is that there will be many cases where you want to
>> look at a completed HTML assembly in its populated state to see how the
>> layout looks. That can only be done by editing on a live ofbiz environment
>> and that is always going to be pushing the skills of a GUI designer. What
>> using Wicket does achieve, however, is the elimination of a high level
>> widget system. While we are not really taking advantage of it it is possible
>> to have the OFBiz widgets present themselves in a Swing, SWT or GWT form
>> without rebuilding the entire GUI from scratch. That's a pretty big strike
>> against the Wicket approach. Wicket is also pretty tightly bound to Java the
>> language, which may or may not be the most productive thing to use depending
>> on your point of view (ie. PHP programmers are plentiful and cheap).
>>> 
>>> In some problem domains like the shopping front-end we may need to accept
>> that the customer use-cases are simply to variable to make the widget
>> strategy add value. That's why, here at Brainfood, we've rebuilt the
>> e-commerce front end on our own templating system. Wicket might also be a
>> worthwhile strategy for that front end rebuild. I imagine that most of your
>> HTML workload revolves around that component. If you really believe in it, I
>> encourage you to build a Wicket version of the ecommerce component. I would
>> be happy to review it and compare its benefits with our effort.
>> 
>> The general idea is an interesting one, ie of really separating things by
>> role and eliminating dependencies.
>> 
>> I like the stuff you guys at Brainfood have done with WebSlinger, and it
>> certainly makes things easier for people in certain roles.
>> 
>> In a way I wonder if points #1 and #2 that I listed above are actually
>> possible. My theory over the years is that they are simply not possible, and
>> all attempts are guaranteed to fall short because those requirements are not
>> "internally consistent". It would be interesting to have a well-funded R&D
>> project to get feedback from a bunch of people, assemble a number of
>> possible designs, then implement and test those designs in various
>> organizations. I'm not sure if that will ever happen, and I suppose even if
>> it did the winning design would probably be so biased by politicking that
>> the stated result might not be accurate.
>> 
>> Anyway, it's a tough problem. The main issues I see are kind of like what
>> you listed Ean, namely:
>> 
>> 1. different organizations have different roles and different skills sets,
>> so to be effective you'd really need to document a variety of organizations
>> and combinations of skill sets and be flexible enough to address at least a
>> few of the most common ones, or the ones that should be most easy for an
>> organization to assemble
>> 
>> 2. it's not possible to completely eliminate dependencies between what
>> different people in different roles are doing; there might be some things
>> you could do to either mitigate (handle automatically or
>> transparently/implicitly) or obviate (fail fast/early) the problems, but
>> these dependencies are an inherent part of what is being built and IMO they
>> simply cannot be totally eliminated, especially if you want reusable parts
>> of the screens, etc
>> 
>> My favorite approach so far to getting people to handle this well is to
>> divide front-end developers into those who are mostly visually talented, and
>> those who have gotten into scripting and such too. These people will have to
>> get used to working together in order to get things done, IMO. From time to
>> time you'll run into a person that is great at both, but not usually. Those
>> who are into scripting and working with straight HTML can usually get into
>> using the OFBiz widgets and FTL templates and do quite well with them (and
>> without very much training too). But that isn't everyone, and you certainly
>> need someone who can break things down and implement the technical things to
>> drive them.
>> 
>> Some tools make this easier, and therefore require less technical
>> knowledge, but those tools typically also restrict what you can do. If you
>> want to keep it cheap and simple then that's great, just do what the tool
>> makes easy. If you really want to be able to design and build anything that
>> is "internally consistent" then you're going to need more flexible tools and
>> more knowledgeable people.
>> 
>> Or am I wrong and the silver bullet solution does exist and I just haven't
>> yet had the pleasure of experiencing it?
>> 
>> Hopefully this time I'm less snarky, without being too depressing... :)
>> 
>> -David
>> 
>> 
>> 

Reply via email to