【问题标题】:Alfresco - assigning tasks to different assignees in custom workflowAlfresco - 在自定义工作流程中将任务分配给不同的受让人
【发布时间】:2017-03-14 10:58:52
【问题描述】:

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

为此,我在工作流模型中将这些角色中的每一个定义为我的启动任务的一个方面,然后我尝试将这些用户分配给工作流中的流程变量,并通过 activiti 将任务分配给他们:受让人任务。在我的 share-config-custom 中,我将角色定义为权限控制。我遵循以下描述的过程: Multiple assignee controls in Alfresco Workflow form

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

我在下面附加了指向我的文件的链接。如果他们有问题,或者有更好的方法来实现这个目标,请告诉我!

非常感谢

马库斯

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

工作流模型文件:https://drive.google.com/file/d/0By5ruty8M4IlVEFlSWo2SElNNUE/view?usp=sharing

我会在 cmets 中发布 share-config-custom

【问题讨论】:

  • 您是否尝试过查看内置 Alfresco 工作流程的 BPMN 文件,看看它是如何完成的?
  • task.getVariable('vorwf_author') 您正在尝试通过使用它来获取作者。你能解释一下这一行返回用户名???。
  • @Gagravarr 不幸的是,我认为没有可以选择多个受让人的示例工作流程。所有工作流都使用 bpm:assignee ,它仅在任务中有一个受让人时才有效...

标签: javascript java workflow alfresco business-process-management


【解决方案1】:
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_author') 获取作者的用户名

 execution.setVariable('author', task.getVariable('vorwf_author'));

那么你可以简单地使用${author}

【讨论】:

  • 感谢您的回答,我认为您是对的,问题在于作者变量没有 userName 属性。但是,我正在努力实施您建议的解决方案,因为我不能简单地在工作流代码中输入“user_name”。我需要一种从 vorwf_author 对象中提取用户名的方法,以便每次启动工作流时,我都可以选择为哪个用户分配任务。我认为我的工作流程没有正确处理这个问题
  • 是的,我的意思是不要手动输入用户名,用你的动态值替换它
  • execution.setVariable('author', task.getVariable('vorwf_author'));使用此作者,如果它作为 userName 提供值,因此您可以将其用作 ${author}
  • 这是我最初尝试的方式,但我认为它不会将用户名返回给我。所以实际上我想知道 vorwf_author 是否真的按照我认为的方式设置?也许它实际上与我在工作流表单中选择的用户无关?你认为这是我的文件的问题吗?
  • 您的受让人没有问题。
【解决方案2】:

我已经设法弄清楚如何做到这一点!首先,我将工作流中的每个“角色”定义为我的 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>

然后我将这些角色设置为定义用户角色的任务定义中的强制性方面:

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

最后,我可以在我的 bpmn 文件中将任务分配给用户,而无需设置任何其他变量,例如:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    • 2022-08-22
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    相关资源
    最近更新 更多