AnsweredAssumed Answered

Activiti workflow: Custom param not rendered despite conf

Question asked by nicolasraoul on Jun 5, 2012
Latest reply on May 20, 2013 by craig.michael.nelson
Hello,

I am trying to create an Activiti workflow with a custom property "purchaseDenomination".
Most of it is adapted from Jeff Potts' Activiti tutorial, following all steps of Part 1.

PROBLEM: No input is shown for my custom property on the "Start Workflow" page, despite configuring it to appear in tomcat/shared/classes/alfresco/web-extension/share-config-custom.xml :

  <config evaluator="string-compare" condition="activiti$process3">
    <forms>
      <form>
        <field-visibility>
          <show id="bpm:workflowDescription" />
          <show id="packageItems" />
          <show id="nicowf:purchaseDenomination" />
          <show id="transitions" />
        </field-visibility>
        <appearance>
          <set id="" appearance="title" label-id="workflow.set.general" />
          <set id="items" appearance="title" label-id="workflow.set.items" />
          <set id="other" appearance="title" label-id="workflow.set.other" />
          <set id="response" appearance="title" label-id="workflow.set.response" />
          <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="packageItems" set="items" />
          <field id="nicowf:purchaseDenomination" set="other" />
          <field id="transitions" set="response" />
        </appearance>
      </form>
    </forms>
  </config>

Here is how it is rendered:

[img]http://img685.imageshack.us/img685/4619/process3start.png[/img]

Why is the purchaseDenomination field not appearing?

For reference, my tomcat/shared/classes/alfresco/extension/model/nico1WorkflowModel.xml :

<?xml version="1.0" encoding="UTF-8"?>
<!– Definition of new Model –>
<model name="nicowf:workflowmodel"
        xmlns="http://www.alfresco.org/model/dictionary/1.0">

        <!– Optional meta-data about the model –>
        <description>nico1 Workflow Model</description>
        <author>Nicolas Raoul</author>
        <version>1.0</version>

        <!– Imports are required to allow references to definitions in other models –>
        <imports>
                <import uri="http://www.alfresco.org/model/dictionary/1.0"
                        prefix="d" />
                <import uri="http://www.alfresco.org/model/bpm/1.0"
                        prefix="bpm" />
        </imports>

        <!– Introduction of new namespaces defined by this model –>
        <namespaces>
                <namespace uri="http://aegif.jp/model/workflow/1.0"
                        prefix="nicowf" />
        </namespaces>

        <types>
                <type name="nicowf:submitPurchaseTask">
                        <parent>bpm:startTask</parent>
                        <properties>
                                <property name="nicowf:purchaseDenomination">
                                        <type>d:text</type>
                                        <mandatory>true</mandatory>
                                        <multiple>false</multiple>
                                </property>
                        </properties>
                </type>
        </types>
</model>

