using forms in share
DESCRIPTION
The "Using Forms in Share" session follows on from the "Forms Service Deep Dive" session. We will discuss each area of Share that uses Forms and demonstrate how each of those areas (Metadata, Datalists, Workflow & Advanced Search) can be configured and customized. The session will also show how to integrate forms in your own custom applications and/or pages.TRANSCRIPT
1
Alfresco Forms Part 1: Forms in Share
Gavin CornwellServices Team Lead, Alfresco
twitter: @gcornwell
2
Agenda
• Where Forms Are Used• Configuration• Demo
• Metadata• Advanced Search• Workflow• Datalists
• Q & A
3
Where Forms Are Used
Metadata
4
Where Forms Are Used
Advanced Search
5
Where Forms Are Used
Workflow
6
Where Forms Are Used
Datalists
7
Configuration
<config> <forms> <default-controls> ... </default-controls> <constraint-handlers> ... </constraint-handlers> <dependencies> ... </dependencies> </forms></config>
Global Defaults – form-config.xml
8
Configuration
<default-controls> <type name="text" template="/org.../textfield.ftl" /> <type name=”datetime" template="/org.../date.ftl”> <control-param name="showTime"> true </control-param>
</type> ...</default-controls>
Default Controls
9
Configuration
<constraint-handlers> <constraint type="MANDATORY" validation-handler="...mandatory" event="keyup" /> <constraint type="NUMBER" validation-handler=”...number" event="keyup" /> ...</constraint-handlers>
Default Constraint Handlers
10
Configuration
<dependencies> <css src=” /accordion/accordion.css" /> <js src=“/accordion/accordion-min.js" /> ...</dependencies>
Dependencies
11
Configuration
<config evaluator=“” condition=“”> <forms> <form [id=“”]> <field-visibility> ... </field-visibility> <edit|create|view-form template=“” /> <appearance> ... </appearance> </form> </forms></config>
Form – share-form-config.xml
12
Configuration
• Creating nodes <config evaluator="model-type" condition="cm:content">
• Editing nodes <config evaluator="node-type" condition="cm:content">
• Starting workflow <config evaluator="string-compare" condition="jbpm$wf:adhoc">
• Editing tasks <config evaluator="task-type" condition="wf:adhocTask">
Evaluators
13
Configuration
<show id="cm:name" />
<hide id=“cm:author” />
<show id="cm:created" for-mode="view" />
Visibility
14
Configuration
<field id="cm:title” label=“” label-id=“” description=“” description-id=“” help=“” help-id=“” set=“” read-only=“” mandatory=“”> <control template="/.../textfield.ftl”> <control-param ... /> </control> <constraint-handlers> <constraint ... /> </constraint-handlers></field>
Field Appearance
15
Configuration
<set id=“info” label=“” label-id=“” template=“” parent=“” appearance=“|fieldset|panel|bordered-panel|title|whitespace” />
Set Appearance
16
Demos
• Metadata• Advanced Search• Workflow• Datalists
17
Q & A
18
Learn MoreAlfresco Forms Part 2: Deep Dive (tomorrow)
wiki.alfresco.com/wiki/Formsblogs.alfresco.com/wp/gavinc/
19
Appendix – Demo Config - cm:content<config evaluator="node-type" condition="cm:content"> <forms> <form> <field-visibility> <hide id="cm:author" /> </field-visibility> <edit-form template="/devcon/2-column-edit-form.ftl" /> <appearance> <set id="dublin-core" label-id="set.label.dublincore” appearance="panel" />
<field id="cm:publisher" set="dublin-core" /> <field id="cm:contributor" set="dublin-core" /> <field id="cm:type" set="dublin-core" /> <field id="cm:identifier" set="dublin-core" /> <field id="cm:dcsource" set="dublin-core" /> <field id="cm:coverage" set="dublin-core" /> <field id="cm:rights" set="dublin-core" /> <field id="cm:subject" set="dublin-core" /> </appearance> </form> </forms></config>
20
Appendix – Demo Config - Model<type name="devcon:session"> <title>Devcon Session</title> <parent>cm:content</parent> <properties> <property name="devcon:code"> <title>Code</title> <description>Unique code for the session</description> <type>d:text</type> <mandatory>true</mandatory> </property> <property name="devcon:duration"> <title>Duration</title> <description>Session duration in minutes</description> <type>d:int</type> <mandatory>true</mandatory> </property> <property name="devcon:when"> <title>When</title> <description>The date and time of the session</description> <type>d:datetime</type> </property> <property name="devcon:rating"> <title>Rating</title> <description>The feedback rating of the session</description> <type>d:int</type> </property> <property name="devcon:level"> <title>Level</title> <description>Difficulty level of the session</description> <type>d:text</type> <mandatory>true</mandatory> <constraints> <constraint ref="devcon:level" /> </constraints> </property> <property name="devcon:abstract"> <title>Abstract</title> <description>Short abstract describing the session</description> <type>d:text</type> </property> </properties>
<associations> <association name="devcon:presenter"> <title>Presenter</title> <source> <mandatory>false</mandatory> <many>true</many> </source> <target> <class>cm:person</class> <mandatory>true</mandatory> <many>false</many> </target> </association> <association name="devcon:prerequisites"> <title>Prerequisites</title> <source> <mandatory>false</mandatory> <many>true</many> </source> <target> <class>devcon:session</class> <mandatory>false</mandatory> <many>true</many> </target> </association> </associations> <mandatory-aspects> <aspect>devcon:approvable</aspect> </mandatory-aspects></type>
21
Appendix – Demo Config – Custom Type<config evaluator="node-type" condition="devcon:session"> <forms> <form> <field-visibility> <show id="devcon:code" /> <show id="cm:name" /> <show id="devcon:abstract" /> <show id="devcon:presenter" /> <show id="devcon:when" /> <show id="devcon:duration" /> <show id="devcon:level" /> <show id="devcon:prerequisites" /> <show id="devcon:approved" /> <show id="devcon:rating" /> </field-visibility> <appearance> <field id="devcon:abstract"> <control template="/org/alfresco/components/form/controls/richtext.ftl" /> </field> <field id="devcon:prerequisites"> <control> <control-param name="startLocation">{doclib}</control-param> </control> </field> </appearance> </form> <form id="doclib-simple-metadata"> <field-visibility> <show id="devcon:code" /> <show id="cm:name" /> <show id="devcon:abstract" /> <show id="devcon:when" /> </field-visibility> <edit-form template="../documentlibrary/forms/doclib-simple-metadata.ftl" /> </form> </forms></config>
22
Appendix – Demo Config - Search<config evaluator="model-type" condition="cm:content"> <forms> <form id="search"> <field-visibility> <hide id=“mimetype” /> <show id="cm:creator" /> </field-visibility> <appearance> <field id="cm:creator"> <control> <control-param name="forceEditable">true</control-param> </control> </field> </appearance> </form> </forms></config>
23
Appendix – Demo Config – Search cont…<config evaluator="string-compare" condition="AdvancedSearch"> <advanced-search> <forms> <form labelId="search.form.label.devcon" descriptionId="search.form.desc.devcon">devcon:session</form> </forms> </advanced-search></config>
<config evaluator="model-type" condition="devcon:session"> <forms> <form id="search"> <field-visibility> <show id="cm:name" /> <show id="devcon:code" /> <show id="devcon:when" /> <show id="devcon:duration" /> <show id="devcon:level" /> </field-visibility> <appearance> <field id="devcon:when"> <control template="/org/alfresco/components/form/controls/daterange.ftl" /> </field> <field id="devcon:duration"> <control template="/org/alfresco/components/form/controls/numberrange.ftl" /> </field> <field id="devcon:level"> <control template="/org/alfresco/components/form/controls/selectmany.ftl" /> </field> </appearance> </form> </forms></config>
24
Appendix – Demo Config – Model<types> <type name="dw:submitDevconReviewTask"> <parent>wf:submitReviewTask</parent> <properties> <property name="dw:venue"> <type>d:text</type> <default>Both</default> <constraints> <constraint type="LIST"> <parameter name="allowedValues"> <list> <value>Both</value> <value>Paris</value> <value>New York</value> </list> </parameter> </constraint> </constraints> </property> </properties> </type></types>
25
Appendix – Demo Config – Start Workflow<config evaluator="string-compare" condition="jbpm$dw:devconapproval"> <forms> <form> <field-visibility> <show id="bpm:workflowDescription" /> <show id="bpm:workflowDueDate" /> <show id="bpm:workflowPriority" /> <show id="dw:venue" /> <show id="bpm:assignee" /> <show id="packageItems" /> </field-visibility> <appearance> <set id="" appearance="title" label-id="workflow.set.general" /> <set id="info" appearance="" template="/org/alfresco/components/form/2-column-set.ftl" /> <set id="assignee" appearance="title" label-id="workflow.set.assignee" /> <set id="items" appearance="title" label-id="workflow.set.items" /> <field id="bpm:workflowDescription" label-id="workflow.field.message"> <control template="/org/alfresco/components/form/controls/textarea.ftl"> <control-param name="style">width: 95%</control-param> </control> </field> <field id="dw:venue" set="info" /> <field id="bpm:workflowDueDate" label-id="workflow.field.due" set="info" /> <field id="bpm:workflowPriority" label-id="workflow.field.priority" set="info"> <control template="/org/alfresco/components/form/controls/workflow/priority.ftl" /> </field> <field id="bpm:assignee" label-id="workflow.field.reviewer" set="assignee" /> <field id="packageItems" set="items" /> </appearance> </form> </forms></config>
26
Appendix – Demo Config – Workflow<config evaluator="task-type" condition="dw:submitDevconReviewTask"> <forms> <form id="workflow-details"> <field-visibility> <show id="dw:venue" /> <show id="packageItems" /> </field-visibility> <appearance> <set id="" appearance="title" label-id="workflow.set.workflow.more_info" /> <set id="items" appearance="title" label-id="workflow.set.items" /> <field id="packageItems" set="items" /> </appearance> </form> <form> <field-visibility> <show id="message" /> <show id="taskOwner" /> <show id="bpm:workflowPriority" /> <show id="bpm:workflowDueDate" /> <show id="bpm:taskId" /> <show id="dw:venue" /> <show id="bpm:status" /> <show id="packageItems" /> </field-visibility> <appearance> <set id="" appearance="title" label-id="workflow.set.task.info" /> <set id="info" appearance="" template="/org/alfresco/components/form/3-column-set.ftl" /> <set id="progress" appearance="title" label-id="workflow.set.task.progress" /> <set id="items" appearance="title" label-id="workflow.set.items" /> <field id="message"> <control template="/org/alfresco/components/form/controls/info.ftl" /> </field> <field id="taskOwner" set="info" /> <field id="dw:venue" set="info" /> <field id="bpm:taskId" set="info"> <control template="/org/alfresco/components/form/controls/info.ftl" /> </field> <field id="bpm:workflowPriority" label-id="workflow.field.priority" set="info" read-only="true"> <control template="/org/alfresco/components/form/controls/workflow/priority.ftl" /> </field> <field id="bpm:workflowDueDate" set="info" label-id="workflow.field.due"> <control template="/org/alfresco/components/form/controls/info.ftl" /> </field> <field id="bpm:status" set="progress" /> <field id="packageItems" set="items" /> </appearance> </form> </forms></config>
27
Appendix – Demo Config – Datalist - Model<type name="devcon:sessionFeedbackList"> <title>Devcon Session Feedback</title> <description>A list of feedback from attendees on the quality of the sessions.</description> <parent>dl:dataListItem</parent> <properties> <property name="devcon:attendeeFirstName"> <title>Attendee First Name</title> <type>d:text</type> <mandatory>true</mandatory> </property> <property name="devcon:attendeeLastName"> <title>Attendee Last Name</title> <type>d:text</type> <mandatory>false</mandatory> </property> <property name="devcon:feedback"> <title>Feedback</title> <type>d:text</type> <mandatory>true</mandatory> </property> <property name="devcon:score"> <title>Score</title> <type>d:int</type> <constraints> <constraint ref="devcon:score" /> </constraints> </property> </properties></type>
28
Appendix – Demo Config – Datalist - Create<config evaluator="model-type" condition="devcon:sessionFeedbackList"> <forms> <form> <field-visibility> <show id="devcon:attendeeFirstName" /> <show id="devcon:attendeeLastName" /> <show id="devcon:feedback" /> <show id="devcon:score" /> </field-visibility> <create-form template="../data-lists/forms/dataitem.ftl" /> <appearance> <field id="devcon:feedback"> <control template="/org/alfresco/components/form/controls/textarea.ftl"> <control-param name="rows">6</control-param> </control> </field> </appearance> </form> </forms></config>
29
Appendix – Demo Config – Datalist - Edit<config evaluator="node-type" condition="devcon:sessionFeedbackList"> <forms> <form> <field-visibility> <show id="devcon:attendeeFirstName" /> <show id="devcon:attendeeLastName" /> <show id="devcon:feedback" /> <show id="devcon:score" /> </field-visibility> <edit-form template="../data-lists/forms/dataitem.ftl" /> <appearance> <field id="devcon:feedback"> <control template="/org/alfresco/components/form/controls/textarea.ftl"> <control-param name="rows">6</control-param> </control> </field> </appearance> </form> </forms></config>
30
Working Example
• The working example will be made available in the next few weeks on my blog at http://blogs.alfresco.com/wp/gavinc
• In the meantime have a look at the FDK for more examples