1 Reply Latest reply on Nov 14, 2006 5:30 AM by Tom Baeyens

    Changes and new tags for the task forms designer

    David Lloyd Master

      EL variables

      Task forms should use the following EL variables to access form data:

      #{comment}

      This variable will be checked for a new comment to add to a task instance when a transition or save action is taken.

      #{var['name']}

      This is where all the process variables will be kept.

      #{taskName}

      Read-only variable; name of the current task.

      Layout changes

      Currently the task forms are formatted something like this:

      <!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"
       ...>
      <head>
       <title>userForm</title>
       <link rel="stylesheet" type="text/css" href="../css/jbpm.css" />
      </head>
      <body>
      <ui:composition>
      <h:form id="taskform">
      <h:inputHidden id="taskInstanceId" value="#{taskInstanceBean.id}" />
      ...content here...
      </h:form>
      </ui:composition>
      
      </body>
      </html>
      


      This should be simplified to exclude the head, body, ui:composition, h:form, and h:inputHidden tags, to look like this:

      <!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:tf="http://jbpm.org/jsf/tf"
       xmlns:jbpm="http://jbpm.org/jsf">
      
      ...content here...
      
      </html>
      


      The "nuts and bolts" tags will be generated by the task form renderer.

      New tags

      I'm specifying a prefix of "tf" for tags that are specific to task forms, assuming you will have the following attribute in your html element:
      xmlns:tf="http://jbpm.org/jsf/tf"


      Here's the tf tags:

      <tf:transitionButton>


      Save the task form and take a transition. Accepts all attributes that "h:commandButton" does, with the exception of the "action" attribute. Also, there is a new optional attribute called "to", whose value is the name of the transition to take. If no value is given, take the only transition available.

      <tf:saveButton>


      Save the task form, but do not take a transition. Accepts all attributes that "h:commandButton" does, with the exception of the "action" attribute.

      <tf:cancelButton>


      Cancel the task form without saving anything. The user doesn't really have to click on this button to cancel though; (s)he can just choose a different menu item. Accepts all attributes that "h:commandButton" does, with the exception of the "action" attribute.

      This tag is not really a tf tag but it's one that you can use nonetheless:

      <jbpm:dataform> / <jbpm:datacell>


      This tag allows a nice way to lay out form data. Definitely not required to use it, especially if the form is used outside of the console. Here's an example of a task form that might use these tags:

      <jbpm:dataform>
       <f:facet name="header">
       <h:outputText value="#{taskName}"/>
       </f:facet>
       <jbpm:datacell>
       <f:facet name="header">
       <h:outputText value="Item"/>
       </f:facet>
       <h:inputText value="#{var['item']}"/>
       </jbpm:datacell>
       <jbpm:datacell>
       <f:facet name="header">
       <h:outputText value="Quantity"/>
       </f:facet>
       <h:inputText value="#{var['quantity']}"/>
       </jbpm:datacell>
       <jbpm:datacell>
       <f:facet name="header">
       <h:outputText value="Address"/>
       </f:facet>
       <h:inputText value="#{var['address']}"/>
       </jbpm:datacell>
       <jbpm:datacell>
       <f:facet name="header">
       <h:outputText value="Actions"/>
       </f:facet>
       <tf:transitionButton value="Save and Close"/>
       <tf:saveButton value="Save"/>
       <tf:cancelButton value="Cancel"/>
       </jbpm:datacell>
      </jbpm:dataform>


      Let me know if something doesn't make sense, or if you have more ideas to simplify task forms.