tomcat/shared/classes/alfresco/extension/workflows/process3.bpmn :

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://activiti.org/bpmn20">
  <process id="process3" name="process3 (Pooled Review And Approve Activiti Process)">
    <startEvent id="start" activiti:formKey="nicowf:submitPurchaseTask"></startEvent>
    <userTask id="reviewTask" name="Review Task" activiti:candidateGroups="${bpm_groupAssignee.properties.authorityName}" activiti:formKey="wf:activitiReviewTask">
      <extensionElements>
        <activiti:taskListener event="create" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
          <activiti:field name="script">
            <activiti:string>if (typeof bpm_workflowDueDate != 'undefined') task.setVariable('bpm_dueDate', bpm_workflowDueDate);
                        if (typeof bpm_workflowPriority != 'undefined') task.priority = bpm_workflowPriority;</activiti:string>
          </activiti:field>
        </activiti:taskListener>
        <activiti:taskListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
          <activiti:field name="script">
            <activiti:string>execution.setVariable('wf_reviewOutcome', task.getVariable('wf_reviewOutcome'));</activiti:string>
          </activiti:field>
        </activiti:taskListener>
      </extensionElements>
    </userTask>
    <exclusiveGateway id="reviewDecision" name="Review Decision"></exclusiveGateway>
    <userTask id="approved" name="Document Approved" activiti:assignee="${initiator.properties.userName}" activiti:formKey="wf:approvedTask">
      <documentation>
                The document was reviewed and approved.
            </documentation>
      <extensionElements>
        <activiti:taskListener event="create" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
          <activiti:field name="script">
            <activiti:string>if (typeof bpm_workflowDueDate != 'undefined') task.setVariableLocal('bpm_dueDate', bpm_workflowDueDate);
                        if (typeof bpm_workflowPriority != 'undefined') task.priority = bpm_workflowPriority;</activiti:string>
          </activiti:field>
        </activiti:taskListener>
        <activiti:taskListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
          <activiti:field name="script">
            <activiti:string>execution.setVariable('bpm_assignee', person);</activiti:string>
          </activiti:field>
        </activiti:taskListener>
      </extensionElements>
    </userTask>
    <userTask id="rejected" name="Document Rejected" activiti:assignee="${initiator.properties.userName}" activiti:formKey="wf:rejectedTask">
      <documentation>
                The document was reviewed and rejected.
            </documentation>
      <extensionElements>
        <activiti:taskListener event="create" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
          <activiti:field name="script">
            <activiti:string>if (typeof bpm_workflowDueDate != 'undefined') task.setVariableLocal('bpm_dueDate', bpm_workflowDueDate);
                        if (typeof bpm_workflowPriority != 'undefined') task.priority = bpm_workflowPriority;</activiti:string>
          </activiti:field>
        </activiti:taskListener>
        <activiti:taskListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
          <activiti:field name="script">
            <activiti:string>execution.setVariable('bpm_assignee', person);</activiti:string>
          </activiti:field>
        </activiti:taskListener>
      </extensionElements>
    </userTask>
    <endEvent id="end"></endEvent>
    <sequenceFlow id="flow1" name="" sourceRef="start" targetRef="reviewTask"></sequenceFlow>
    <sequenceFlow id="flow2" name="" sourceRef="reviewTask" targetRef="reviewDecision"></sequenceFlow>
    <sequenceFlow id="flow3" name="" sourceRef="reviewDecision" targetRef="approved">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${wf_reviewOutcome == 'Approve'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="flow4" name="" sourceRef="reviewDecision" targetRef="rejected"></sequenceFlow>
    <sequenceFlow id="flow5" name="" sourceRef="approved" targetRef="end"></sequenceFlow>
    <sequenceFlow id="flow6" name="" sourceRef="rejected" targetRef="end"></sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_process3">
    <bpmndi:BPMNPlane bpmnElement="process3" id="BPMNPlane_process3">
      <bpmndi:BPMNShape bpmnElement="start" id="BPMNShape_start">
        <omgdc:Bounds height="35" width="35" x="30" y="200"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="reviewTask" id="BPMNShape_reviewTask">
        <omgdc:Bounds height="55" width="105" x="105" y="190"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="reviewDecision" id="BPMNShape_reviewDecision">
        <omgdc:Bounds height="40" width="40" x="250" y="197"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="approved" id="BPMNShape_approved">
        <omgdc:Bounds height="55" width="105" x="330" y="137"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="rejected" id="BPMNShape_rejected">
        <omgdc:Bounds height="55" width="105" x="330" y="244"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="end" id="BPMNShape_end">
        <omgdc:Bounds height="35" width="35" x="490" y="200"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
        <omgdi:waypoint x="65" y="217"></omgdi:waypoint>
        <omgdi:waypoint x="105" y="217"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
        <omgdi:waypoint x="210" y="217"></omgdi:waypoint>
        <omgdi:waypoint x="250" y="217"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow3" id="BPMNEdge_flow3">
        <omgdi:waypoint x="270" y="197"></omgdi:waypoint>
        <omgdi:waypoint x="270" y="164"></omgdi:waypoint>
        <omgdi:waypoint x="330" y="164"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow4" id="BPMNEdge_flow4">
        <omgdi:waypoint x="270" y="237"></omgdi:waypoint>
        <omgdi:waypoint x="270" y="271"></omgdi:waypoint>
        <omgdi:waypoint x="330" y="271"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow5" id="BPMNEdge_flow5">
        <omgdi:waypoint x="435" y="164"></omgdi:waypoint>
        <omgdi:waypoint x="507" y="164"></omgdi:waypoint>
        <omgdi:waypoint x="507" y="200"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow6" id="BPMNEdge_flow6">
        <omgdi:waypoint x="435" y="271"></omgdi:waypoint>
        <omgdi:waypoint x="507" y="271"></omgdi:waypoint>
        <omgdi:waypoint x="507" y="235"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

tomcat/shared/classes/alfresco/extension/nico1-workflow-context.xml :

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
    <bean id="nico1.workflowBootstrap" parent="workflowDeployer">
                <property name="workflowDefinitions">
                        <list>
                                <props>
                                        <prop key="engineId">activiti</prop>
                                        <prop key="location">alfresco/extension/workflows/process3.bpmn</prop>
                                        <prop key="mimetype">text/xml</prop>
                                        <prop key="redeploy">false</prop>
                                </props>
                        </list>
                </property>
                <property name="models">
                        <list>
                                <value>alfresco/extension/model/nico1WorkflowModel.xml</value>
                        </list>
                </property>
                <property name="labels">
                        <list>
                                <value>alfresco.messages.nicoWorkflow</value>
                        </list>
                </property>
        </bean>
</beans>

tomcat/shared/classes/alfresco/messages/nicoWorkflow.properties :

process3.workflow.title=Process 3
process3.workflow.description=process3 (Pooled Review And Approve Activiti Process)
nicowf_workflowmodel.type.nicowf_submitPurchaseTask.title=Start process3
nicowf_workflowmodel.type.nicowf_submitPurchaseTask.description=Submit a workflow that blabla3

I verified many times… did I miss something?

Thank you very much!

Outcomes