All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.camunda.bpm.scenario.impl.waitstate.ServiceTaskExecutable Maven / Gradle / Ivy

Go to download

Camunda BPM Assert Scenario allows you to specify the actions needed at process wait states before you start the process instances executing your test scenario. As a consequence, writing such tests is easier and faster than ever before. And refactoring and changing large process models and their test suites can almost be done in the blink of an eye: ;-) Done! Check it out and judge yourself!

There is a newer version: 2.0.0.alpha.2
Show newest version
package org.camunda.bpm.scenario.impl.waitstate;


import org.camunda.bpm.engine.externaltask.ExternalTask;
import org.camunda.bpm.engine.history.HistoricActivityInstance;
import org.camunda.bpm.scenario.ProcessScenario;
import org.camunda.bpm.scenario.act.Action;
import org.camunda.bpm.scenario.impl.ProcessRunnerImpl;
import org.camunda.bpm.scenario.impl.delegate.AbstractExternalTaskDelegate;

import java.util.Map;

/**
 * @author Martin Schimak
 */
public class ServiceTaskExecutable extends AbstractExternalTaskDelegate {

  private static final String WORKER_ID = "workerId";

  public ServiceTaskExecutable(ProcessRunnerImpl runner, HistoricActivityInstance instance) {
    super(runner, instance);
  }

  @Override
  protected ExternalTask getDelegate() {
    return getExternalTaskService().createExternalTaskQuery().executionId(getExecutionId()).singleResult();
  }

  @Override
  protected Action action(ProcessScenario scenario) {
    return scenario.waitsAtServiceTask(getActivityId());
  }

  protected void fetchAndLock() {
    getExternalTaskService().fetchAndLock(Integer.MAX_VALUE, WORKER_ID).topic(getDelegate().getTopicName(), Long.MAX_VALUE).execute();
  }

  @Override
  public void complete() {
    fetchAndLock();
    getExternalTaskService().complete(getDelegate().getId(), WORKER_ID);
  }

  @Override
  public void complete(Map variables) {
    fetchAndLock();
    getExternalTaskService().complete(getDelegate().getId(), WORKER_ID, variables);
  }

  @Override
  public void handleBpmnError(String errorCode) {
    fetchAndLock();
    getExternalTaskService().handleBpmnError(getDelegate().getId(), WORKER_ID, errorCode);
  }

  @Override
  public String getProcessDefinitionVersionTag() {
    return getRepositoryService().getProcessDefinition(getProcessDefinitionId()).getVersionTag();
  }

  @Override
  public String getBusinessKey() {
    return getProcessInstance().getBusinessKey();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy