Activiti:添加任务局部变量即席

时间:2019-05-15 06:14:06

标签: activiti

我必须更改流程定义,因此用户任务现在将具有2个新的局部变量。

但是它干扰了系统中已经存在的那些任务,因此没有这两个新变量。

我在这里有2个选择:

  1. 我要么以某种方式修改Java代码来处理此问题。

OR

  1. 在部署新的流程定义之前,请修改Java代码,以便在用户登录系统时,将这两个变量添加到分配给其任务的任务中(或者也可以通过运行脚本来更新相应的活动来完成表格)。

但是我不确定哪种方法更合适?

输入非常有帮助。

编辑:

例如,用例是查找分配的任务。在当前的实现中,它简单地是:

taskService.createTaskQuery().taskAssignee(userId).singleResult()

之所以有效,是因为一次只能将一个任务分配给用户。

现在,在新要求中,可以分配多个任务,用户当前正在其中一项。因此,我使用了两个像这样的新任务变量:

Task currentTask = taskService.createTaskQuery().taskAssignee(userId)
            .taskVariableValueEquals("current", true).singleResult();
    if(currentTask == null){
        List<Task> unsuspendedTasks = taskService.createTaskQuery().taskAssignee(userId)
                .taskVariableValueEquals("suspended", false).list();

        if(!CollectionUtils.isEmpty(tasksAssignedToUser)) {
            sortTasksBasedOnPriorityAndCreateTime(tasksAssignedToUser);
            currentTask = tasksAssignedToUser.get(tasksAssignedToUser.size() - 1);

        }
    }

因此,我们首先查询将变量“ current”设置为true的任务。如果没有这样的任务,那么我们将查询将变量“ suspended”设置为false的任务,并对这些任务进行排序,然后选择第一个。

但是对于已经存在的任务,“当前”和“已暂停”这两个变量将不可用。

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试为新的流程定义修改现有的自定义代码。如果您的代码与流程紧密结合-如您所描述的有关任务变量的说明。我建议您为新过程创建另一个bean。这样,您就可以使用新流程而不会影响旧流程的逻辑。