Activiti BPMN - 如何在完成任务的 variables/expression 中传递用户名?

Activiti BPMN - How to pass username in variables/expression who have completed task?

我是 Activiti BPMN 的新手。我在 activiti 中创建流程图。我正在寻找如何将用户名(完成任务的人)传递给 shell 任务参数。这样我就可以获取完成该任务的用户并将其保存在数据库中。

任何帮助将不胜感激。

提前致谢...

通常在 BPM 引擎中,您有一种方法可以将侦听器挂接到此类事件。在 Activiti 中,如果你将它嵌入到你的服务中,你可以添加一个额外的 EventListener,然后记录将包含当前登录用户的 taskCompleted 事件。 https://www.activiti.org/userguide/#eventDispatcher

希望这对您有所帮助。

这是我为 Java 开发人员准备的内容,基于我认为 post 我看到的博客

编辑:https://community.alfresco.com/thread/224336-result-variable-in-javadelegate


结果变量

选项 (1) – 在 XML

中使用表达式语言 (EL)
<serviceTask id="serviceTask"
    activiti:expression="#{myService.toUpperCase(myVar)}"
    activiti:resultVariable="myVar" />

Java

public class MyService {
    public String toUpperCase(String val) {
        return val.toUpperCase();
    }
}

返回的String赋值给activiti:resultVariable

直接破解数据模型

选项(2) – 使用执行环境

Java

public class MyService implements JavaDelegate {
    public void execute(DelegateExecution execution) throws Exception {
        String myVar = (String) execution.getVariable("myVar");
        execution.setVariable("myVar", myVar.toUpperCase());
    }
}

相比之下,这里我们正在传递一个“执行”,我们正在从中提取值并摆弄它们然后将它们放回去。

这有点类似于 Servlet 获取我们在 HTMLRequest 中传递的值,然后基于它们在响应中做不同的事情。 (更强的类比是 servlet Filter)


因此在您的特定实例中(取决于您调用 shell 脚本的方式)使用表达式语言 (EL) 可能是最简单的。

当然,您要传递的值必须是进程知道的值(否则它如何传递一个没有变量的值?)

希望对您有所帮助。 :D

我使用了来自activiti应用的activiti:taskListener你需要配置以下属性 1. 我更改了任务侦听器中的属性。 2. 我使用 java 脚本变量来保存 task.assignee 值。

代码片段:-