提问者:小点点

Activiti:添加任务局部变量adhoc


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

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

我在这里有两个选择:

  1. 要么我修改java代码来处理这个问题。

但我不知道哪一种方法更可取?

输入会很有帮助。

编辑:

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

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

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

现在,在新需求中,可以分配多个任务,其中一个用户当前正在处理。所以我使用了2个新的任务变量,如下所示:

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);

        }
    }

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

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


共1个答案

匿名用户

它看起来像你正在尝试修改你现有的自定义代码为一个新的进程定义。如果你的代码如果与你的进程紧密耦合-正如你所描述的关于任务变量。我建议你为你的新进程创建另一个bean。这样你将能够使用你的新进程而不会影响旧进程的逻辑。

相关问题