Web Tools
The Imixs JSF Tools are based on the Imixs Workflow API and the Imixs JEE Workfow. The components provided by this project can be used in any JSF 1.2 application. We have tested the components with Glassfish Server, Sun JSF Reference implementation and JBoss RichFaces. JBoss RichFaces is a JSF component library which provides a lot of UI Components and Ajax functionality which allows a fast and easy implementation of modern Web applications.
The Imixs JSF Tools provides a set of components which can be used to implement workflow management systems in a JSF based web application. The components are devided by the different functions of a workflow management system. Thus you should use only the components which are helpful for your desired functionality.
The AbstractWorkflowController is the main component in the JSF Tools. This component provides an abstract Backing Bean to be used to implement any business component workflow management functionality. The Component provides methods to create, access and process workitems. One of the main concepts of the Imixs Workflow API is a dynamic Document structure. This means that the component will automatically store and process any data provided by a web form.
<h:inputText value="#{workflowMB.item['txtSubject']}" id="subject_id" />
In this case the attribute "txtSubject" will be managed by the AbstractWorkflowController. The AbstractWorkflowController can be subclassed to implement a backing bean with application specific properties.
The SimpleWorkflowController is a default BackingBean which can be used out of the box. This means you do not need to type one line of java code. simply add the Controler to the faces-config.xml of you JSF web application
.....
<managed-bean>
<managed-bean-name>workflowMB</managed-bean-name>
<managed-bean-class>org.imixs.workflow.jee.jsf.util.SimpleWorkflowController</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
....
As the Imixs Workflow provides a strong security management inside a single process the JSF Tools provide some components to be used to manage the User Login- and Logout mechanism and also an easy access to user specific roles. This simplifies in many cases the implementation of secured web applications. The following example shows how a imput field is hidden for users without the access role 'org.imixs.ACCESSLEVEL.MANAGERACCESS'
<h:inputText value="#{workflowMB.item['txtSubject']}" id="subject_id"
rendered="#{IsUserInRole['org.imixs.ACCESSLEVEL.MANAGERACCESS']}" />
The Converter Component allows the convertion of lists into the java.util.vector class which is typical used by the Imixs Workflow API. In the following example code snippet each row of an Input Textarea is stored into a separate entry of Java Collection.
<h:inputTextarea
converter="imixs.VectorConverter"
value="#{workflowMB.itemList['members']}">
</h:inputTextarea>
This BLOBWorkitemController is an additional BackingBean to be used to save large binary objects into separate workitem. This is an implementation for lazy loading large data objects attached to an existing workitem. The advantage of using a BlobWorkitem is that an application can store large data into a separate worktitem wich is attached to a parent workitem. So in this case the BlobWorkitem can be loaded just in the moment all details of a parent workitem need to be accessible by the user. For example during editing a form. So the BlobWorkitem needs not to be loaded by the workflow manager during each search method which typical access a lot of workitems in the same time. Using a BLOBWorkitemController can optimize the data management. The Bean supports also the management for file attachments. See the examples for more details.