First use the 'grails install-plugin' goal and install the plugin sources in your application. Secondly, there are two additional grails plugins that should be installed in the application. These are:
Then the Grailsflow-core plugin needs to be configured. There is a list of Spring beans that can/should be configured in your application, if it uses the Grailsflow-core plugin.
The following configuration (common beans) are already configured in GrailsflowCoreGrailsPlugin.groovy and have default values. You can change the default configuration by specifying new beans values.
<!-- Necessary for uploading files. -->
< bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
< property name="maxUploadSize" value="1000000"/>
< /bean>
<!-- Path (folder) for process scripts.
The path is relative to workarea resources path -->
< bean id="processesPath" class="java.lang.String">
< constructor-arg value="processes"/>
< /bean>
<!-- Path (folder) for actions scripts.
The path is relative to workarea resources path -->
< bean id="actionsPath" class="java.lang.String">
< constructor-arg value="actions"/>
< /bean>
< !-- Root path (folder) for stored documents.
The path is relative to workarea resources path -->
< bean id="documentsPath" class="java.lang.String">
< constructor-arg value="documents"/>
< /bean>
<!-- Important for action flow and class should implements ActionFactory interface. -->
< bean id="actionFactory" class="com.jcatalog.grailsflow.actions.GrailsflowActionFactory">
< property name="workareaPathProvider" ref="workareaPathProvider"/>
< property name="actionsPath" ref="actionsPath"/>
< /bean>
<!-- Important for process flow and execution and class should implements ProcessFactory
interface. -->
< bean id="processFactory" class="com.jcatalog.grailsflow.engine.GrailsflowProcessFactory">
< property name="actionFactory" ref="actionFactory"/>
< property name="workareaPathProvider" ref="workareaPathProvider"/>
< property name="processesPath" ref="processesPath"/>
/bean>
<!-- Property is used for paging, defines maximum size for items list. -->
< bean id="maxResultSize" class = "java.lang.Integer">
< constructor-arg> < value> 10< /value> < /constructor-arg>
< /bean>
<!-- Application ID or name of external application: especially important if there are
several applications which share the DB but have Grailsflow-core plugin installed in both
of them. In this case Grailsflow Engine needs to know with which application it
currently works. Can have an empty value! -->
< bean id="appExternalID" class = "java.lang.String">
< constructor-arg value = "grailsflow"/>
< /bean>
<!-- Common configs for worklist providers -->
< bean id="abstractProvider" class="com.jcatalog.grailsflow.worklist.AbstractWorklistProvider" abstract="true"/>
The next configurations are needed for interfaces that you need to provide an implementation for. We provide some out of the box implementation that you can change or you can create your own implementation. They deal with application security implementation, structure of folders, mail libraries, etc..
<!-- Configuration for workareaPathProvider, should implement
WorkareaPathProvider class
The work area is a path were Documents that are uploaded in processes are stored as files.
-->
< bean id="workareaPathProvider" class="com.jcatalog.grailsflow.workarea.FooPathProvider">
< property name="resourcesPath" value="workarea"/>
< property name="resourcesUrl" value="/workarea"/>
< /bean>
<!-- Configuration for worklistProvider, the implementation class should extend
AbstractWorklistProvider class. Important to specify 'parent':
parent="abstractProvider" - is a bean, configured in Grailsflow-core plugin
-->
< bean id="worklistProvider" class="com.jcatalog.grailsflow.worklist.FooWorklistProvider" parent="abstractProvider">
<!-- Configuration for securityHelper class, should implement SecurityHelper
interface. -->
< bean id="securityHelper" class="com.jcatalog.grailsflow.security.FooSecurityHelper" scope="singleton"/>
<!-- Configuration for client Executor, the implementation class should extend
ClientExecutor class. Especially important if you want to use external calls and
asynchronous actions in your application. -->
< bean id="clientExecutor" class="com.jcatalog.grailsflow.client.FooHTTPClientExecutor">
<!-- Configuration for sendMailHelper, should implement
SendMailHelper interface. -->
<bean id="sendMailHelper" class="com.jcatalog.grailsflow.mail.FooMailHelper">
<property name="mailHost" value="neon.scand"/>
<property name="sender" value="info@neon.scand"/>
</bean>
This product is based on Groovy and Grails. (http://www.grails.org)
