protected internal virtual MigratingProcessElementInstance createMigratingEventScopeInstance(MigratingInstanceParseContext parseContext, EventSubscriptionEntity element) { ActivityImpl compensatingActivity = parseContext.SourceProcessDefinition.findActivity(element.ActivityId); MigrationInstruction migrationInstruction = getMigrationInstruction(parseContext, compensatingActivity); ActivityImpl eventSubscriptionTargetScope = null; if (migrationInstruction != null) { if (compensatingActivity.CompensationHandler) { ActivityImpl targetEventScope = (ActivityImpl)parseContext.getTargetActivity(migrationInstruction).EventScope; eventSubscriptionTargetScope = targetEventScope.findCompensationHandler(); } else { eventSubscriptionTargetScope = parseContext.getTargetActivity(migrationInstruction); } } ExecutionEntity eventScopeExecution = CompensationUtil.getCompensatingExecution(element); MigrationInstruction eventScopeInstruction = parseContext.findSingleMigrationInstruction(eventScopeExecution.ActivityId); ActivityImpl targetScope = parseContext.getTargetActivity(eventScopeInstruction); MigratingEventScopeInstance migratingCompensationInstance = parseContext.MigratingProcessInstance.addEventScopeInstance(eventScopeInstruction, eventScopeExecution, eventScopeExecution.getActivity(), targetScope, migrationInstruction, element, compensatingActivity, eventSubscriptionTargetScope); parseContext.consume(element); parseContext.submit(migratingCompensationInstance); parseDependentEntities(parseContext, migratingCompensationInstance); return(migratingCompensationInstance); }
protected internal override ICollection <EventSubscriptionEntity> nextElements() { EventSubscriptionEntity eventSubscriptionEntity = CurrentElement; ExecutionEntity compensatingExecution = CompensationUtil.getCompensatingExecution(eventSubscriptionEntity); if (compensatingExecution != null) { return(compensatingExecution.CompensateEventSubscriptions); } else { return(Collections.emptyList()); } }