【发布时间】:2013-03-08 03:19:36
【问题描述】:
我正在尝试设置多实例子进程,它创建了正确数量的进程,但它没有分配给无。
我使用一个 java 服务任务来获取所有用户
public class ListUsers implements JavaDelegate {
@Override
public void execute(DelegateExecution execution) throws Exception {
String group = (String) execution.getVariable("group");
List<User> lista = execution.getEngineServices().getIdentityService().createUserQuery().memberOfGroup(group).list();
List<String> usuarios = new ArrayList<>();
for (User user : lista) {
usuarios.add(user.getId());
}
execution.setVariable("listaUsuarios", usuarios);
execution.setVariable("listaUsuariosSize", usuarios.size());
}
}
我的多实例定义
<subProcess id="subprocessConfirmacaoPresencaReuniao" name="Confirmação de Presença na Reuniao">
<multiInstanceLoopCharacteristics isSequential="false">
<loopDataInputRef>listaUsuarios</loopDataInputRef>
<inputDataItem name="assignee" />
</multiInstanceLoopCharacteristics>
<startEvent id="starteventConfirmacaoPresencaReuniao" name="Start"></startEvent>
<userTask id="confirmarPresenca" name="Confirmar Presença"></userTask>
</subProcess>
我在组中有 4 个用户,它正确启动了 4 个进程,但它没有分配给用户。
Variables
NAME VALUE
group consuni
listaUsuarios [admin, cleo, fozzie, kermit]
listaUsuariosSize 4
我做错了什么吗?我正在使用 Activiti 5.11。
【问题讨论】:
-
可能是我误解了,但您试图将子进程分配给用户?提供您使用“受让人”变量的代码
-
@ATMTA 好吧我不使用这个变量,不应该是multiInstanceLoop自动赋值吗?我想这是我做错的地方
-
Activiti 并没有那么聪明地自动分配任务,因此您应该使用 userTask 元素的 activiti:assignee="${assignee}" 属性显式设置受让人。顺便说一句,如果您仅将 subprocess 用于多实例活动,最好将
移动到 并删除 subprocess 元素 -
@ATMTA 你是对的!请将其发布为答案,以便我接受。谢谢
标签: activiti