Here is is my components.xml

  |    <bpm:jbpm>
  |       <bpm:process-definitions>
  |       </bpm:process-definitions>
  |       <bpm:pageflow-definitions>
  |             <value>signUpCustomer.jpdl.xml</value>
  |       </bpm:pageflow-definitions>
  |    </bpm:jbpm>      
  | 

I start the pagefloe from capturePhoneDetails.page.xml with
<begin-conversation join="true" pageflow="signupCustomer"/>

here is the pageflow


  | <?xml version="1.0"?>
  | 
  | <pageflow-definition xmlns="http://jboss.com/products/seam/pageflow";
  |     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  |     xsi:schemaLocation="http://jboss.com/products/seam/pageflow 
http://jboss.com/products/seam/pageflow-2.0.xsd";
  |     name="signupCustomer">
  | 
  |     <start-page name="capturePhoneDetails" 
view-id="/signyouup/capturePhoneDetails.xhtml">
  |             <transition name="next" to="captureContactDetails">
  |                     <action
  |                             
expression="#{webCustomerAction.moveTokenToCreateContact}" />
  |             </transition>
  |     </start-page>
  |     <page name="captureContactDetails" 
view-id="/signyouup/captureContactDetails.xhtml" 
no-conversation-view-id="/home.xhtml">
  |             <transition name="back" to="capturePhoneDetails">
  |                     <action 
expression="#{webCustomerAction.moveTokenToChoosePhone}" />
  |             </transition>
  |             <transition name="next" to="captureContactSuccessful">
  |                     <action 
expression="#{webCustomerAction.persistContact}" />
  |                     <exception-handler 
exception-class="org.jbpm.JbpmException">
  |                             <action 
expression="#{webCustomerAction.handleException}" />
  |                     </exception-handler>
  |             </transition>
  |     </page>
  |     <decision name="captureContactSuccessful" 
expression="#{webCustomerAction.success}">
  |             <transition name="true" to="creditCheck"></transition>
  |             <transition name="false" to="failure"></transition>
  |     </decision>
  |     <page name="creditCheck" view-id="/signyouup/creditCheck.xhtml" 
no-conversation-view-id="/home.xhtml">
  |             <transition name="next" to="creditCheckSuccessful">
  |                     <action 
expression="#{webCustomerAction.doCreateAccount}" />
  |                     <action expression="#{webCustomerAction.doCreditCheck}" 
/>
  |                     <exception-handler 
exception-class="org.jbpm.JbpmException">
  |                             <action 
expression="#{webCustomerAction.handleException}" />
  |                     </exception-handler>
  |             </transition>
  |     </page>
  |     <decision name="creditCheckSuccessful" 
expression="#{webCustomerAction.success}">
  |             <transition name="false" to="failure"></transition>
  |             <transition name="true" to="capturePaymentDetails"></transition>
  |     </decision>
  |     <page name="capturePaymentDetails" 
view-id="/signyouup/capturePayment.xhtml" no-conversation-view-id="/home.xhtml">
  |             <redirect />
  |             <transition name="next" to="captureDeliveryDetails">
  |                     <action 
expression="#{webCustomerAction.moveTokenToCaptureDeliveryDetails}" />
  |             </transition>
  |     </page>
  |     <page name="captureDeliveryDetails" 
view-id="/signyouup/captureDeliveryDetails.xhtml" 
no-conversation-view-id="/home.xhtml">
  |             <transition name="next" to="confirmTakePayment">
  |                     <action 
expression="#{webCustomerAction.moveTokenToTakePayment}" />
  |             </transition>
  |             <transition name="back" to="capturePaymentDetails">
  |                     <action 
expression="#{webCustomerAction.moveTokenToCaptureBankDetails}" />
  |             </transition>
  |     </page>
  |     <page name="confirmTakePayment" 
view-id="/signyouup/confirmTakePayment.xhtml" 
no-conversation-view-id="/home.xhtml">
  |             <transition name="next" to="salesOrderSuccessful">
  |                     <action expression="#{webCustomerAction.doSalesOrder}" 
/>
  |                     <exception-handler 
exception-class="org.jbpm.JbpmException">
  |                             <action 
expression="#{webCustomerAction.handleException}" />
  |                     </exception-handler>
  |             </transition>
  |             <transition name="back" to="captureDeliveryDetails">
  |                     <action 
expression="#{webCustomerAction.moveTokenToCaptureDeliveryDetails}" />
  |             </transition>
  |     </page>
  |     <decision name="salesOrderSuccessful"  
expression="#{webCustomerAction.success}">
  |             <transition name="false" to="failure"></transition>
  |             <transition name="true" to="success"></transition>
  |     </decision>
  |     <page name="success" view-id="/signyouup/success.xhtml" 
no-conversation-view-id="/home.xhtml">
  |             <end-conversation />
  |             <transition name="toBeginning" to="capturePhoneDetails" />
  |     </page>
  |     <page name="failure" view-id="/error.xhtml">
  |             <end-conversation />
  |     </page>
  | </pageflow-definition>
  | 

