2013-03-07 43 views
0

我試圖設置多實例子進程,它創建了正確的進程數量,但它不分配給任何人。Activiti多實例不分配用戶

我用一個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。

+0

可能是我誤會了,但你想分配子到用戶?在你使用「受託人」變量的地方提供代碼 – ATMTA 2013-03-07 06:44:08

+0

@ATMTA嗯,我不使用這個變量,它不應該由multiInstanceLoop自動分配嗎?我想這是我做錯的地方然後 – dextervip 2013-03-07 15:38:33

+0

Activiti不是那麼聰明的自動分配任務,所以你應該明確地設置受讓人使用activiti:assignee =「$ {assignee}」 userTask元素的屬性。順便說一下,如果您僅將子進程用於多實例活動,則最好將移動到並刪除子進程元素 – ATMTA 2013-03-07 19:03:55

回答

1

           你應該使用userTask元素的activiti:assignee="${assignee}"屬性明確設置受讓人。順便說一句,如果你只使用多實例活動子倒不如移動<multiInstanceLoopCharacteristics><userTask>和刪除子元素
          Activiti user guide: Multi-instance

+0

您能否解釋爲什麼將移入會更好? – 2013-07-26 00:37:44

+0

只有在當前特定情況下才會更好 - 使用dextervip 子流程創建多實例用戶任務 – ATMTA 2013-07-27 09:21:26