我是Activiti的新手,经验不多,我的问题是: 如何检索进程中每个任务的变量?
答案 0 :(得分:2)
对于id =“task1”的userTask,您可以使用taskService How to get task variables
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
TaskService taskService = processEngine.getTaskService();
List<Task> tasks = taskService.createTaskQuery().taskDefinitionKey("task1").includeProcessVariables().orderByTaskCreateTime().desc().list();
for (Task task : tasks) {
Map<String, Object> variables = task.getProcessVariables();
}
答案 1 :(得分:1)
对于具有id =“ taskTest”的userTask,您可以使用以下代码:
> db.Client.find({_id:"5b76f488fb83e109b3a399d9"})
> db.Client.find().pretty()
{
"_id" : ObjectId("5b76f488fb83e109b3a399d9"),
"emailHost" : "Gmail",
"name" : "ABC DEF",
"updatedAt" : ISODate("2018-08-17T16:15:04.907Z"),
"createdAt" : ISODate("2018-08-17T16:15:04.907Z"),
"__v" : 0
}
{
"_id" : ObjectId("5b76f48efb83e109b3a399db"),
"emailHost" : "Gmail",
"name" : "ABC DEF",
"updatedAt" : ISODate("2018-08-17T16:15:10.635Z"),
"createdAt" : ISODate("2018-08-17T16:15:10.635Z"),
"__v" : 0
}
您也可以使用:Variables
答案 2 :(得分:0)
如果需要将任务局部变量读入流程实例,则需要针对“complete”事件添加taskListener。如果我们讨论简单的变量映射,您可以使用scriptListener,否则使用Java类。
在侦听器中,您可以访问“execution”(脚本侦听器)或TaskDelegate,您可以在其中设置/获取流程实例变量(getVariables()和setVariable())或局部变量getVariableLocal()和setVariableLocal()
希望这有帮助。