Here is my backing bean

  | package com.yannitech.virgin.selfcare.customer.manager;
  | 
  | import java.text.SimpleDateFormat;
  | import java.util.Date;
  | 
  | import org.jboss.seam.ScopeType;
  | import org.jboss.seam.annotations.Factory;
  | import org.jboss.seam.annotations.In;
  | import org.jboss.seam.annotations.Logger;
  | import org.jboss.seam.annotations.Name;
  | import org.jboss.seam.annotations.Out;
  | import org.jboss.seam.annotations.Scope;
  | import org.jboss.seam.faces.FacesMessages;
  | import org.jboss.seam.log.Log;
  | import org.jbpm.graph.action.SeamedAction;
  | import org.jbpm.graph.exe.ExecutionContext;
  | 
  | import com.yannitech.virgin.selfcare.common.enums.Contact_TypeEnum;
  | import com.yannitech.virgin.selfcare.customer.entity.Contact;
  | 
  | @Name("webCustomerAction")
  | @Scope(ScopeType.CONVERSATION)
  | public class WebCustomerAction extends SeamedAction  {
  | 
  |     @Logger 
  |     private Log log;
  |     
  |     @In
  |     private FacesMessages facesMessages;
  |     
  |     @In(create=true)
  |     private ContactManager contactManager;
  |     
  |     @In(create=true)
  |     @Out
  |     private Contact newContact;
  |     
  |     private boolean success = Boolean.TRUE;
  |     
  | //  @CreateProcess(definition="SignUpCustomerBP", 
processKey="syu#{syuProcessKey}")
  |     public void startBusinessProcess() {
  |             log.info("startBusinessProcess SignUpCustomerBP");
  |     }
  |     
  | //  @Transition("toCreateContact")
  |     public void moveTokenToCreateContact() {
  |             log.info("moveTokenToCreateContact");
  |     }
  | 
  | //  @Transition("toChoosePhone")
  |     public void moveTokenToChoosePhone() {
  |             
  |     }
  |     
  | //  @Transition("toFailure")
  |     public void moveTokenToFailure() {
  |             
  |     }
  |     
  |     public void persistContact() {
  |             log.info("persistContact");
  |             newContact.setType(Contact_TypeEnum.CONSUMER);
  | //          contactManager.persist(newContact);
  | //          BusinessProcess.instance().transition("toCreateAccount");
  |     }
  |     
  |     public void doCreateAccount() {
  |             log.info("doCreateAccount");
  | //          BusinessProcess.instance().transition("toCreditCheckContact");
  |     }
  |     
  |     public void doCreditCheck() {
  |             log.info("doCreditCheck");
  | //          BusinessProcess.instance().transition("toCaptureBankDetails");
  |     }
  | 
  |     public void moveTokenToCaptureDeliveryDetails() {
  |             log.info("moveTokenToCaptureDeliveryDetails");
  | //          BusinessProcess.instance().transition("toCaptureDelivery");
  |     }
  |     
  | //  @Transition("toCaptureBankDetails")
  |     public void moveTokenToCaptureBankDetails() {
  |             log.info("moveTokenToCaptureBankDetails");
  |     }
  |     
  | //  @Transition("toTakePayment")
  |     public void moveTokenToTakePayment() {
  |             log.info("moveTokenToTakePayment");
  |     }
  |     
  |     public void doSalesOrder() {
  |             log.info("doSalesOrder");
  | //          BusinessProcess.instance().transition("toComplete");
  |     }
  |     
  |     public Contact getNewContact() {
  |             return newContact;
  |     }
  | 
  |     public void setNewContact(Contact newContact) {
  |             this.newContact = newContact;
  |     }       
  | 
  |     @Factory(value="syuProcessKey",scope=ScopeType.EVENT)
  |     public String getProcessKey() {
  |             SimpleDateFormat sdf = new SimpleDateFormat();
  |             return sdf.format(new Date());
  |     }
  |     
  |     public void handleException() {
  |             ExecutionContext executionContext = 
ExecutionContext.currentExecutionContext();
  |             
facesMessages.add(executionContext.getException().getCause().getMessage());
  |             success=false;
  | //          BusinessProcess.instance().transition("toFailure");
  |     }
  | 
  |     public boolean isSuccess() {
  |             return success;
  |     }
  | 
  |     public void setSuccess(boolean success) {
  |             this.success = success;
  |     }
  | 
  | }
  | 

my jsf page


  |     <ui:composition xmlns="http://www.w3.org/1999/xhtml";
  |             xmlns:s="http://jboss.com/products/seam/taglib";
  |             xmlns:ui="http://java.sun.com/jsf/facelets";
  |             xmlns:f="http://java.sun.com/jsf/core";
  |             xmlns:h="http://java.sun.com/jsf/html";
  |             xmlns:rich="http://richfaces.ajax4jsf.org/rich";
  |             xmlns:a="https://ajax4jsf.dev.java.net/ajax";
  |             template="../layout/template.xhtml">
  | 
  |             <ui:define name="body">
  |                     <h:messages globalOnly="true" styleClass="message" />
  |                     <h:form>
  |                             <a:outputPanel id="phoneOutput">
  |                                     <s:decorate id="phoneMakeDecorate" 
