Javascript Alfresco-在自定义工作流中将任务分配给不同的受让人

Javascript Alfresco-在自定义工作流中将任务分配给不同的受让人,javascript,java,workflow,alfresco,business-process-management,Javascript,Java,Workflow,Alfresco,Business Process Management,我正在尝试创建自定义工作流,在工作流开始时,工作流发起人可以选择3个用户来执行工作流中的不同任务(在本例中,一个作者、一个审阅者和一个审批者) 为此,我在工作流模型中将这些角色定义为启动任务的一个方面,然后尝试将这些用户分配到工作流中的流程变量,并通过activiti:assignment任务将任务分配给他们。在我的共享配置自定义中,我将角色定义为权限控件。我正在遵循中描述的流程: 工作流启动时没有问题,Alfresco允许我选择用户,但任务分配不起作用。在工作流历史记录中,它表示任务已分配给

我正在尝试创建自定义工作流,在工作流开始时,工作流发起人可以选择3个用户来执行工作流中的不同任务(在本例中,一个作者、一个审阅者和一个审批者)

为此,我在工作流模型中将这些角色定义为启动任务的一个方面,然后尝试将这些用户分配到工作流中的流程变量,并通过activiti:assignment任务将任务分配给他们。在我的共享配置自定义中,我将角色定义为权限控件。我正在遵循中描述的流程:

工作流启动时没有问题,Alfresco允许我选择用户,但任务分配不起作用。在工作流历史记录中,它表示任务已分配给“$(author.properties.userName)”,这是我在bpmn文件中使用的表达式,但它没有获取author变量的用户名

我在下面附上了我的文件的链接。如果他们有问题,或者有更好的方法来实现这个目标,请让我知道

非常感谢

马库斯

bpmn文件:

workflowModel文件:

我将在评论中发布共享配置自定义

execution.setVariable('author', task.getVariable('vorwf_author'));
您正在设置一个变量
author
和 您正试图使用
$(author.properties.userName)

此处的
author
不是对象,因此您无法找到用户名。如果您想这样做,那么您必须创建用户对象

示例:输入您的用户名

 var author=people.getPerson("user_name");
 var authVar=author.properties.userName;
设置变量

execution.setVariable('my_author',authVar);
您可以使用
${my_author}

或 如果您通过此
task.getVariable('vorwf\u author')获取作者的用户名

然后您可以简单地使用
${author}

您正在设置一个变量
author
和 您正试图使用
$(author.properties.userName)

此处的
author
不是对象,因此您无法找到用户名。如果您想这样做,那么您必须创建用户对象

示例:输入您的用户名

 var author=people.getPerson("user_name");
 var authVar=author.properties.userName;
设置变量

execution.setVariable('my_author',authVar);
您可以使用
${my_author}

或 如果您通过此
task.getVariable('vorwf\u author')获取作者的用户名


然后你可以简单地使用
${author}

我已经设法弄明白了如何做到这一点!首先,我将工作流中的每个“角色”定义为workflowModel.xml文件中的一个方面。以下是其中一个角色的示例,作者:

<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>

假的
假的
cm:人
真的
假的
然后,在定义用户角色的任务定义中将这些角色设置为必需的方面:

 <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>

bpm:startTask
d:文本
拒绝
批准
拒绝
作者
vorwf:审阅者
vorwf:批准人
最后,我可以将任务分配给bpmn文件中的用户,而无需设置任何其他变量,例如:

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

我已经想好了怎么做!首先,我将工作流中的每个“角色”定义为workflowModel.xml文件中的一个方面。以下是其中一个角色的示例,作者:

<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>

假的
假的
cm:人
真的
假的
然后,在定义用户角色的任务定义中将这些角色设置为必需的方面:

 <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>

bpm:startTask
d:文本
拒绝
批准
拒绝
作者
vorwf:审阅者
vorwf:批准人
最后,我可以将任务分配给bpmn文件中的用户,而无需设置任何其他变量,例如:

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


share config custom:您是否尝试查看内置Alfresco工作流的BPMN文件,以了解其工作原理?task.getVariable('vorwf_author')您正在尝试使用此命令获取author。你能解释一下这行返回用户名吗???@Gagravarr不幸的是,我不认为有一个工作流示例可以让你选择多个受让人。所有工作流都使用bpm:assignee,它仅在任务中有一个assignee时才起作用…共享配置自定义:您是否尝试查看内置Alfresco工作流的BPMN文件,以了解它是如何完成的?task.getVariable('vorwf_author')您正在尝试使用此命令获取author。你能解释一下这行返回用户名吗???@Gagravarr不幸的是,我不认为有一个工作流示例可以让你选择多个受让人。所有工作流都使用bpm:assignee,它仅在任务中有一个assignee时才起作用……感谢您的回答,我认为您是对的,问题是author变量没有userName属性。但是,我正在努力实现您建议的解决方案,因为我不能简单地在工作流代码中输入“用户名”。我需要一个