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 值。
代码片段:-
我是 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 值。
代码片段:-