template="../layout/edit.xhtml">
  |                                             <ui:define name="label">Phone 
Make:</ui:define>
  |                                             <h:selectOneMenu 
value="#{selectedPhoneMake}" converter="#{phoneManager.phoneMakeConverter}">
  |                                                     <s:selectItems 
value="#{phoneMakes}" var="phoneMake"
  |                                                             
label="#{phoneMake.name}" noSelectionLabel="Please select" />
  |                                                     <a:support 
event="onchange"
  |                                                             
actionListener="#{phoneManager.findWebPhoneModelsForMake}"
  |                                                             
reRender="phoneOutput" requestDelay="500" />
  |                                             </h:selectOneMenu>
  |                                     </s:decorate>
  |                                     <s:decorate id="phoneModelDecorate" 
template="../layout/edit.xhtml">
  |                                             <ui:define name="label">Phone 
Model:</ui:define>
  |                                             <h:selectOneMenu 
value="#{selectedPhoneSalesChannel}" converter="#{phoneManager.phoneConverter}">
  |                                                     <s:selectItems 
value="#{phoneSalesChannels}" var="phoneSalesChannel"
  |                                                             
label="#{phoneSalesChannel.phone.phoneModel.name} 
#{phoneSalesChannel.phone.pack}"
  |                                                             
noSelectionLabel="Please select" />
  |                                                     <a:support 
event="onchange"
  |                                                             
actionListener="#{phoneManager.selectPhoneSalesChannel}"
  |                                                             
reRender="phoneOutput" requestDelay="500" />
  |                                             </h:selectOneMenu>
  |                                     </s:decorate>
  |                                     <s:decorate id="phonePriceDecorate" 
template="../layout/display.xhtml">
  |                                             <ui:define 
name="label">Price:</ui:define>
  |                                             <h:outputText 
value="#{selectedPhoneSalesChannel.price}" />
  |                                     </s:decorate>
  |                                     <s:graphicImage rendered="#{picture ne 
null}" value="#{picture}">
  |                                             <s:transformImageSize 
width="200" maintainRatio="true" />
  |                                     </s:graphicImage>                       
  |                             </a:outputPanel>                
  |                             <s:decorate id="installmentTermDecorate" 
template="../layout/edit.xhtml">
  |                                     <ui:define name="label">Installment 
Term:</ui:define>
  |                                     <h:selectOneMenu 
value="#{webSalesOrderManager.webProductOrderIssue.vm_Installment_TermEnum}">
  |                                             <s:selectItems 
value="#{vmInstallment_TermEnums}" var="installment" 
label="#{installment.name}" noSelectionLabel="Please select" />
  |                                             <s:convertEnum />
  |                                             <a:support event="onblur" 
reRender="installmentTermDecorate" requestDelay="500" />
  |                                     </h:selectOneMenu>
  |                             </s:decorate>
  |                             <s:decorate id="ratePlanDecorate" 
template="../layout/edit.xhtml">
  |                                     <ui:define name="label">Rate 
Plan:</ui:define>
  |                                     <h:selectOneMenu 
value="#{webSalesOrderManager.webProductOrderIssue.ratePlan}">
  |                                             <s:selectItems 
value="#{ratePlans}" var="ratePlan" label="#{ratePlan.name}"     
noSelectionLabel="Please select" />
  |                                             <s:convertEntity />
  |                                             <a:support event="onblur" 
reRender="ratePlanDecorate" requestDelay="500" />
  |                                     </h:selectOneMenu>
  |                             </s:decorate>                                   
        
  |                             <s:decorate id="upfrontAmountDecorate1" 
template="../layout/edit.xhtml">
  |                                     <ui:define name="label">Upfront 
Amount:</ui:define>
  |                                     <h:inputText id="upfrontAmountId1" 
value="#{webSalesOrderManager.webProductOrderIssue.upfrontAmount}">
  |                                             <a:support event="onblur" 
reRender="upfrontAmountDecorate1" requestDelay="500" />
  |                                     </h:inputText>
  |                             </s:decorate>
  |                             <s:decorate id="upfrontAmountDecorate" 
template="../layout/edit.xhtml">
  |                                     <ui:define name="label">Upfront 
Amount:</ui:define>
  |                                     <h:inputText id="upfrontAmountId" 
value="#{webSalesOrderManager.webProductOrderIssue.upfrontAmount}">
  |                                             <a:support event="onblur" 
reRender="upfrontAmountDecorate" requestDelay="500" />
  |                                     </h:inputText>
  |                             </s:decorate>
  |                             <h:commandButton id="next" value="Next" 
action="next" />
  |                     </h:form>
  |             </ui:define>
  |     </ui:composition>
  | 

I have removed all busines process stuff. The behavior is the same with or 
without the business process code.

The slowness is on any of the jsf elements with an ajax onblur event.

I changed the dvd example app to use some ajax and I see the same behavior 
there.

It is a lot faster though probably due to the db being in memory hypersonic 
whereas I am using mysql in my app.

Cheers
Pieter

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4108426#4108426

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4108426
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to