检索进程活动中每个任务的变量

时间:2014-02-17 14:53:01

标签: activiti

我是Activiti的新手,经验不多,我的问题是: 如何检索进程中每个任务的变量?

3 个答案:

答案 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()

希望这有帮助。