activiti bpmn-如何在已完成任务的变量/表达式中传递用户名?

nxagd54h  于 2021-06-26  发布在  Hive
关注(0)|答案(3)|浏览(446)

我对activiti bpmn很陌生。我正在activiti中创建一个流程图。我正在寻找如何将用户名(已完成任务的用户)传递到shell任务参数中。这样我就可以获取并保存在数据库中完成该任务的用户。
任何帮助都将不胜感激。
提前谢谢。。。

gajydyqb

gajydyqb1#

以下是我根据我看到的一篇博客文章为java开发人员准备的东西
编辑: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();
    }
}

返回的字符串被分配给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过滤器)
因此,在您的特定示例中(详细说明如何调用shell脚本),使用表达式语言(el)可能是最简单和最简单的。
当然,您要传递的值必须是流程知道的值(否则它怎么能传递一个没有变量的值?)
希望有帮助d

8iwquhpp

8iwquhpp2#

我用过activiti:tasklistener from activiti应用程序需要配置以下属性1。我更改了任务侦听器中的属性。2.我使用java脚本变量来保存task.assignee值。
代码snip:-

d4so4syb

d4so4syb3#

通常在bpm引擎中,您有一种方法将侦听器连接到这类事件。在activiti中,如果将其嵌入到服务中,可以添加一个额外的eventlistener,然后记录taskcompleted事件,该事件将包含当前登录的用户。https://www.activiti.org/userguide/#eventdispatcher
希望这有帮助。

相关问题