Ok I post you some code and informations... It will not say more that I already 
said... but ok let's go.

Here is my task :

<task-node name="Creer bilan">
  |             <task name="bilanCP">
  |                     <assignment actor-id="#{CP}" />         
  |             </task>         
  |             <transition to="Evaluation DP" name="OK"></transition>
  |     </task-node>
  | 

Here is my association in the forms.xml :
<form task="bilanCP" form="bilanCP.xhtml"/>

Here is my bilanCP.xhtml (displaying well) :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
  | 
  | <html xmlns="http://www.w3.org/1999/xhtml";
  |       xmlns:ui="http://java.sun.com/jsf/facelets";
  |       xmlns:c="http://java.sun.com/jstl/core";
  |       xmlns:h="http://java.sun.com/jsf/html";
  |       xmlns:f="http://java.sun.com/jsf/core";    
  |       xmlns:tf="http://jbpm.org/jsf/tf";
  |       xmlns:jbpm="http://jbpm.org/jsf";>
  | 
  |    <ui:component>
  |     <form enctype="multipart/form-data" method="POST" action="uploadSuivi">
  |       <jbpm:dataform>
  |         <f:facet name="header">
  |           Envoyer un fichier local 
  |         </f:facet>
  |         <jbpm:datacell>
  |           <f:facet name="header">
  |             Selectionnez le fichier a envoyer :
  |           </f:facet>
  |           <input class="file" type="file" name="suiviXLS"/>
  |           <input name="nomProjet" type="hidden" 
value="#{var['nomProjet']}"/>
  |           <input name="tokenId" type="hidden" value="#{token.getId}"/>      
      
  |         </jbpm:datacell>
  |                 
  |             <jbpm:datacell>
  |               <f:facet name="header">
  |             <h:outputText value="Actions"/>
  |           </f:facet>
  |           <button class="button" type="submit">Envoyer</button>          
  |         </jbpm:datacell>                
  | 
  |      </jbpm:dataform>       
  |    </form>  
  |   
  |   <br />
  |   
  |   <jbpm:dataform>   
  |     <f:facet name="header">
  |       <h:outputText value="Fichier distant modifie"/>
  |     </f:facet>
  |         
  |     <jbpm:datacell>
  |       <f:facet name="header">
  |         <h:outputText value="Actions"/>
  |       </f:facet>
  |       <!-- TASKFORM BUTTONS -->
  |       <tf:transitionButton transition="OK" value="Faire suivre le fichier 
au DP"/>
  |     </jbpm:datacell>            
  |   </jbpm:dataform>
  |   
  | </ui:component>
  | 
  | </html>
  | 

and here is my servlet :

import java.io.File;
  | import java.io.IOException;
  | import java.io.PrintWriter;
  | import java.util.Iterator;
  | import java.util.List;
  | 
  | import javax.servlet.http.HttpServlet;
  | import javax.servlet.http.HttpServletRequest;
  | import javax.servlet.http.HttpServletResponse;
  | 
  | import org.apache.commons.fileupload.FileItem;
  | import org.apache.commons.fileupload.FileItemFactory;
  | import org.apache.commons.fileupload.servlet.ServletFileUpload;
  | import org.apache.commons.fileupload.disk.DiskFileItemFactory;
  | 
  | public class UploadSuivi extends HttpServlet {
  | 
  |     private static final long serialVersionUID = -7214369336993351418L;
  |     
  |         private FileItem fichier;
  |     private String nomProjet;
  |     private String tokenId;
  |     
  |     public void service(HttpServletRequest request, HttpServletResponse 
response) throws IOException {
  |             
  |             if (!ServletFileUpload.isMultipartContent(request)) {           
        
  |                     throw new RuntimeException("Not a multipart request");
  |             }
  | 
  |             try {
  |                     // Create a factory for disk-based file items
  |                     FileItemFactory factory = new DiskFileItemFactory();
  | 
  |                     // Create a new file upload handler
  |                     ServletFileUpload upload = new 
ServletFileUpload(factory);
  | 
  |                     // Parse the request
  |                     List list = upload.parseRequest(request);
  |                                             
  |                     // Process the uploaded items
  |                     
  |                     for (int i=0; i<list.size(); i++) {
  |                         FileItem item = (FileItem) list.get(i);
  | 
  |                         if (item.getFieldName().compareTo("suiviXLS") == 0) 
{
  |                             fichier = item;
  |                         }
  | 
  |                         if (item.getFieldName().compareTo("nomProjet") == 
0) {
  |                             nomProjet=item.getString();                     
        
  |                         }
  |                         
  |                         if (item.getFieldName().compareTo("tokenId") == 0) {
  |                             tokenId=item.getString();                       
        
  |                         }       
  |                     }
  | 
  |                     // save the file
  |                     File uploadedFile = new File("C:/"+nomProjet+".xls"); 
  |                     fichier.write(uploadedFile);                            
  |                         
  |                     // signal the task
  |                     
  |                     // redirtection vers la page des taches
  |                         
response.sendRedirect(response.encodeRedirectURL("search/tasks.jsf"));          
                                                                            
  |             } catch (Exception e) {       
  |             throw new RuntimeException("Exception quelque part...", e);
  |         }
  |     }               
  | }
  | 

The code is ugly, I know, it's because it's not finished at all...
At the end of the execution I got my file, my project name variable in 
nomProjet and an empty string in tokenId (so it goes in the if statement and 
does the getString on the third item).


I understand that my token.getId should work from this part of documentation 
(section 18.3, I can copy paste it: it's really short) and the link given to EL:
For some of the delegations, there is support for a JSP/JSF EL like expression 
language. In actions, assignments and decision conditions, you can write an 
expression like e.g. expression="#{myVar.handler[assignments].assign}"
  | 
  | The basics of this expression language can be found in the J2EE tutorial.
  | 
  | The jPDL expression language is similar to the JSF expression language. 
Meaning that jPDL EL is based on JSP EL, but it uses #{...} notation and that 
it includes support for method binding.
  | 
  | Depending on the context, the process variables or task instance variables 
can be used as starting variables along with the following implicit objects:
  | 
  |     * taskInstance (org.jbpm.taskmgmt.exe.TaskInstance)
  |     * processInstance (org.jbpm.graph.exe.ProcessInstance)
  |     * processDefinition (org.jbpm.graph.def.ProcessDefinition)
  |     * token (org.jbpm.graph.exe.Token)
  |     * taskMgmtInstance (org.jbpm.taskmgmt.exe.TaskMgmtInstance)
  |     * contextInstance (org.jbpm.context.exe.ContextInstance)

I'm not an expert in all the JSF and EL and even if I didn't find anything to 
help me looking these parts.

I'm using the jBPM 3.2 suite (sorry I forgot to mention that) and GPD 3.0.13 to 
deploy and have the process definition and forms skeleton (I write a lot by 
myself after... I'm waiting the new GPD (seems great) to leave the alpha and 
beta states before using it :) ).

If you want to know everything :
- I customize the example web application to fit my needs by removing some 
administration parts, adding servlets and others things I need,
- I begin to use the new admin console from CVS (I think I will somehow merge 
the two at the end),
- my shoes size is 10 and... ok I stop here :)

Hope it helps...

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

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

Reply via email to