use of org.camunda.bpm.engine.impl.migration.instance.MigratingCompensationEventSubscriptionInstance in project camunda-bpm-platform by camunda.
the class CompensationInstanceHandler method createMigratingEventSubscriptionInstance.
protected MigratingProcessElementInstance createMigratingEventSubscriptionInstance(MigratingInstanceParseContext parseContext, EventSubscriptionEntity element) {
ActivityImpl compensationHandler = parseContext.getSourceProcessDefinition().findActivity(element.getActivityId());
MigrationInstruction migrationInstruction = getMigrationInstruction(parseContext, compensationHandler);
ActivityImpl targetScope = null;
if (migrationInstruction != null) {
ActivityImpl targetEventScope = (ActivityImpl) parseContext.getTargetActivity(migrationInstruction).getEventScope();
targetScope = targetEventScope.findCompensationHandler();
}
MigratingCompensationEventSubscriptionInstance migratingCompensationInstance = parseContext.getMigratingProcessInstance().addCompensationSubscriptionInstance(migrationInstruction, element, compensationHandler, targetScope);
parseContext.consume(element);
return migratingCompensationInstance;
}
use of org.camunda.bpm.engine.impl.migration.instance.MigratingCompensationEventSubscriptionInstance in project camunda-bpm-platform by camunda.
the class NoUnmappedCompensationStartEventValidator method validate.
@Override
public void validate(MigratingEventScopeInstance migratingInstance, MigratingProcessInstance migratingProcessInstance, MigratingActivityInstanceValidationReportImpl ancestorInstanceReport) {
MigratingCompensationEventSubscriptionInstance eventSubscription = migratingInstance.getEventSubscription();
ActivityImpl eventHandlerActivity = (ActivityImpl) eventSubscription.getSourceScope();
// note: compensation event scopes without children are already handled by NoUnmappedLeafInstanceValidator
if (eventHandlerActivity.isTriggeredByEvent() && eventSubscription.getTargetScope() == null && !migratingInstance.getChildren().isEmpty()) {
ancestorInstanceReport.addFailure("Cannot migrate subscription for compensation handler '" + eventSubscription.getSourceScope().getId() + "'. " + "There is no migration instruction for the compensation start event");
}
}
use of org.camunda.bpm.engine.impl.migration.instance.MigratingCompensationEventSubscriptionInstance in project camunda-bpm-platform by camunda.
the class MigrateProcessInstanceCmd method validateInstructions.
protected void validateInstructions(CommandContext commandContext, MigratingProcessInstance migratingProcessInstance, MigratingProcessInstanceValidationReportImpl processInstanceReport) {
List<MigratingActivityInstanceValidator> migratingActivityInstanceValidators = commandContext.getProcessEngineConfiguration().getMigratingActivityInstanceValidators();
List<MigratingTransitionInstanceValidator> migratingTransitionInstanceValidators = commandContext.getProcessEngineConfiguration().getMigratingTransitionInstanceValidators();
List<MigratingCompensationInstanceValidator> migratingCompensationInstanceValidators = commandContext.getProcessEngineConfiguration().getMigratingCompensationInstanceValidators();
Map<MigratingActivityInstance, MigratingActivityInstanceValidationReportImpl> instanceReports = new HashMap<MigratingActivityInstance, MigratingActivityInstanceValidationReportImpl>();
for (MigratingActivityInstance migratingActivityInstance : migratingProcessInstance.getMigratingActivityInstances()) {
MigratingActivityInstanceValidationReportImpl instanceReport = validateActivityInstance(migratingActivityInstance, migratingProcessInstance, migratingActivityInstanceValidators);
instanceReports.put(migratingActivityInstance, instanceReport);
}
for (MigratingEventScopeInstance migratingEventScopeInstance : migratingProcessInstance.getMigratingEventScopeInstances()) {
MigratingActivityInstance ancestorInstance = migratingEventScopeInstance.getClosestAncestorActivityInstance();
validateEventScopeInstance(migratingEventScopeInstance, migratingProcessInstance, migratingCompensationInstanceValidators, instanceReports.get(ancestorInstance));
}
for (MigratingCompensationEventSubscriptionInstance migratingEventSubscriptionInstance : migratingProcessInstance.getMigratingCompensationSubscriptionInstances()) {
MigratingActivityInstance ancestorInstance = migratingEventSubscriptionInstance.getClosestAncestorActivityInstance();
validateCompensateSubscriptionInstance(migratingEventSubscriptionInstance, migratingProcessInstance, migratingCompensationInstanceValidators, instanceReports.get(ancestorInstance));
}
for (MigratingActivityInstanceValidationReportImpl instanceReport : instanceReports.values()) {
if (instanceReport.hasFailures()) {
processInstanceReport.addActivityInstanceReport(instanceReport);
}
}
for (MigratingTransitionInstance migratingTransitionInstance : migratingProcessInstance.getMigratingTransitionInstances()) {
MigratingTransitionInstanceValidationReportImpl instanceReport = validateTransitionInstance(migratingTransitionInstance, migratingProcessInstance, migratingTransitionInstanceValidators);
if (instanceReport.hasFailures()) {
processInstanceReport.addTransitionInstanceReport(instanceReport);
}
}
}
Aggregations