【问题标题】:how to get user who completed user task in camunda如何获取在camunda中完成用户任务的用户
【发布时间】:2021-12-15 13:26:42
【问题描述】:

我想获取在 camunda 进程中完成用户任务的用户的用户名。

例如考虑一个只有 2 个步骤的 BMPN,第一个是用户任务,第二个是外部任务。如果用户完成第一个用户任务,则调用此 BPMN,那么我应该能够在第二个 externalTask​​ 中获取其用户名。

在用户任务完成后,我没有发现任何在 camunda 中设置的流程变量。

【问题讨论】:

    标签: bpmn camunda


    【解决方案1】:

    在 Camunda 中完成用户任务的用户可以使用任务监听器进行存储。要进行此设置:

    1. 选择您希望记录数据的用户任务

    2. 在属性面板中,转到“侦听器”选项卡,然后单击“任务侦听器”部分中的 +

    3. 将“事件类型”设置为“完成”

    4. 将“侦听器类型”设置为“表达式”

    5. 输入表达式:

       ${task.execution.setVariable('taskCompletedBy', task.assignee)}
      

    当用户任务完成时,任务监听器表达式将被执行。该表达式从task.assignee 获取用户名,然后在执行范围task.execution 上使用setVariable() 函数将其存储在变量中。由于变量存储在执行范围内,因此它可用于流程的其余部分。然后,您可以在以后的用户/服务任务中将该变量与任何其他变量一起使用。

    【讨论】:

    • 虽然这是真的,但让我补充一下:Camunda 不会强迫您在完成任务之前分配或声明任务(如果您使用自定义任务列表或其余 api)。但是:如果您有安全范围(例如 Spring Security),您可以查询登录用户并将其存储为任务受理人。
    猜你喜欢
    • 2022-12-21
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 2021-03-24
    • 2015-03-21
    • 1970-01-01
    • 2020-01-14
    • 2021-09-30
    相关资源
    最近更新 更多