Search code examples
javascriptjavaworkflowalfrescobusiness-process-management

Alfresco - assigning tasks to different assignees in custom workflow


I'm trying to create a custom workflow, where at the start of the workflow, the workflow initiator can choose 3 users to perform different tasks in the workflow (in this case, an author, a reviewer, and an approver).

To do this I am defining each of these roles as an aspect of my start task in my workflow model, and then I am trying to assign these users to process variables in the workflow and assign the tasks to them through the activiti:assignee task. In my share-config-custom I am defining the roles as authority controls. I am following the process described in: Multiple assignee controls in Alfresco Workflow form

The workflow starts without a problem, and Alfresco allows me to select users, but the task assignment does not work. In the workflow history, it says that the task is assigned to "$(author.properties.userName)", which is the expression I use in my bpmn file, but it is not picking up the userName of the author variable.

I have attached links to my files below. If there is a problem with them, or if there is a better method of achieving this goal, please let me know!

Many thanks

Marcus

bpmn file: https://drive.google.com/file/d/0By5ruty8M4IleWlKSmdQNUNXR0k/view?usp=sharing

workflowModel file: https://drive.google.com/file/d/0By5ruty8M4IlVEFlSWo2SElNNUE/view?usp=sharing

I will post the share-config-custom in the comments


Solution

  • I've managed to figure out how to do this! Firstly, I define each 'role' in the workflow as an aspect in my workflowModel.xml file. Here is an example for one of the roles, author:

    <aspects>
        <aspect name="vorwf:author">
            <associations>
                <association name="vorwf:author">
                    <source>
                        <mandatory>false</mandatory>
                        <many>false</many>
                    </source>
                    <target>
                        <class>cm:person</class>
                        <mandatory>true</mandatory>
                        <many>false</many>
                    </target>
                </association>  
            </associations>
        </aspect>
    

    I then set these roles as mandatory aspects in the definition of the task where the user roles are defined:

     <type name="vorwf:allocateDocumentProperties">
            <parent>bpm:startTask</parent>
            <properties>
                <property name="vorwf:approveRejectOutcome">
                    <type>d:text</type>
                    <default>Reject</default>
                    <constraints>
                        <constraint type="LIST">
                            <parameter name="allowedValues">
                                <list>
                                    <value>Approve</value>
                                    <value>Reject</value>
                                </list>
                            </parameter>
                        </constraint>
                    </constraints>
                </property>
            </properties>
            <mandatory-aspects>
                <aspect>vorwf:author</aspect>
                <aspect>vorwf:reviewer</aspect>
                <aspect>vorwf:approver</aspect>
            </mandatory-aspects>
        </type>
    

    Finally, I can assign the task to the user in my bpmn file, without having to set any other variables, for example:

    <userTask id="prepareDocument" name="Prepare Document" activiti:assignee="${vorwf_author.properties.userName}" activiti:formKey="vorwf:prepareDocument">