Rr-запустить процесс с указанного шага - PullRequest
0 голосов
/ 09 января 2019

Я использую activiti 6 для разработки бизнес-процесса для одного из наших проектов. Процесс довольно прост, он состоит из нескольких «пользовательских задач» или «служебных задач» с назначениями на основе ролей. Однако наш Клиент хочет, чтобы пользователь с правами администратора мог в любой момент повторно выполнить любую из предыдущих «Задач пользователя» или «Задачи обслуживания».

Например, мой процесс выглядит следующим образом:

Пуск -> Сервис-задача1 -> Пользователь-задача2 -> Сервис-задача3 -> Пользователь-задача4 -> Сервис-задача5 -> Пользователь-задача6 -> Сервис-задача7 -> Пользователь-задача8 -> Конец

Клиент хочет, чтобы в любой момент времени во время выполнения процесса пользователь-администратор мог иметь возможность изменять выполнение рабочего процесса с: например, состояния «Пользователь-Задача8» на любое из Service-Task1 или User-Task2 или Service-Task3 или User-Task4 или Service-Task5 или User-Task6 или Service-Task7.

В соответствии с темой сообщества Alfresco: откат задачи пользователя

Я создал пользовательскую команду как

   public class RestartInstanceActivitiCommand implements Command<Void> { 
           private final String executionId;
           private final FlowElement flowElement;

           public RestartInstanceActivitiCommand(String executionId, FlowElement flowElement) {
              this.executionId = executionId;
              this.flowElement = flowElement;
           }

           public Void execute(CommandContext commandContext) {
              ExecutionEntity execution = commandContext.getExecutionEntityManager().findById(this.executionId); 
              execution.setCurrentFlowElement(flowElement); 
              return null;
           }
        }

И выполнил это с:

 BpmnModel bpmnModel = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId());
    FlowElement flowElement = bpmnModel.getFlowElement("Service-Task1");
    commandExecutor.execute(new RestartInstanceActivitiCommand(processInstanceId, flowElement));
    runtimeService.trigger(processInstanceId);

При этом текущая задача устанавливается Service-Task1, но она не выполняется автоматически, как обычно делал бы обычный поток. Также я вижу, что User-Task8 также активен и назначен пользователю, которого я не хочу, потому что я хочу отменить текущее задание и повторно запустить его с нужного шага.

Оцените вашу помощь с примером кода.

С уважением, Сандип

...