Hi,
We're currently trying to build a tool to translate the messages of our site.
We basically want the translator just to see a simple panel showing him the
message, its description and its different translations, with of course a
possibility of changing them.
So the translator see a message, translate it, and hit a 'next' button to
continue his work. He can also go backward with a 'back' button.
Our model is pretty simple, we have a Message entity with a @OneToMany link to
an Expression entity, each of these Expression having a @OneToOne to a Language.
We rely at the moment on a simple list of objects (the messages). We first try
to work inside a simple long running conversation, but it was source of many
possible error affecting our database, since if the user was hitting the
browser's back button instead of our 'back' button, the expression he would
then modify would be fetched for the previous message, the one he was on before
he hit that browser's back button. So the application couldn't apparently know
this button was pushed, and our database integrity was in potential danger.
So we switch to a jPDL page flow. Everything is working better now, since if
the user hits the browser's back button, he's sent outside the tool, so our
data can't be affected. Though, if the user wants to get out of the tool by
clicking on another links, he would get a 'navigation error' exception, since
this case isn't known by my jPDL rules. So the tool isn't fully effective yet.
We'd like to know first if there's a better way to do it, because we used the
JPDL pageflow mainly to avoid the database integrity errors, not because we
particularly wanted to.
If jPDL was a good choice, then how to take into accoung the case of an user
clicking on a link outside of the tool? Is there anyway to put a 'wild card' in
the jPDL rules to tell it to 'end' the conversation?
Although I'm not sure it's really necessary, here's my jsf page and my pageflow
rules. As you'll see, everything is pretty simple:
| <h:form>
| <rich:panel>
| <f:facet name="header">#{item.name},
#{index+1}/#{totalItems}</f:facet>
| <h:outputText value="#{item.description}"/>
| <ui:repeat value="#{item.getExpressions()}" var="ex">
| <h:inputText value="#{ex.text}"/>
| </ui:repeat>
| <h:commandLink value="previous" action="previous"
page-flow="auto-translate"/>
| <h:commandLink action="next" value="next"
page-flow="auto-translate" />
| <h:commandLink action="end" value="end"
page-flow="auto-translate" />
| </rich:panel>
| </h:form>
|
| <pageflow-definition name="auto-translate">
|
| <start-page name="TranslateItem" view-id="/admin/TranslateItem.xhtml">
| <redirect/>
| <transition name="next" to="TranslateItem">
| <action expression="#{autoTranslator.next()}" />
| </transition>
| <transition name="previous" to="TranslateItem">
| <action expression="#{autoTranslator.previous()}" />
| </transition>
| <transition name="*" to="Admin">
| <action expression="#{autoTranslator.end()}" />
| </transition>
| </start-page>
|
| <page name="Admin" view-id="/admin/admin.xhtml">
| <end-conversation/>
| </page>
|
| </pageflow-definition>
|
The last transition, with the '*' put here as a wildcard, is there only to show
you what we'd like to have.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4111877#4111877
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4111877
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user